diff --git a/composer.json b/composer.json
index acb9c1615..22a6f9249 100644
--- a/composer.json
+++ b/composer.json
@@ -16,7 +16,6 @@
"laravel/socialite": "^3.1",
"laravel/tinker": "^1.0",
"laravelcollective/html": "^5.8.0",
- "pragmarx/tracker": "^3.5",
"predis/predis": "^1.1",
"twbs/bootstrap": "^4.1"
},
diff --git a/composer.lock b/composer.lock
index 2aae0bdbf..f87ae5414 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "content-hash": "e14ea82c8e2c2758f97c1cdddda638ab",
+ "content-hash": "80e7526fced64d02bc8bc746b8939ea8",
"packages": [
{
"name": "balping/json-raw-encoder",
@@ -105,62 +105,6 @@
],
"time": "2019-11-30T02:33:19+00:00"
},
- {
- "name": "composer/ca-bundle",
- "version": "1.2.5",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/ca-bundle.git",
- "reference": "62e8fc2dc550e5d6d8c9360c7721662670f58149"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/ca-bundle/zipball/62e8fc2dc550e5d6d8c9360c7721662670f58149",
- "reference": "62e8fc2dc550e5d6d8c9360c7721662670f58149",
- "shasum": ""
- },
- "require": {
- "ext-openssl": "*",
- "ext-pcre": "*",
- "php": "^5.3.2 || ^7.0 || ^8.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8",
- "psr/log": "^1.0",
- "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Composer\\CaBundle\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
- }
- ],
- "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
- "keywords": [
- "cabundle",
- "cacert",
- "certificate",
- "ssl",
- "tls"
- ],
- "time": "2019-12-11T14:44:42+00:00"
- },
{
"name": "consoletvs/charts",
"version": "6.5.3",
@@ -240,256 +184,6 @@
"description": "implementation of xdg base directory specification for php",
"time": "2019-12-04T15:06:13+00:00"
},
- {
- "name": "doctrine/cache",
- "version": "1.10.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/cache.git",
- "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/cache/zipball/382e7f4db9a12dc6c19431743a2b096041bcdd62",
- "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62",
- "shasum": ""
- },
- "require": {
- "php": "~7.1"
- },
- "conflict": {
- "doctrine/common": ">2.2,<2.4"
- },
- "require-dev": {
- "alcaeus/mongo-php-adapter": "^1.1",
- "doctrine/coding-standard": "^6.0",
- "mongodb/mongodb": "^1.1",
- "phpunit/phpunit": "^7.0",
- "predis/predis": "~1.0"
- },
- "suggest": {
- "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.9.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
- "homepage": "https://www.doctrine-project.org/projects/cache.html",
- "keywords": [
- "abstraction",
- "apcu",
- "cache",
- "caching",
- "couchdb",
- "memcached",
- "php",
- "redis",
- "xcache"
- ],
- "time": "2019-11-29T15:36:20+00:00"
- },
- {
- "name": "doctrine/dbal",
- "version": "v2.10.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/dbal.git",
- "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/0c9a646775ef549eb0a213a4f9bd4381d9b4d934",
- "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934",
- "shasum": ""
- },
- "require": {
- "doctrine/cache": "^1.0",
- "doctrine/event-manager": "^1.0",
- "ext-pdo": "*",
- "php": "^7.2"
- },
- "require-dev": {
- "doctrine/coding-standard": "^6.0",
- "jetbrains/phpstorm-stubs": "^2019.1",
- "phpstan/phpstan": "^0.11.3",
- "phpunit/phpunit": "^8.4.1",
- "symfony/console": "^2.0.5|^3.0|^4.0|^5.0"
- },
- "suggest": {
- "symfony/console": "For helpful console commands such as SQL execution and import of files."
- },
- "bin": [
- "bin/doctrine-dbal"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.10.x-dev",
- "dev-develop": "3.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\DBAL\\": "lib/Doctrine/DBAL"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- }
- ],
- "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.",
- "homepage": "https://www.doctrine-project.org/projects/dbal.html",
- "keywords": [
- "abstraction",
- "database",
- "db2",
- "dbal",
- "mariadb",
- "mssql",
- "mysql",
- "oci8",
- "oracle",
- "pdo",
- "pgsql",
- "postgresql",
- "queryobject",
- "sasql",
- "sql",
- "sqlanywhere",
- "sqlite",
- "sqlserver",
- "sqlsrv"
- ],
- "time": "2019-11-03T16:50:43+00:00"
- },
- {
- "name": "doctrine/event-manager",
- "version": "1.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/event-manager.git",
- "reference": "629572819973f13486371cb611386eb17851e85c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c",
- "reference": "629572819973f13486371cb611386eb17851e85c",
- "shasum": ""
- },
- "require": {
- "php": "^7.1"
- },
- "conflict": {
- "doctrine/common": "<2.9@dev"
- },
- "require-dev": {
- "doctrine/coding-standard": "^6.0",
- "phpunit/phpunit": "^7.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\": "lib/Doctrine/Common"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- },
- {
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com"
- }
- ],
- "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.",
- "homepage": "https://www.doctrine-project.org/projects/event-manager.html",
- "keywords": [
- "event",
- "event dispatcher",
- "event manager",
- "event system",
- "events"
- ],
- "time": "2019-11-10T09:48:07+00:00"
- },
{
"name": "doctrine/inflector",
"version": "1.3.1",
@@ -1159,124 +853,6 @@
"description": "Highlight PHP code in terminal",
"time": "2018-09-29T18:48:56+00:00"
},
- {
- "name": "jaybizzle/crawler-detect",
- "version": "v1.2.90",
- "source": {
- "type": "git",
- "url": "https://github.com/JayBizzle/Crawler-Detect.git",
- "reference": "35f963386e6a189697fe4b14dc91fb42b17fda4b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/JayBizzle/Crawler-Detect/zipball/35f963386e6a189697fe4b14dc91fb42b17fda4b",
- "reference": "35f963386e6a189697fe4b14dc91fb42b17fda4b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8|^5.5|^6.5",
- "satooshi/php-coveralls": "1.*"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Jaybizzle\\CrawlerDetect\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mark Beech",
- "email": "m@rkbee.ch",
- "role": "Developer"
- }
- ],
- "description": "CrawlerDetect is a PHP class for detecting bots/crawlers/spiders via the user agent",
- "homepage": "https://github.com/JayBizzle/Crawler-Detect/",
- "keywords": [
- "crawler",
- "crawler detect",
- "crawler detector",
- "crawlerdetect",
- "php crawler detect"
- ],
- "time": "2019-12-08T20:03:27+00:00"
- },
- {
- "name": "jenssegers/agent",
- "version": "v2.6.3",
- "source": {
- "type": "git",
- "url": "https://github.com/jenssegers/agent.git",
- "reference": "bcb895395e460478e101f41cdab139c48dc721ce"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/jenssegers/agent/zipball/bcb895395e460478e101f41cdab139c48dc721ce",
- "reference": "bcb895395e460478e101f41cdab139c48dc721ce",
- "shasum": ""
- },
- "require": {
- "jaybizzle/crawler-detect": "^1.2",
- "mobiledetect/mobiledetectlib": "^2.7.6",
- "php": ">=5.6"
- },
- "require-dev": {
- "php-coveralls/php-coveralls": "^2.1",
- "phpunit/phpunit": "^5.0|^6.0|^7.0"
- },
- "suggest": {
- "illuminate/support": "^4.0|^5.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- },
- "laravel": {
- "providers": [
- "Jenssegers\\Agent\\AgentServiceProvider"
- ],
- "aliases": {
- "Agent": "Jenssegers\\Agent\\Facades\\Agent"
- }
- }
- },
- "autoload": {
- "psr-4": {
- "Jenssegers\\Agent\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jens Segers",
- "homepage": "https://jenssegers.com"
- }
- ],
- "description": "Desktop/mobile user agent parser with support for Laravel, based on Mobiledetect",
- "homepage": "https://github.com/jenssegers/agent",
- "keywords": [
- "Agent",
- "browser",
- "desktop",
- "laravel",
- "mobile",
- "platform",
- "user agent",
- "useragent"
- ],
- "time": "2019-01-19T21:32:55+00:00"
- },
{
"name": "khill/lavacharts",
"version": "3.1.12",
@@ -1901,58 +1477,6 @@
],
"time": "2016-08-17T00:36:58+00:00"
},
- {
- "name": "mobiledetect/mobiledetectlib",
- "version": "2.8.34",
- "source": {
- "type": "git",
- "url": "https://github.com/serbanghita/Mobile-Detect.git",
- "reference": "6f8113f57a508494ca36acbcfa2dc2d923c7ed5b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/6f8113f57a508494ca36acbcfa2dc2d923c7ed5b",
- "reference": "6f8113f57a508494ca36acbcfa2dc2d923c7ed5b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.0.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.8.35||~5.7"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "Mobile_Detect.php"
- ],
- "psr-0": {
- "Detection": "namespaced/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Serban Ghita",
- "email": "serbanghita@gmail.com",
- "homepage": "http://mobiledetect.net",
- "role": "Developer"
- }
- ],
- "description": "Mobile_Detect is a lightweight PHP class for detecting mobile devices. It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.",
- "homepage": "https://github.com/serbanghita/Mobile-Detect",
- "keywords": [
- "detect mobile devices",
- "mobile",
- "mobile detect",
- "mobile detector",
- "php mobile detect"
- ],
- "time": "2019-09-18T18:44:20+00:00"
- },
{
"name": "monolog/monolog",
"version": "1.25.2",
@@ -2314,190 +1838,6 @@
],
"time": "2019-12-14T13:46:39+00:00"
},
- {
- "name": "pragmarx/datatables",
- "version": "v1.4.12",
- "source": {
- "type": "git",
- "url": "https://github.com/antonioribeiro/laravel4-datatables-package.git",
- "reference": "142631346d01c074248b80c8bc55fdfea255e23e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/antonioribeiro/laravel4-datatables-package/zipball/142631346d01c074248b80c8bc55fdfea255e23e",
- "reference": "142631346d01c074248b80c8bc55fdfea255e23e",
- "shasum": ""
- },
- "require": {
- "illuminate/database": ">=4.0.0",
- "illuminate/filesystem": ">=4.0.0",
- "illuminate/support": ">=4.0.0",
- "illuminate/view": ">=4.0.0",
- "php": ">=5.3.0"
- },
- "require-dev": {
- "laravel/laravel": ">=4.0.0",
- "mockery/mockery": "0.7.2",
- "phpunit/phpunit": "3.7.*"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/migrations"
- ],
- "psr-0": {
- "Bllim\\Datatables": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Bilal Gultekin",
- "email": "bilal@bilal.im"
- }
- ],
- "description": "Server-side handler of DataTables Jquery Plugin for Laravel 4",
- "keywords": [
- "datatable",
- "datatables",
- "datatables jquery plugin",
- "laravel",
- "laravel4"
- ],
- "time": "2019-09-13T13:59:39+00:00"
- },
- {
- "name": "pragmarx/support",
- "version": "v0.9.0",
- "source": {
- "type": "git",
- "url": "https://github.com/antonioribeiro/support.git",
- "reference": "97d12bc8d29c35a509973f8f898f3d4d1eaf3777"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/antonioribeiro/support/zipball/97d12bc8d29c35a509973f8f898f3d4d1eaf3777",
- "reference": "97d12bc8d29c35a509973f8f898f3d4d1eaf3777",
- "shasum": ""
- },
- "require": {
- "illuminate/filesystem": "~4.0|~5.0|~6.0",
- "php": ">=5.4.0",
- "symfony/var-dumper": "~2.6|~3.0|~4.0"
- },
- "suggest": {
- "laravel/framework": "Laravel framework.",
- "symfony/yaml": "The Yaml class needs it"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "0.7.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "PragmaRX\\Support\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Antonio Carlos Ribeiro",
- "email": "acr@antoniocarlosribeiro.com",
- "role": "Creator"
- }
- ],
- "description": "PragmaRX components support package",
- "keywords": [
- "laravel",
- "pragmarx"
- ],
- "time": "2019-09-10T21:17:26+00:00"
- },
- {
- "name": "pragmarx/tracker",
- "version": "v3.5.0",
- "source": {
- "type": "git",
- "url": "https://github.com/antonioribeiro/tracker.git",
- "reference": "76e8e7fa058c6b1c15fea4b2ffa5169ae087d6f7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/antonioribeiro/tracker/zipball/76e8e7fa058c6b1c15fea4b2ffa5169ae087d6f7",
- "reference": "76e8e7fa058c6b1c15fea4b2ffa5169ae087d6f7",
- "shasum": ""
- },
- "require": {
- "doctrine/dbal": "^2.6",
- "jaybizzle/crawler-detect": "~1.0",
- "jenssegers/agent": "~2.1",
- "laravel/framework": "~4|~5|~6",
- "php": ">=5.3.7",
- "pragmarx/datatables": "^1.4.12",
- "pragmarx/support": "~0.6|~0.7|~0.8|~0.9",
- "psr/log": "~1.0",
- "ramsey/uuid": "~3",
- "snowplow/referer-parser": "~0.1",
- "ua-parser/uap-php": "~3.4"
- },
- "require-dev": {
- "mockery/mockery": "~0.8"
- },
- "suggest": {
- "geoip/geoip": "~1.14",
- "geoip2/geoip2": "~2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.1.x-dev"
- },
- "laravel": {
- "providers": [
- "PragmaRX\\Tracker\\Vendor\\Laravel\\ServiceProvider"
- ],
- "aliases": {
- "Tracker": "PragmaRX\\Tracker\\Vendor\\Laravel\\Facade"
- }
- }
- },
- "autoload": {
- "psr-4": {
- "PragmaRX\\Tracker\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Antonio Carlos Ribeiro",
- "email": "acr@antoniocarlosribeiro.com",
- "role": "Creator & Designer"
- }
- ],
- "description": "A Laravel Visitor Tracker",
- "keywords": [
- "laravel",
- "logging",
- "mobile detection",
- "pragmarx",
- "tracker",
- "tracking",
- "user agent",
- "visitor"
- ],
- "time": "2019-10-01T17:58:07+00:00"
- },
{
"name": "predis/predis",
"version": "v1.1.1",
@@ -2858,22 +2198,22 @@
},
{
"name": "ramsey/uuid",
- "version": "3.9.1",
+ "version": "3.9.2",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
- "reference": "5ac2740e0c8c599d2bbe7f113a939f2b5b216c67"
+ "reference": "7779489a47d443f845271badbdcedfe4df8e06fb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/uuid/zipball/5ac2740e0c8c599d2bbe7f113a939f2b5b216c67",
- "reference": "5ac2740e0c8c599d2bbe7f113a939f2b5b216c67",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/7779489a47d443f845271badbdcedfe4df8e06fb",
+ "reference": "7779489a47d443f845271badbdcedfe4df8e06fb",
"shasum": ""
},
"require": {
"ext-json": "*",
"paragonie/random_compat": "^1 | ^2 | 9.99.99",
- "php": "^5.4 | ^7",
+ "php": "^5.4 | ^7 | ^8",
"symfony/polyfill-ctype": "^1.8"
},
"replace": {
@@ -2883,13 +2223,13 @@
"codeception/aspect-mock": "^1 | ^2",
"doctrine/annotations": "^1.2",
"goaop/framework": "1.0.0-alpha.2 | ^1 | ^2.1",
- "jakub-onderka/php-parallel-lint": "^0.9.0",
- "mockery/mockery": "^0.9.9",
+ "jakub-onderka/php-parallel-lint": "^1",
+ "mockery/mockery": "^0.9.11 | ^1",
"moontoast/math": "^1.1",
"paragonie/random-lib": "^2",
"php-mock/php-mock-phpunit": "^0.3 | ^1.1",
"phpunit/phpunit": "^4.8 | ^5.4 | ^6.5",
- "squizlabs/php_codesniffer": "^2.3"
+ "squizlabs/php_codesniffer": "^3.5"
},
"suggest": {
"ext-ctype": "Provides support for PHP Ctype functions",
@@ -2941,47 +2281,7 @@
"identifier",
"uuid"
],
- "time": "2019-12-01T04:55:27+00:00"
- },
- {
- "name": "snowplow/referer-parser",
- "version": "0.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/snowplow/referer-parser.git",
- "reference": "5ce872b60999c63039723959a45928ef1196f03d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/snowplow/referer-parser/zipball/5ce872b60999c63039723959a45928ef1196f03d",
- "reference": "5ce872b60999c63039723959a45928ef1196f03d",
- "shasum": ""
- },
- "require-dev": {
- "phpunit/phpunit": "3.*",
- "symfony/yaml": "*"
- },
- "suggest": {
- "symfony/yaml": "Support for YAML configuration file"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "Snowplow\\RefererParser": "php/src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Lars Strojny",
- "email": "lars@strojny.net"
- }
- ],
- "description": "Snowplow Refer(r)er parser for PHP",
- "time": "2016-01-29T16:43:00+00:00"
+ "time": "2019-12-17T08:18:51+00:00"
},
{
"name": "swiftmailer/swiftmailer",
@@ -4339,16 +3639,16 @@
},
{
"name": "symfony/var-dumper",
- "version": "v4.4.1",
+ "version": "v4.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "0a89a1dbbedd9fb2cfb2336556dec8305273c19a"
+ "reference": "be330f919bdb395d1e0c3f2bfb8948512d6bdd99"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0a89a1dbbedd9fb2cfb2336556dec8305273c19a",
- "reference": "0a89a1dbbedd9fb2cfb2336556dec8305273c19a",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/be330f919bdb395d1e0c3f2bfb8948512d6bdd99",
+ "reference": "be330f919bdb395d1e0c3f2bfb8948512d6bdd99",
"shasum": ""
},
"require": {
@@ -4411,7 +3711,7 @@
"debug",
"dump"
],
- "time": "2019-11-28T13:33:56+00:00"
+ "time": "2019-12-18T13:41:29+00:00"
},
{
"name": "tijsverkoyen/css-to-inline-styles",
@@ -4513,63 +3813,6 @@
],
"time": "2019-11-28T12:59:49+00:00"
},
- {
- "name": "ua-parser/uap-php",
- "version": "v3.9.2",
- "source": {
- "type": "git",
- "url": "https://github.com/ua-parser/uap-php.git",
- "reference": "eb9c78aeb3984e5834c4f3845e7263dbe4277935"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ua-parser/uap-php/zipball/eb9c78aeb3984e5834c4f3845e7263dbe4277935",
- "reference": "eb9c78aeb3984e5834c4f3845e7263dbe4277935",
- "shasum": ""
- },
- "require": {
- "composer/ca-bundle": "^1.1",
- "php": ">=5.3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "<8",
- "symfony/console": "^2.0 || ^3.0 || ^4.0",
- "symfony/filesystem": "^2.0 || ^3.0 || ^4.0",
- "symfony/finder": "^2.0 || ^3.0 || ^4.0",
- "symfony/yaml": "^2.0 || ^3.0 || ^4.0"
- },
- "suggest": {
- "symfony/console": "Required for CLI usage - ^2.0 || ^3.0 || ^4.0",
- "symfony/filesystem": "Required for CLI usage - 2.0 || ^3.0 || ^4.0",
- "symfony/finder": "Required for CLI usage - ^2.0 || ^3.0 || ^4.0",
- "symfony/yaml": "Required for CLI usage - ^4.0 || ^5.0"
- },
- "bin": [
- "bin/uaparser"
- ],
- "type": "library",
- "autoload": {
- "psr-4": {
- "UAParser\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Dave Olsen",
- "email": "dmolsen@gmail.com"
- },
- {
- "name": "Lars Strojny",
- "email": "lars@strojny.net"
- }
- ],
- "description": "A multi-language port of Browserscope's user agent parser.",
- "time": "2019-11-06T11:37:45+00:00"
- },
{
"name": "vlucas/phpdotenv",
"version": "v3.6.0",
diff --git a/vendor/bin/doctrine-dbal b/vendor/bin/doctrine-dbal
deleted file mode 120000
index 58a8a89c2..000000000
--- a/vendor/bin/doctrine-dbal
+++ /dev/null
@@ -1 +0,0 @@
-../doctrine/dbal/bin/doctrine-dbal
\ No newline at end of file
diff --git a/vendor/bin/uaparser b/vendor/bin/uaparser
deleted file mode 120000
index 03a247bd0..000000000
--- a/vendor/bin/uaparser
+++ /dev/null
@@ -1 +0,0 @@
-../ua-parser/uap-php/bin/uaparser
\ No newline at end of file
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index 8f7a1da53..3cf4a889c 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -6,7 +6,6 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
- 'App\\Charts\\StructureFuelGauge' => $baseDir . '/app/Charts/StructureFuelGauge.php',
'App\\Console\\Commands\\CleanStaleDataCommand' => $baseDir . '/app/Console/Commands/Data/CleanStaleDataCommand.php',
'App\\Console\\Commands\\EmptyJumpBridges' => $baseDir . '/app/Console/Commands/Data/EmptyJumpBridges.php',
'App\\Console\\Commands\\FlexStructureCommand' => $baseDir . '/app/Console/Commands/Flex/FlexStructureCommand.php',
@@ -146,9 +145,6 @@ return array(
'BeyondCode\\DumpServer\\DumpServerServiceProvider' => $vendorDir . '/beyondcode/laravel-dump-server/src/DumpServerServiceProvider.php',
'BeyondCode\\DumpServer\\Dumper' => $vendorDir . '/beyondcode/laravel-dump-server/src/Dumper.php',
'BeyondCode\\DumpServer\\RequestContextProvider' => $vendorDir . '/beyondcode/laravel-dump-server/src/RequestContextProvider.php',
- 'Bllim\\Datatables\\Datatables' => $vendorDir . '/pragmarx/datatables/src/Bllim/Datatables/Datatables.php',
- 'Bllim\\Datatables\\DatatablesServiceProvider' => $vendorDir . '/pragmarx/datatables/src/Bllim/Datatables/DatatablesServiceProvider.php',
- 'Bllim\\Datatables\\Facade\\Datatables' => $vendorDir . '/pragmarx/datatables/src/Bllim/Datatables/Facade/Datatables.php',
'Cake\\Chronos\\Chronos' => $vendorDir . '/cakephp/chronos/src/Chronos.php',
'Cake\\Chronos\\ChronosInterface' => $vendorDir . '/cakephp/chronos/src/ChronosInterface.php',
'Cake\\Chronos\\ChronosInterval' => $vendorDir . '/cakephp/chronos/src/ChronosInterval.php',
@@ -210,7 +206,6 @@ return array(
'Collective\\Html\\HtmlBuilder' => $vendorDir . '/laravelcollective/html/src/HtmlBuilder.php',
'Collective\\Html\\HtmlFacade' => $vendorDir . '/laravelcollective/html/src/HtmlFacade.php',
'Collective\\Html\\HtmlServiceProvider' => $vendorDir . '/laravelcollective/html/src/HtmlServiceProvider.php',
- 'Composer\\CaBundle\\CaBundle' => $vendorDir . '/composer/ca-bundle/src/CaBundle.php',
'ConfigTableSeeder' => $baseDir . '/database/seeds/ConfigTableSeeder.php',
'ConsoleTVs\\Charts\\ChartsServiceProvider' => $vendorDir . '/consoletvs/charts/src/ChartsServiceProvider.php',
'ConsoleTVs\\Charts\\Classes\\BaseChart' => $vendorDir . '/consoletvs/charts/src/Classes/BaseChart.php',
@@ -273,295 +268,8 @@ return array(
'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedListFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php',
'DeepCopy\\TypeFilter\\TypeFilter' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php',
'DeepCopy\\TypeMatcher\\TypeMatcher' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/TypeMatcher/TypeMatcher.php',
- 'Detection\\MobileDetect' => $vendorDir . '/mobiledetect/mobiledetectlib/namespaced/Detection/MobileDetect.php',
- 'Doctrine\\Common\\Cache\\ApcCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/ApcCache.php',
- 'Doctrine\\Common\\Cache\\ApcuCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/ApcuCache.php',
- 'Doctrine\\Common\\Cache\\ArrayCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/ArrayCache.php',
- 'Doctrine\\Common\\Cache\\Cache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php',
- 'Doctrine\\Common\\Cache\\CacheProvider' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php',
- 'Doctrine\\Common\\Cache\\ChainCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/ChainCache.php',
- 'Doctrine\\Common\\Cache\\ClearableCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php',
- 'Doctrine\\Common\\Cache\\CouchbaseBucketCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/CouchbaseBucketCache.php',
- 'Doctrine\\Common\\Cache\\CouchbaseCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/CouchbaseCache.php',
- 'Doctrine\\Common\\Cache\\ExtMongoDBCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/ExtMongoDBCache.php',
- 'Doctrine\\Common\\Cache\\FileCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/FileCache.php',
- 'Doctrine\\Common\\Cache\\FilesystemCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/FilesystemCache.php',
- 'Doctrine\\Common\\Cache\\FlushableCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/FlushableCache.php',
- 'Doctrine\\Common\\Cache\\InvalidCacheId' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/InvalidCacheId.php',
- 'Doctrine\\Common\\Cache\\LegacyMongoDBCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/LegacyMongoDBCache.php',
- 'Doctrine\\Common\\Cache\\MemcacheCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/MemcacheCache.php',
- 'Doctrine\\Common\\Cache\\MemcachedCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/MemcachedCache.php',
- 'Doctrine\\Common\\Cache\\MongoDBCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/MongoDBCache.php',
- 'Doctrine\\Common\\Cache\\MultiDeleteCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/MultiDeleteCache.php',
- 'Doctrine\\Common\\Cache\\MultiGetCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/MultiGetCache.php',
- 'Doctrine\\Common\\Cache\\MultiOperationCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/MultiOperationCache.php',
- 'Doctrine\\Common\\Cache\\MultiPutCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/MultiPutCache.php',
- 'Doctrine\\Common\\Cache\\PhpFileCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/PhpFileCache.php',
- 'Doctrine\\Common\\Cache\\PredisCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/PredisCache.php',
- 'Doctrine\\Common\\Cache\\RedisCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/RedisCache.php',
- 'Doctrine\\Common\\Cache\\SQLite3Cache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/SQLite3Cache.php',
- 'Doctrine\\Common\\Cache\\Version' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/Version.php',
- 'Doctrine\\Common\\Cache\\VoidCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/VoidCache.php',
- 'Doctrine\\Common\\Cache\\WinCacheCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/WinCacheCache.php',
- 'Doctrine\\Common\\Cache\\XcacheCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/XcacheCache.php',
- 'Doctrine\\Common\\Cache\\ZendDataCache' => $vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache/ZendDataCache.php',
- 'Doctrine\\Common\\EventArgs' => $vendorDir . '/doctrine/event-manager/lib/Doctrine/Common/EventArgs.php',
- 'Doctrine\\Common\\EventManager' => $vendorDir . '/doctrine/event-manager/lib/Doctrine/Common/EventManager.php',
- 'Doctrine\\Common\\EventSubscriber' => $vendorDir . '/doctrine/event-manager/lib/Doctrine/Common/EventSubscriber.php',
'Doctrine\\Common\\Inflector\\Inflector' => $vendorDir . '/doctrine/inflector/lib/Doctrine/Common/Inflector/Inflector.php',
'Doctrine\\Common\\Lexer\\AbstractLexer' => $vendorDir . '/doctrine/lexer/lib/Doctrine/Common/Lexer/AbstractLexer.php',
- 'Doctrine\\DBAL\\Cache\\ArrayStatement' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Cache/ArrayStatement.php',
- 'Doctrine\\DBAL\\Cache\\CacheException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Cache/CacheException.php',
- 'Doctrine\\DBAL\\Cache\\QueryCacheProfile' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Cache/QueryCacheProfile.php',
- 'Doctrine\\DBAL\\Cache\\ResultCacheStatement' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Cache/ResultCacheStatement.php',
- 'Doctrine\\DBAL\\ColumnCase' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/ColumnCase.php',
- 'Doctrine\\DBAL\\Configuration' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Configuration.php',
- 'Doctrine\\DBAL\\Connection' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Connection.php',
- 'Doctrine\\DBAL\\ConnectionException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/ConnectionException.php',
- 'Doctrine\\DBAL\\Connections\\MasterSlaveConnection' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Connections/MasterSlaveConnection.php',
- 'Doctrine\\DBAL\\DBALException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php',
- 'Doctrine\\DBAL\\Driver' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver.php',
- 'Doctrine\\DBAL\\DriverManager' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/DriverManager.php',
- 'Doctrine\\DBAL\\Driver\\AbstractDB2Driver' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractDB2Driver.php',
- 'Doctrine\\DBAL\\Driver\\AbstractDriverException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractDriverException.php',
- 'Doctrine\\DBAL\\Driver\\AbstractMySQLDriver' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php',
- 'Doctrine\\DBAL\\Driver\\AbstractOracleDriver' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractOracleDriver.php',
- 'Doctrine\\DBAL\\Driver\\AbstractOracleDriver\\EasyConnectString' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractOracleDriver/EasyConnectString.php',
- 'Doctrine\\DBAL\\Driver\\AbstractPostgreSQLDriver' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractPostgreSQLDriver.php',
- 'Doctrine\\DBAL\\Driver\\AbstractSQLAnywhereDriver' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractSQLAnywhereDriver.php',
- 'Doctrine\\DBAL\\Driver\\AbstractSQLServerDriver' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractSQLServerDriver.php',
- 'Doctrine\\DBAL\\Driver\\AbstractSQLiteDriver' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractSQLiteDriver.php',
- 'Doctrine\\DBAL\\Driver\\Connection' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/Connection.php',
- 'Doctrine\\DBAL\\Driver\\DriverException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/DriverException.php',
- 'Doctrine\\DBAL\\Driver\\DrizzlePDOMySql\\Connection' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/DrizzlePDOMySql/Connection.php',
- 'Doctrine\\DBAL\\Driver\\DrizzlePDOMySql\\Driver' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/DrizzlePDOMySql/Driver.php',
- 'Doctrine\\DBAL\\Driver\\ExceptionConverterDriver' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/ExceptionConverterDriver.php',
- 'Doctrine\\DBAL\\Driver\\IBMDB2\\DB2Connection' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/IBMDB2/DB2Connection.php',
- 'Doctrine\\DBAL\\Driver\\IBMDB2\\DB2Driver' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/IBMDB2/DB2Driver.php',
- 'Doctrine\\DBAL\\Driver\\IBMDB2\\DB2Exception' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/IBMDB2/DB2Exception.php',
- 'Doctrine\\DBAL\\Driver\\IBMDB2\\DB2Statement' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/IBMDB2/DB2Statement.php',
- 'Doctrine\\DBAL\\Driver\\Mysqli\\Driver' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/Mysqli/Driver.php',
- 'Doctrine\\DBAL\\Driver\\Mysqli\\MysqliConnection' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/Mysqli/MysqliConnection.php',
- 'Doctrine\\DBAL\\Driver\\Mysqli\\MysqliException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/Mysqli/MysqliException.php',
- 'Doctrine\\DBAL\\Driver\\Mysqli\\MysqliStatement' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/Mysqli/MysqliStatement.php',
- 'Doctrine\\DBAL\\Driver\\OCI8\\Driver' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/OCI8/Driver.php',
- 'Doctrine\\DBAL\\Driver\\OCI8\\OCI8Connection' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/OCI8/OCI8Connection.php',
- 'Doctrine\\DBAL\\Driver\\OCI8\\OCI8Exception' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/OCI8/OCI8Exception.php',
- 'Doctrine\\DBAL\\Driver\\OCI8\\OCI8Statement' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/OCI8/OCI8Statement.php',
- 'Doctrine\\DBAL\\Driver\\PDOConnection' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php',
- 'Doctrine\\DBAL\\Driver\\PDOException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOException.php',
- 'Doctrine\\DBAL\\Driver\\PDOIbm\\Driver' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOIbm/Driver.php',
- 'Doctrine\\DBAL\\Driver\\PDOMySql\\Driver' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php',
- 'Doctrine\\DBAL\\Driver\\PDOOracle\\Driver' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOOracle/Driver.php',
- 'Doctrine\\DBAL\\Driver\\PDOPgSql\\Driver' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOPgSql/Driver.php',
- 'Doctrine\\DBAL\\Driver\\PDOSqlite\\Driver' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOSqlite/Driver.php',
- 'Doctrine\\DBAL\\Driver\\PDOSqlsrv\\Connection' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOSqlsrv/Connection.php',
- 'Doctrine\\DBAL\\Driver\\PDOSqlsrv\\Driver' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOSqlsrv/Driver.php',
- 'Doctrine\\DBAL\\Driver\\PDOSqlsrv\\Statement' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOSqlsrv/Statement.php',
- 'Doctrine\\DBAL\\Driver\\PDOStatement' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php',
- 'Doctrine\\DBAL\\Driver\\PingableConnection' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PingableConnection.php',
- 'Doctrine\\DBAL\\Driver\\ResultStatement' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/ResultStatement.php',
- 'Doctrine\\DBAL\\Driver\\SQLAnywhere\\Driver' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLAnywhere/Driver.php',
- 'Doctrine\\DBAL\\Driver\\SQLAnywhere\\SQLAnywhereConnection' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLAnywhere/SQLAnywhereConnection.php',
- 'Doctrine\\DBAL\\Driver\\SQLAnywhere\\SQLAnywhereException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLAnywhere/SQLAnywhereException.php',
- 'Doctrine\\DBAL\\Driver\\SQLAnywhere\\SQLAnywhereStatement' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLAnywhere/SQLAnywhereStatement.php',
- 'Doctrine\\DBAL\\Driver\\SQLSrv\\Driver' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLSrv/Driver.php',
- 'Doctrine\\DBAL\\Driver\\SQLSrv\\LastInsertId' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLSrv/LastInsertId.php',
- 'Doctrine\\DBAL\\Driver\\SQLSrv\\SQLSrvConnection' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvConnection.php',
- 'Doctrine\\DBAL\\Driver\\SQLSrv\\SQLSrvException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvException.php',
- 'Doctrine\\DBAL\\Driver\\SQLSrv\\SQLSrvStatement' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvStatement.php',
- 'Doctrine\\DBAL\\Driver\\ServerInfoAwareConnection' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/ServerInfoAwareConnection.php',
- 'Doctrine\\DBAL\\Driver\\Statement' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/Statement.php',
- 'Doctrine\\DBAL\\Driver\\StatementIterator' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/StatementIterator.php',
- 'Doctrine\\DBAL\\Event\\ConnectionEventArgs' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Event/ConnectionEventArgs.php',
- 'Doctrine\\DBAL\\Event\\Listeners\\MysqlSessionInit' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Event/Listeners/MysqlSessionInit.php',
- 'Doctrine\\DBAL\\Event\\Listeners\\OracleSessionInit' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Event/Listeners/OracleSessionInit.php',
- 'Doctrine\\DBAL\\Event\\Listeners\\SQLSessionInit' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Event/Listeners/SQLSessionInit.php',
- 'Doctrine\\DBAL\\Event\\SchemaAlterTableAddColumnEventArgs' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableAddColumnEventArgs.php',
- 'Doctrine\\DBAL\\Event\\SchemaAlterTableChangeColumnEventArgs' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableChangeColumnEventArgs.php',
- 'Doctrine\\DBAL\\Event\\SchemaAlterTableEventArgs' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableEventArgs.php',
- 'Doctrine\\DBAL\\Event\\SchemaAlterTableRemoveColumnEventArgs' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableRemoveColumnEventArgs.php',
- 'Doctrine\\DBAL\\Event\\SchemaAlterTableRenameColumnEventArgs' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableRenameColumnEventArgs.php',
- 'Doctrine\\DBAL\\Event\\SchemaColumnDefinitionEventArgs' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaColumnDefinitionEventArgs.php',
- 'Doctrine\\DBAL\\Event\\SchemaCreateTableColumnEventArgs' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaCreateTableColumnEventArgs.php',
- 'Doctrine\\DBAL\\Event\\SchemaCreateTableEventArgs' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaCreateTableEventArgs.php',
- 'Doctrine\\DBAL\\Event\\SchemaDropTableEventArgs' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaDropTableEventArgs.php',
- 'Doctrine\\DBAL\\Event\\SchemaEventArgs' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaEventArgs.php',
- 'Doctrine\\DBAL\\Event\\SchemaIndexDefinitionEventArgs' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaIndexDefinitionEventArgs.php',
- 'Doctrine\\DBAL\\Events' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Events.php',
- 'Doctrine\\DBAL\\Exception\\ConnectionException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/ConnectionException.php',
- 'Doctrine\\DBAL\\Exception\\ConstraintViolationException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/ConstraintViolationException.php',
- 'Doctrine\\DBAL\\Exception\\DatabaseObjectExistsException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/DatabaseObjectExistsException.php',
- 'Doctrine\\DBAL\\Exception\\DatabaseObjectNotFoundException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/DatabaseObjectNotFoundException.php',
- 'Doctrine\\DBAL\\Exception\\DeadlockException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/DeadlockException.php',
- 'Doctrine\\DBAL\\Exception\\DriverException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/DriverException.php',
- 'Doctrine\\DBAL\\Exception\\ForeignKeyConstraintViolationException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/ForeignKeyConstraintViolationException.php',
- 'Doctrine\\DBAL\\Exception\\InvalidArgumentException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/InvalidArgumentException.php',
- 'Doctrine\\DBAL\\Exception\\InvalidFieldNameException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/InvalidFieldNameException.php',
- 'Doctrine\\DBAL\\Exception\\LockWaitTimeoutException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/LockWaitTimeoutException.php',
- 'Doctrine\\DBAL\\Exception\\NonUniqueFieldNameException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/NonUniqueFieldNameException.php',
- 'Doctrine\\DBAL\\Exception\\NotNullConstraintViolationException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/NotNullConstraintViolationException.php',
- 'Doctrine\\DBAL\\Exception\\ReadOnlyException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/ReadOnlyException.php',
- 'Doctrine\\DBAL\\Exception\\RetryableException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/RetryableException.php',
- 'Doctrine\\DBAL\\Exception\\ServerException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/ServerException.php',
- 'Doctrine\\DBAL\\Exception\\SyntaxErrorException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/SyntaxErrorException.php',
- 'Doctrine\\DBAL\\Exception\\TableExistsException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/TableExistsException.php',
- 'Doctrine\\DBAL\\Exception\\TableNotFoundException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/TableNotFoundException.php',
- 'Doctrine\\DBAL\\Exception\\UniqueConstraintViolationException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/UniqueConstraintViolationException.php',
- 'Doctrine\\DBAL\\FetchMode' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/FetchMode.php',
- 'Doctrine\\DBAL\\Id\\TableGenerator' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Id/TableGenerator.php',
- 'Doctrine\\DBAL\\Id\\TableGeneratorSchemaVisitor' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Id/TableGeneratorSchemaVisitor.php',
- 'Doctrine\\DBAL\\LockMode' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/LockMode.php',
- 'Doctrine\\DBAL\\Logging\\DebugStack' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Logging/DebugStack.php',
- 'Doctrine\\DBAL\\Logging\\EchoSQLLogger' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Logging/EchoSQLLogger.php',
- 'Doctrine\\DBAL\\Logging\\LoggerChain' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Logging/LoggerChain.php',
- 'Doctrine\\DBAL\\Logging\\SQLLogger' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Logging/SQLLogger.php',
- 'Doctrine\\DBAL\\ParameterType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/ParameterType.php',
- 'Doctrine\\DBAL\\Platforms\\AbstractPlatform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/AbstractPlatform.php',
- 'Doctrine\\DBAL\\Platforms\\DB2Platform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/DB2Platform.php',
- 'Doctrine\\DBAL\\Platforms\\DateIntervalUnit' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/DateIntervalUnit.php',
- 'Doctrine\\DBAL\\Platforms\\DrizzlePlatform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/DrizzlePlatform.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\DB2Keywords' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/DB2Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\DrizzleKeywords' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/DrizzleKeywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\KeywordList' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/KeywordList.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\MariaDb102Keywords' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/MariaDb102Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\MsSQLKeywords' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/MsSQLKeywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\MySQL57Keywords' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/MySQL57Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\MySQL80Keywords' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/MySQL80Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\MySQLKeywords' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/MySQLKeywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\OracleKeywords' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/OracleKeywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\PostgreSQL100Keywords' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/PostgreSQL100Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\PostgreSQL91Keywords' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/PostgreSQL91Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\PostgreSQL92Keywords' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/PostgreSQL92Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\PostgreSQL94Keywords' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/PostgreSQL94Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\PostgreSQLKeywords' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/PostgreSQLKeywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\ReservedKeywordsValidator' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/ReservedKeywordsValidator.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLAnywhere11Keywords' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/SQLAnywhere11Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLAnywhere12Keywords' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/SQLAnywhere12Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLAnywhere16Keywords' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/SQLAnywhere16Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLAnywhereKeywords' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/SQLAnywhereKeywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLServer2005Keywords' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/SQLServer2005Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLServer2008Keywords' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/SQLServer2008Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLServer2012Keywords' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/SQLServer2012Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLServerKeywords' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/SQLServerKeywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLiteKeywords' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/SQLiteKeywords.php',
- 'Doctrine\\DBAL\\Platforms\\MariaDb1027Platform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MariaDb1027Platform.php',
- 'Doctrine\\DBAL\\Platforms\\MySQL57Platform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySQL57Platform.php',
- 'Doctrine\\DBAL\\Platforms\\MySQL80Platform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySQL80Platform.php',
- 'Doctrine\\DBAL\\Platforms\\MySqlPlatform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php',
- 'Doctrine\\DBAL\\Platforms\\OraclePlatform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/OraclePlatform.php',
- 'Doctrine\\DBAL\\Platforms\\PostgreSQL100Platform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSQL100Platform.php',
- 'Doctrine\\DBAL\\Platforms\\PostgreSQL91Platform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSQL91Platform.php',
- 'Doctrine\\DBAL\\Platforms\\PostgreSQL92Platform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSQL92Platform.php',
- 'Doctrine\\DBAL\\Platforms\\PostgreSQL94Platform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSQL94Platform.php',
- 'Doctrine\\DBAL\\Platforms\\PostgreSqlPlatform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSqlPlatform.php',
- 'Doctrine\\DBAL\\Platforms\\SQLAnywhere11Platform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLAnywhere11Platform.php',
- 'Doctrine\\DBAL\\Platforms\\SQLAnywhere12Platform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLAnywhere12Platform.php',
- 'Doctrine\\DBAL\\Platforms\\SQLAnywhere16Platform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLAnywhere16Platform.php',
- 'Doctrine\\DBAL\\Platforms\\SQLAnywherePlatform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLAnywherePlatform.php',
- 'Doctrine\\DBAL\\Platforms\\SQLAzurePlatform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLAzurePlatform.php',
- 'Doctrine\\DBAL\\Platforms\\SQLServer2005Platform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLServer2005Platform.php',
- 'Doctrine\\DBAL\\Platforms\\SQLServer2008Platform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLServer2008Platform.php',
- 'Doctrine\\DBAL\\Platforms\\SQLServer2012Platform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLServer2012Platform.php',
- 'Doctrine\\DBAL\\Platforms\\SQLServerPlatform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLServerPlatform.php',
- 'Doctrine\\DBAL\\Platforms\\SqlitePlatform' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SqlitePlatform.php',
- 'Doctrine\\DBAL\\Platforms\\TrimMode' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/TrimMode.php',
- 'Doctrine\\DBAL\\Portability\\Connection' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Portability/Connection.php',
- 'Doctrine\\DBAL\\Portability\\Statement' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Portability/Statement.php',
- 'Doctrine\\DBAL\\Query\\Expression\\CompositeExpression' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Query/Expression/CompositeExpression.php',
- 'Doctrine\\DBAL\\Query\\Expression\\ExpressionBuilder' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Query/Expression/ExpressionBuilder.php',
- 'Doctrine\\DBAL\\Query\\QueryBuilder' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Query/QueryBuilder.php',
- 'Doctrine\\DBAL\\Query\\QueryException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Query/QueryException.php',
- 'Doctrine\\DBAL\\SQLParserUtils' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/SQLParserUtils.php',
- 'Doctrine\\DBAL\\SQLParserUtilsException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/SQLParserUtilsException.php',
- 'Doctrine\\DBAL\\Schema\\AbstractAsset' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/AbstractAsset.php',
- 'Doctrine\\DBAL\\Schema\\AbstractSchemaManager' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php',
- 'Doctrine\\DBAL\\Schema\\Column' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Column.php',
- 'Doctrine\\DBAL\\Schema\\ColumnDiff' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/ColumnDiff.php',
- 'Doctrine\\DBAL\\Schema\\Comparator' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Comparator.php',
- 'Doctrine\\DBAL\\Schema\\Constraint' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Constraint.php',
- 'Doctrine\\DBAL\\Schema\\DB2SchemaManager' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/DB2SchemaManager.php',
- 'Doctrine\\DBAL\\Schema\\DrizzleSchemaManager' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/DrizzleSchemaManager.php',
- 'Doctrine\\DBAL\\Schema\\ForeignKeyConstraint' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/ForeignKeyConstraint.php',
- 'Doctrine\\DBAL\\Schema\\Identifier' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Identifier.php',
- 'Doctrine\\DBAL\\Schema\\Index' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Index.php',
- 'Doctrine\\DBAL\\Schema\\MySqlSchemaManager' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/MySqlSchemaManager.php',
- 'Doctrine\\DBAL\\Schema\\OracleSchemaManager' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/OracleSchemaManager.php',
- 'Doctrine\\DBAL\\Schema\\PostgreSqlSchemaManager' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/PostgreSqlSchemaManager.php',
- 'Doctrine\\DBAL\\Schema\\SQLAnywhereSchemaManager' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/SQLAnywhereSchemaManager.php',
- 'Doctrine\\DBAL\\Schema\\SQLServerSchemaManager' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/SQLServerSchemaManager.php',
- 'Doctrine\\DBAL\\Schema\\Schema' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Schema.php',
- 'Doctrine\\DBAL\\Schema\\SchemaConfig' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/SchemaConfig.php',
- 'Doctrine\\DBAL\\Schema\\SchemaDiff' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/SchemaDiff.php',
- 'Doctrine\\DBAL\\Schema\\SchemaException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/SchemaException.php',
- 'Doctrine\\DBAL\\Schema\\Sequence' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Sequence.php',
- 'Doctrine\\DBAL\\Schema\\SqliteSchemaManager' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/SqliteSchemaManager.php',
- 'Doctrine\\DBAL\\Schema\\Synchronizer\\AbstractSchemaSynchronizer' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Synchronizer/AbstractSchemaSynchronizer.php',
- 'Doctrine\\DBAL\\Schema\\Synchronizer\\SchemaSynchronizer' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Synchronizer/SchemaSynchronizer.php',
- 'Doctrine\\DBAL\\Schema\\Synchronizer\\SingleDatabaseSynchronizer' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Synchronizer/SingleDatabaseSynchronizer.php',
- 'Doctrine\\DBAL\\Schema\\Table' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Table.php',
- 'Doctrine\\DBAL\\Schema\\TableDiff' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/TableDiff.php',
- 'Doctrine\\DBAL\\Schema\\View' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/View.php',
- 'Doctrine\\DBAL\\Schema\\Visitor\\AbstractVisitor' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/AbstractVisitor.php',
- 'Doctrine\\DBAL\\Schema\\Visitor\\CreateSchemaSqlCollector' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/CreateSchemaSqlCollector.php',
- 'Doctrine\\DBAL\\Schema\\Visitor\\DropSchemaSqlCollector' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/DropSchemaSqlCollector.php',
- 'Doctrine\\DBAL\\Schema\\Visitor\\Graphviz' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/Graphviz.php',
- 'Doctrine\\DBAL\\Schema\\Visitor\\NamespaceVisitor' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/NamespaceVisitor.php',
- 'Doctrine\\DBAL\\Schema\\Visitor\\RemoveNamespacedAssets' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/RemoveNamespacedAssets.php',
- 'Doctrine\\DBAL\\Schema\\Visitor\\SchemaDiffVisitor' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/SchemaDiffVisitor.php',
- 'Doctrine\\DBAL\\Schema\\Visitor\\Visitor' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/Visitor.php',
- 'Doctrine\\DBAL\\Sharding\\PoolingShardConnection' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Sharding/PoolingShardConnection.php',
- 'Doctrine\\DBAL\\Sharding\\PoolingShardManager' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Sharding/PoolingShardManager.php',
- 'Doctrine\\DBAL\\Sharding\\SQLAzure\\SQLAzureFederationsSynchronizer' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Sharding/SQLAzure/SQLAzureFederationsSynchronizer.php',
- 'Doctrine\\DBAL\\Sharding\\SQLAzure\\SQLAzureShardManager' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Sharding/SQLAzure/SQLAzureShardManager.php',
- 'Doctrine\\DBAL\\Sharding\\SQLAzure\\Schema\\MultiTenantVisitor' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Sharding/SQLAzure/Schema/MultiTenantVisitor.php',
- 'Doctrine\\DBAL\\Sharding\\ShardChoser\\MultiTenantShardChoser' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Sharding/ShardChoser/MultiTenantShardChoser.php',
- 'Doctrine\\DBAL\\Sharding\\ShardChoser\\ShardChoser' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Sharding/ShardChoser/ShardChoser.php',
- 'Doctrine\\DBAL\\Sharding\\ShardManager' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Sharding/ShardManager.php',
- 'Doctrine\\DBAL\\Sharding\\ShardingException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Sharding/ShardingException.php',
- 'Doctrine\\DBAL\\Statement' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Statement.php',
- 'Doctrine\\DBAL\\Tools\\Console\\Command\\ImportCommand' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Tools/Console/Command/ImportCommand.php',
- 'Doctrine\\DBAL\\Tools\\Console\\Command\\ReservedWordsCommand' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Tools/Console/Command/ReservedWordsCommand.php',
- 'Doctrine\\DBAL\\Tools\\Console\\Command\\RunSqlCommand' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Tools/Console/Command/RunSqlCommand.php',
- 'Doctrine\\DBAL\\Tools\\Console\\ConsoleRunner' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Tools/Console/ConsoleRunner.php',
- 'Doctrine\\DBAL\\Tools\\Console\\Helper\\ConnectionHelper' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Tools/Console/Helper/ConnectionHelper.php',
- 'Doctrine\\DBAL\\Tools\\Dumper' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Tools/Dumper.php',
- 'Doctrine\\DBAL\\TransactionIsolationLevel' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/TransactionIsolationLevel.php',
- 'Doctrine\\DBAL\\Types\\ArrayType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/ArrayType.php',
- 'Doctrine\\DBAL\\Types\\BigIntType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/BigIntType.php',
- 'Doctrine\\DBAL\\Types\\BinaryType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/BinaryType.php',
- 'Doctrine\\DBAL\\Types\\BlobType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/BlobType.php',
- 'Doctrine\\DBAL\\Types\\BooleanType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/BooleanType.php',
- 'Doctrine\\DBAL\\Types\\ConversionException' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/ConversionException.php',
- 'Doctrine\\DBAL\\Types\\DateImmutableType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/DateImmutableType.php',
- 'Doctrine\\DBAL\\Types\\DateIntervalType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/DateIntervalType.php',
- 'Doctrine\\DBAL\\Types\\DateTimeImmutableType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeImmutableType.php',
- 'Doctrine\\DBAL\\Types\\DateTimeType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeType.php',
- 'Doctrine\\DBAL\\Types\\DateTimeTzImmutableType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeTzImmutableType.php',
- 'Doctrine\\DBAL\\Types\\DateTimeTzType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeTzType.php',
- 'Doctrine\\DBAL\\Types\\DateType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/DateType.php',
- 'Doctrine\\DBAL\\Types\\DecimalType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/DecimalType.php',
- 'Doctrine\\DBAL\\Types\\FloatType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/FloatType.php',
- 'Doctrine\\DBAL\\Types\\GuidType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/GuidType.php',
- 'Doctrine\\DBAL\\Types\\IntegerType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/IntegerType.php',
- 'Doctrine\\DBAL\\Types\\JsonArrayType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/JsonArrayType.php',
- 'Doctrine\\DBAL\\Types\\JsonType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/JsonType.php',
- 'Doctrine\\DBAL\\Types\\ObjectType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/ObjectType.php',
- 'Doctrine\\DBAL\\Types\\PhpDateTimeMappingType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/PhpDateTimeMappingType.php',
- 'Doctrine\\DBAL\\Types\\PhpIntegerMappingType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/PhpIntegerMappingType.php',
- 'Doctrine\\DBAL\\Types\\SimpleArrayType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/SimpleArrayType.php',
- 'Doctrine\\DBAL\\Types\\SmallIntType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/SmallIntType.php',
- 'Doctrine\\DBAL\\Types\\StringType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/StringType.php',
- 'Doctrine\\DBAL\\Types\\TextType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/TextType.php',
- 'Doctrine\\DBAL\\Types\\TimeImmutableType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/TimeImmutableType.php',
- 'Doctrine\\DBAL\\Types\\TimeType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/TimeType.php',
- 'Doctrine\\DBAL\\Types\\Type' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/Type.php',
- 'Doctrine\\DBAL\\Types\\TypeRegistry' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/TypeRegistry.php',
- 'Doctrine\\DBAL\\Types\\Types' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/Types.php',
- 'Doctrine\\DBAL\\Types\\VarDateTimeImmutableType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/VarDateTimeImmutableType.php',
- 'Doctrine\\DBAL\\Types\\VarDateTimeType' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Types/VarDateTimeType.php',
- 'Doctrine\\DBAL\\Version' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/Version.php',
- 'Doctrine\\DBAL\\VersionAwarePlatformDriver' => $vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL/VersionAwarePlatformDriver.php',
'Doctrine\\Instantiator\\Exception\\ExceptionInterface' => $vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php',
'Doctrine\\Instantiator\\Exception\\InvalidArgumentException' => $vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php',
'Doctrine\\Instantiator\\Exception\\UnexpectedValueException' => $vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php',
@@ -2078,14 +1786,6 @@ return array(
'JakubOnderka\\PhpConsoleColor\\ConsoleColor' => $vendorDir . '/jakub-onderka/php-console-color/src/ConsoleColor.php',
'JakubOnderka\\PhpConsoleColor\\InvalidStyleException' => $vendorDir . '/jakub-onderka/php-console-color/src/InvalidStyleException.php',
'JakubOnderka\\PhpConsoleHighlighter\\Highlighter' => $vendorDir . '/jakub-onderka/php-console-highlighter/src/Highlighter.php',
- 'Jaybizzle\\CrawlerDetect\\CrawlerDetect' => $vendorDir . '/jaybizzle/crawler-detect/src/CrawlerDetect.php',
- 'Jaybizzle\\CrawlerDetect\\Fixtures\\AbstractProvider' => $vendorDir . '/jaybizzle/crawler-detect/src/Fixtures/AbstractProvider.php',
- 'Jaybizzle\\CrawlerDetect\\Fixtures\\Crawlers' => $vendorDir . '/jaybizzle/crawler-detect/src/Fixtures/Crawlers.php',
- 'Jaybizzle\\CrawlerDetect\\Fixtures\\Exclusions' => $vendorDir . '/jaybizzle/crawler-detect/src/Fixtures/Exclusions.php',
- 'Jaybizzle\\CrawlerDetect\\Fixtures\\Headers' => $vendorDir . '/jaybizzle/crawler-detect/src/Fixtures/Headers.php',
- 'Jenssegers\\Agent\\Agent' => $vendorDir . '/jenssegers/agent/src/Agent.php',
- 'Jenssegers\\Agent\\AgentServiceProvider' => $vendorDir . '/jenssegers/agent/src/AgentServiceProvider.php',
- 'Jenssegers\\Agent\\Facades\\Agent' => $vendorDir . '/jenssegers/agent/src/Facades/Agent.php',
'JsonException' => $vendorDir . '/symfony/polyfill-php73/Resources/stubs/JsonException.php',
'Khill\\Lavacharts\\Builders\\ChartBuilder' => $vendorDir . '/khill/lavacharts/src/Builders/ChartBuilder.php',
'Khill\\Lavacharts\\Builders\\DashboardBuilder' => $vendorDir . '/khill/lavacharts/src/Builders/DashboardBuilder.php',
@@ -2438,7 +2138,6 @@ return array(
'League\\OAuth1\\Client\\Signature\\PlainTextSignature' => $vendorDir . '/league/oauth1-client/src/Client/Signature/PlainTextSignature.php',
'League\\OAuth1\\Client\\Signature\\Signature' => $vendorDir . '/league/oauth1-client/src/Client/Signature/Signature.php',
'League\\OAuth1\\Client\\Signature\\SignatureInterface' => $vendorDir . '/league/oauth1-client/src/Client/Signature/SignatureInterface.php',
- 'Mobile_Detect' => $vendorDir . '/mobiledetect/mobiledetectlib/Mobile_Detect.php',
'Mockery' => $vendorDir . '/mockery/mockery/library/Mockery.php',
'Mockery\\Adapter\\Phpunit\\Legacy\\TestListenerForV5' => $vendorDir . '/mockery/mockery/library/Mockery/Adapter/Phpunit/Legacy/TestListenerForV5.php',
'Mockery\\Adapter\\Phpunit\\Legacy\\TestListenerForV6' => $vendorDir . '/mockery/mockery/library/Mockery/Adapter/Phpunit/Legacy/TestListenerForV6.php',
@@ -3320,131 +3019,6 @@ return array(
'PhpParser\\Parser\\Tokens' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Tokens.php',
'PhpParser\\PrettyPrinterAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php',
'PhpParser\\PrettyPrinter\\Standard' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php',
- 'PragmaRX\\Support\\CacheManager' => $vendorDir . '/pragmarx/support/src/CacheManager.php',
- 'PragmaRX\\Support\\Config' => $vendorDir . '/pragmarx/support/src/Config.php',
- 'PragmaRX\\Support\\CpfCnpj\\Cnpj' => $vendorDir . '/pragmarx/support/src/CpfCnpj/Cnpj.php',
- 'PragmaRX\\Support\\CpfCnpj\\Cpf' => $vendorDir . '/pragmarx/support/src/CpfCnpj/Cpf.php',
- 'PragmaRX\\Support\\CpfCnpj\\CpfCnpj' => $vendorDir . '/pragmarx/support/src/CpfCnpj/CpfCnpj.php',
- 'PragmaRX\\Support\\DateTime' => $vendorDir . '/pragmarx/support/src/DateTime.php',
- 'PragmaRX\\Support\\Debug\\Dumper' => $vendorDir . '/pragmarx/support/src/Debug/Dumper.php',
- 'PragmaRX\\Support\\Debug\\HtmlDumper' => $vendorDir . '/pragmarx/support/src/Debug/HtmlDumper.php',
- 'PragmaRX\\Support\\Environment' => $vendorDir . '/pragmarx/support/src/Environment.php',
- 'PragmaRX\\Support\\Exceptions\\EnvironmentVariableNotSet' => $vendorDir . '/pragmarx/support/src/Exceptions/EnvironmentVariableNotSet.php',
- 'PragmaRX\\Support\\Exceptions\\Exception' => $vendorDir . '/pragmarx/support/src/Exceptions/Exception.php',
- 'PragmaRX\\Support\\Filesystem' => $vendorDir . '/pragmarx/support/src/Filesystem.php',
- 'PragmaRX\\Support\\Finder' => $vendorDir . '/pragmarx/support/src/Finder.php',
- 'PragmaRX\\Support\\GeoIp\\GeoIp' => $vendorDir . '/pragmarx/support/src/GeoIp/GeoIp.php',
- 'PragmaRX\\Support\\GeoIp\\GeoIp1' => $vendorDir . '/pragmarx/support/src/GeoIp/GeoIp1.php',
- 'PragmaRX\\Support\\GeoIp\\GeoIp2' => $vendorDir . '/pragmarx/support/src/GeoIp/GeoIp2.php',
- 'PragmaRX\\Support\\GeoIp\\GeoIpAbstract' => $vendorDir . '/pragmarx/support/src/GeoIp/GeoIpAbstract.php',
- 'PragmaRX\\Support\\GeoIp\\GeoIpContract' => $vendorDir . '/pragmarx/support/src/GeoIp/GeoIpContract.php',
- 'PragmaRX\\Support\\GeoIp\\Updater' => $vendorDir . '/pragmarx/support/src/GeoIp/Updater.php',
- 'PragmaRX\\Support\\ImporterExporter\\ImporterExporter' => $vendorDir . '/pragmarx/support/src/ImporterExporter/ImporterExporter.php',
- 'PragmaRX\\Support\\Inflectors\\En' => $vendorDir . '/pragmarx/support/src/Inflectors/En.php',
- 'PragmaRX\\Support\\Inflectors\\Inflector' => $vendorDir . '/pragmarx/support/src/Inflectors/Inflector.php',
- 'PragmaRX\\Support\\Inflectors\\InflectorInterface' => $vendorDir . '/pragmarx/support/src/Inflectors/InflectorInterface.php',
- 'PragmaRX\\Support\\Inflectors\\PtBr' => $vendorDir . '/pragmarx/support/src/Inflectors/PtBr.php',
- 'PragmaRX\\Support\\IpAddress' => $vendorDir . '/pragmarx/support/src/IpAddress.php',
- 'PragmaRX\\Support\\Migration' => $vendorDir . '/pragmarx/support/src/Migration.php',
- 'PragmaRX\\Support\\PhpSession' => $vendorDir . '/pragmarx/support/src/PhpSession.php',
- 'PragmaRX\\Support\\Response' => $vendorDir . '/pragmarx/support/src/Response.php',
- 'PragmaRX\\Support\\ServiceProvider' => $vendorDir . '/pragmarx/support/src/ServiceProvider.php',
- 'PragmaRX\\Support\\Timer' => $vendorDir . '/pragmarx/support/src/Timer.php',
- 'PragmaRX\\Support\\YamlConfig' => $vendorDir . '/pragmarx/support/src/YamlConfig.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Agent' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/Agent.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Connection' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/Connection.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Cookie' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/Cookie.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Device' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/Device.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Domain' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/Domain.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Error' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/Error.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Event' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/Event.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\EventLog' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/EventLog.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\GeoIp' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/GeoIp.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Language' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/Language.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Log' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/Log.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Path' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/Path.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Query' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/Query.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\QueryArgument' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/QueryArgument.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Referer' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/Referer.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Repository' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/Repository.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\RepositoryInterface' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/RepositoryInterface.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Route' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/Route.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\RoutePath' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/RoutePath.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\RoutePathParameter' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/RoutePathParameter.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Session' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/Session.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\SqlQuery' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/SqlQuery.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\SqlQueryBinding' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/SqlQueryBinding.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\SqlQueryBindingParameter' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/SqlQueryBindingParameter.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\SqlQueryLog' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/SqlQueryLog.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\SystemClass' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/SystemClass.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\User' => $vendorDir . '/pragmarx/tracker/src/Data/Repositories/User.php',
- 'PragmaRX\\Tracker\\Data\\RepositoryManager' => $vendorDir . '/pragmarx/tracker/src/Data/RepositoryManager.php',
- 'PragmaRX\\Tracker\\Data\\RepositoryManagerInterface' => $vendorDir . '/pragmarx/tracker/src/Data/RepositoryManagerInterface.php',
- 'PragmaRX\\Tracker\\Eventing\\EventStorage' => $vendorDir . '/pragmarx/tracker/src/Eventing/EventStorage.php',
- 'PragmaRX\\Tracker\\Repositories\\Message' => $vendorDir . '/pragmarx/tracker/src/Repositories/Message.php',
- 'PragmaRX\\Tracker\\Services\\Authentication' => $vendorDir . '/pragmarx/tracker/src/Services/Authentication.php',
- 'PragmaRX\\Tracker\\Support\\Cache' => $vendorDir . '/pragmarx/tracker/src/Support/Cache.php',
- 'PragmaRX\\Tracker\\Support\\CrawlerDetector' => $vendorDir . '/pragmarx/tracker/src/Support/CrawlerDetector.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\CompileError' => $vendorDir . '/pragmarx/tracker/src/Support/Exceptions/CompileError.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\CompileWarning' => $vendorDir . '/pragmarx/tracker/src/Support/Exceptions/CompileWarning.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\CoreError' => $vendorDir . '/pragmarx/tracker/src/Support/Exceptions/CoreError.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\CoreWarning' => $vendorDir . '/pragmarx/tracker/src/Support/Exceptions/CoreWarning.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\Deprecated' => $vendorDir . '/pragmarx/tracker/src/Support/Exceptions/Deprecated.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\Error' => $vendorDir . '/pragmarx/tracker/src/Support/Exceptions/Error.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\ExceptionFactory' => $vendorDir . '/pragmarx/tracker/src/Support/Exceptions/ExceptionFactory.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\Handler' => $vendorDir . '/pragmarx/tracker/src/Support/Exceptions/Handler.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\Notice' => $vendorDir . '/pragmarx/tracker/src/Support/Exceptions/Notice.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\Parse' => $vendorDir . '/pragmarx/tracker/src/Support/Exceptions/Parse.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\RecoverableError' => $vendorDir . '/pragmarx/tracker/src/Support/Exceptions/RecoverableError.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\Strict' => $vendorDir . '/pragmarx/tracker/src/Support/Exceptions/Strict.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\UserDeprecated' => $vendorDir . '/pragmarx/tracker/src/Support/Exceptions/UserDeprecated.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\UserError' => $vendorDir . '/pragmarx/tracker/src/Support/Exceptions/UserError.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\UserNotice' => $vendorDir . '/pragmarx/tracker/src/Support/Exceptions/UserNotice.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\UserWarning' => $vendorDir . '/pragmarx/tracker/src/Support/Exceptions/UserWarning.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\Warning' => $vendorDir . '/pragmarx/tracker/src/Support/Exceptions/Warning.php',
- 'PragmaRX\\Tracker\\Support\\Filesystem' => $vendorDir . '/pragmarx/tracker/src/Support/Filesystem.php',
- 'PragmaRX\\Tracker\\Support\\LanguageDetect' => $vendorDir . '/pragmarx/tracker/src/Support/LanguageDetect.php',
- 'PragmaRX\\Tracker\\Support\\Migration' => $vendorDir . '/pragmarx/tracker/src/Support/Migration.php',
- 'PragmaRX\\Tracker\\Support\\Minutes' => $vendorDir . '/pragmarx/tracker/src/Support/Minutes.php',
- 'PragmaRX\\Tracker\\Support\\MobileDetect' => $vendorDir . '/pragmarx/tracker/src/Support/MobileDetect.php',
- 'PragmaRX\\Tracker\\Support\\RefererParser' => $vendorDir . '/pragmarx/tracker/src/Support/RefererParser.php',
- 'PragmaRX\\Tracker\\Support\\UserAgentParser' => $vendorDir . '/pragmarx/tracker/src/Support/UserAgentParser.php',
- 'PragmaRX\\Tracker\\Tracker' => $vendorDir . '/pragmarx/tracker/src/Tracker.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Artisan\\Base' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Artisan/Base.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Artisan\\Tables' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Artisan/Tables.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Artisan\\UpdateGeoIp' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Artisan/UpdateGeoIp.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Controllers\\Stats' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Controllers/Stats.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Facade' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Facade.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Middlewares\\Tracker' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Middlewares/Tracker.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Agent' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/Agent.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Base' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/Base.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Connection' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/Connection.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Cookie' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/Cookie.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Device' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/Device.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Domain' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/Domain.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Error' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/Error.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Event' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/Event.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\EventLog' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/EventLog.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\GeoIp' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/GeoIp.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Language' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/Language.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Log' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/Log.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Path' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/Path.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Query' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/Query.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\QueryArgument' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/QueryArgument.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Referer' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/Referer.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\RefererSearchTerm' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/RefererSearchTerm.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Route' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/Route.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\RoutePath' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/RoutePath.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\RoutePathParameter' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/RoutePathParameter.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Session' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/Session.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\SqlQuery' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/SqlQuery.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\SqlQueryBinding' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/SqlQueryBinding.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\SqlQueryBindingParameter' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/SqlQueryBindingParameter.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\SqlQueryLog' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/SqlQueryLog.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\SystemClass' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/SystemClass.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\User' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Models/User.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\ServiceProvider' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/ServiceProvider.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Support\\Session' => $vendorDir . '/pragmarx/tracker/src/Vendor/Laravel/Support/Session.php',
'Predis\\Autoloader' => $vendorDir . '/predis/predis/src/Autoloader.php',
'Predis\\Client' => $vendorDir . '/predis/predis/src/Client.php',
'Predis\\ClientContextInterface' => $vendorDir . '/predis/predis/src/ClientContextInterface.php',
@@ -4142,14 +3716,6 @@ return array(
'SebastianBergmann\\Timer\\RuntimeException' => $vendorDir . '/phpunit/php-timer/src/RuntimeException.php',
'SebastianBergmann\\Timer\\Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php',
'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php',
- 'Snowplow\\RefererParser\\Config\\ConfigFileReaderTrait' => $vendorDir . '/snowplow/referer-parser/php/src/Snowplow/RefererParser/Config/ConfigFileReaderTrait.php',
- 'Snowplow\\RefererParser\\Config\\ConfigReaderInterface' => $vendorDir . '/snowplow/referer-parser/php/src/Snowplow/RefererParser/Config/ConfigReaderInterface.php',
- 'Snowplow\\RefererParser\\Config\\JsonConfigReader' => $vendorDir . '/snowplow/referer-parser/php/src/Snowplow/RefererParser/Config/JsonConfigReader.php',
- 'Snowplow\\RefererParser\\Config\\YamlConfigReader' => $vendorDir . '/snowplow/referer-parser/php/src/Snowplow/RefererParser/Config/YamlConfigReader.php',
- 'Snowplow\\RefererParser\\Exception\\InvalidArgumentException' => $vendorDir . '/snowplow/referer-parser/php/src/Snowplow/RefererParser/Exception/InvalidArgumentException.php',
- 'Snowplow\\RefererParser\\Medium' => $vendorDir . '/snowplow/referer-parser/php/src/Snowplow/RefererParser/Medium.php',
- 'Snowplow\\RefererParser\\Parser' => $vendorDir . '/snowplow/referer-parser/php/src/Snowplow/RefererParser/Parser.php',
- 'Snowplow\\RefererParser\\Referer' => $vendorDir . '/snowplow/referer-parser/php/src/Snowplow/RefererParser/Referer.php',
'SolarSystemSeeder' => $baseDir . '/database/seeds/SolarSystemSeeder.php',
'Symfony\\Component\\Console\\Application' => $vendorDir . '/symfony/console/Application.php',
'Symfony\\Component\\Console\\CommandLoader\\CommandLoaderInterface' => $vendorDir . '/symfony/console/CommandLoader/CommandLoaderInterface.php',
@@ -4892,33 +4458,6 @@ return array(
'TijsVerkoyen\\CssToInlineStyles\\Css\\Property\\Property' => $vendorDir . '/tijsverkoyen/css-to-inline-styles/src/Css/Property/Property.php',
'TijsVerkoyen\\CssToInlineStyles\\Css\\Rule\\Processor' => $vendorDir . '/tijsverkoyen/css-to-inline-styles/src/Css/Rule/Processor.php',
'TijsVerkoyen\\CssToInlineStyles\\Css\\Rule\\Rule' => $vendorDir . '/tijsverkoyen/css-to-inline-styles/src/Css/Rule/Rule.php',
- 'UAParser\\AbstractParser' => $vendorDir . '/ua-parser/uap-php/src/AbstractParser.php',
- 'UAParser\\Command\\ConvertCommand' => $vendorDir . '/ua-parser/uap-php/src/Command/ConvertCommand.php',
- 'UAParser\\Command\\FetchCommand' => $vendorDir . '/ua-parser/uap-php/src/Command/FetchCommand.php',
- 'UAParser\\Command\\LogfileCommand' => $vendorDir . '/ua-parser/uap-php/src/Command/LogfileCommand.php',
- 'UAParser\\Command\\ParserCommand' => $vendorDir . '/ua-parser/uap-php/src/Command/ParserCommand.php',
- 'UAParser\\Command\\UpdateCommand' => $vendorDir . '/ua-parser/uap-php/src/Command/UpdateCommand.php',
- 'UAParser\\DeviceParser' => $vendorDir . '/ua-parser/uap-php/src/DeviceParser.php',
- 'UAParser\\Exception\\DomainException' => $vendorDir . '/ua-parser/uap-php/src/Exception/DomainException.php',
- 'UAParser\\Exception\\FetcherException' => $vendorDir . '/ua-parser/uap-php/src/Exception/FetcherException.php',
- 'UAParser\\Exception\\FileNotFoundException' => $vendorDir . '/ua-parser/uap-php/src/Exception/FileNotFoundException.php',
- 'UAParser\\Exception\\InvalidArgumentException' => $vendorDir . '/ua-parser/uap-php/src/Exception/InvalidArgumentException.php',
- 'UAParser\\Exception\\ReaderException' => $vendorDir . '/ua-parser/uap-php/src/Exception/ReaderException.php',
- 'UAParser\\OperatingSystemParser' => $vendorDir . '/ua-parser/uap-php/src/OperatingSystemParser.php',
- 'UAParser\\Parser' => $vendorDir . '/ua-parser/uap-php/src/Parser.php',
- 'UAParser\\Result\\AbstractClient' => $vendorDir . '/ua-parser/uap-php/src/Result/AbstractClient.php',
- 'UAParser\\Result\\AbstractSoftware' => $vendorDir . '/ua-parser/uap-php/src/Result/AbstractSoftware.php',
- 'UAParser\\Result\\AbstractVersionedSoftware' => $vendorDir . '/ua-parser/uap-php/src/Result/AbstractVersionedSoftware.php',
- 'UAParser\\Result\\Client' => $vendorDir . '/ua-parser/uap-php/src/Result/Client.php',
- 'UAParser\\Result\\Device' => $vendorDir . '/ua-parser/uap-php/src/Result/Device.php',
- 'UAParser\\Result\\OperatingSystem' => $vendorDir . '/ua-parser/uap-php/src/Result/OperatingSystem.php',
- 'UAParser\\Result\\UserAgent' => $vendorDir . '/ua-parser/uap-php/src/Result/UserAgent.php',
- 'UAParser\\UserAgentParser' => $vendorDir . '/ua-parser/uap-php/src/UserAgentParser.php',
- 'UAParser\\Util\\Converter' => $vendorDir . '/ua-parser/uap-php/src/Util/Converter.php',
- 'UAParser\\Util\\Fetcher' => $vendorDir . '/ua-parser/uap-php/src/Util/Fetcher.php',
- 'UAParser\\Util\\Logfile\\AbstractReader' => $vendorDir . '/ua-parser/uap-php/src/Util/Logfile/AbstractReader.php',
- 'UAParser\\Util\\Logfile\\ApacheCommonLogFormatReader' => $vendorDir . '/ua-parser/uap-php/src/Util/Logfile/ApacheCommonLogFormatReader.php',
- 'UAParser\\Util\\Logfile\\ReaderInterface' => $vendorDir . '/ua-parser/uap-php/src/Util/Logfile/ReaderInterface.php',
'Webmozart\\Assert\\Assert' => $vendorDir . '/webmozart/assert/src/Assert.php',
'Whoops\\Exception\\ErrorException' => $vendorDir . '/filp/whoops/src/Whoops/Exception/ErrorException.php',
'Whoops\\Exception\\Formatter' => $vendorDir . '/filp/whoops/src/Whoops/Exception/Formatter.php',
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
index a06211f86..4f68deb12 100644
--- a/vendor/composer/autoload_files.php
+++ b/vendor/composer/autoload_files.php
@@ -13,16 +13,16 @@ return array(
'320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
'667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php',
'7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
- 'def43f6c87e4f8dfd0c9e1b1bab14fe8' => $vendorDir . '/symfony/polyfill-iconv/bootstrap.php',
'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
- '2c102faa651ef8ea5874edb585946bce' => $vendorDir . '/swiftmailer/swiftmailer/lib/swift_required.php',
+ 'def43f6c87e4f8dfd0c9e1b1bab14fe8' => $vendorDir . '/symfony/polyfill-iconv/bootstrap.php',
'37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
+ '2c102faa651ef8ea5874edb585946bce' => $vendorDir . '/swiftmailer/swiftmailer/lib/swift_required.php',
'e39a8b23c42d4e1452234d762b03835a' => $vendorDir . '/ramsey/uuid/src/functions.php',
'538ca81a9a966a6716601ecf48f4eaef' => $vendorDir . '/opis/closure/functions.php',
+ '34122c0574b76bf21c9a8db62b5b9cf3' => $vendorDir . '/cakephp/chronos/src/carbon_compat.php',
'f0906e6318348a765ffb6eb24e0d0938' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/helpers.php',
'58571171fd5812e6e447dce228f52f4d' => $vendorDir . '/laravel/framework/src/Illuminate/Support/helpers.php',
- '34122c0574b76bf21c9a8db62b5b9cf3' => $vendorDir . '/cakephp/chronos/src/carbon_compat.php',
'6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
'801c31d8ed748cfa537fa45402288c95' => $vendorDir . '/psy/psysh/src/functions.php',
'0d8253363903f0ac7b0978dcde4e28a0' => $vendorDir . '/beyondcode/laravel-dump-server/helpers.php',
diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php
index 195f0c41c..ff8b11b96 100644
--- a/vendor/composer/autoload_namespaces.php
+++ b/vendor/composer/autoload_namespaces.php
@@ -6,9 +6,6 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
- 'Snowplow\\RefererParser' => array($vendorDir . '/snowplow/referer-parser/php/src'),
'Parsedown' => array($vendorDir . '/erusev/parsedown'),
'Mockery' => array($vendorDir . '/mockery/mockery/library'),
- 'Detection' => array($vendorDir . '/mobiledetect/mobiledetectlib/namespaced'),
- 'Bllim\\Datatables' => array($vendorDir . '/pragmarx/datatables/src'),
);
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
index a52a6824f..a04a5e65b 100644
--- a/vendor/composer/autoload_psr4.php
+++ b/vendor/composer/autoload_psr4.php
@@ -10,7 +10,6 @@ return array(
'XdgBaseDir\\' => array($vendorDir . '/dnoegel/php-xdg-base-dir/src'),
'Whoops\\' => array($vendorDir . '/filp/whoops/src/Whoops'),
'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
- 'UAParser\\' => array($vendorDir . '/ua-parser/uap-php/src'),
'TijsVerkoyen\\CssToInlineStyles\\' => array($vendorDir . '/tijsverkoyen/css-to-inline-styles/src'),
'Tests\\' => array($baseDir . '/tests'),
'Symfony\\Polyfill\\Php73\\' => array($vendorDir . '/symfony/polyfill-php73'),
@@ -44,8 +43,6 @@ return array(
'Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src/Prophecy'),
'Predis\\' => array($vendorDir . '/predis/predis/src'),
- 'PragmaRX\\Tracker\\' => array($vendorDir . '/pragmarx/tracker/src'),
- 'PragmaRX\\Support\\' => array($vendorDir . '/pragmarx/support/src'),
'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'),
'PhpOption\\' => array($vendorDir . '/phpoption/phpoption/src/PhpOption'),
'Opis\\Closure\\' => array($vendorDir . '/opis/closure/src'),
@@ -57,8 +54,6 @@ return array(
'Laravel\\Socialite\\' => array($vendorDir . '/laravel/socialite/src'),
'Laravel\\Horizon\\' => array($vendorDir . '/laravel/horizon/src'),
'Khill\\Lavacharts\\' => array($vendorDir . '/khill/lavacharts/src'),
- 'Jenssegers\\Agent\\' => array($vendorDir . '/jenssegers/agent/src'),
- 'Jaybizzle\\CrawlerDetect\\' => array($vendorDir . '/jaybizzle/crawler-detect/src'),
'JakubOnderka\\PhpConsoleHighlighter\\' => array($vendorDir . '/jakub-onderka/php-console-highlighter/src'),
'JakubOnderka\\PhpConsoleColor\\' => array($vendorDir . '/jakub-onderka/php-console-color/src'),
'Illuminate\\' => array($vendorDir . '/laravel/framework/src/Illuminate'),
@@ -70,15 +65,11 @@ return array(
'Egulias\\EmailValidator\\' => array($vendorDir . '/egulias/email-validator/EmailValidator'),
'Dotenv\\' => array($vendorDir . '/vlucas/phpdotenv/src'),
'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'),
- 'Doctrine\\DBAL\\' => array($vendorDir . '/doctrine/dbal/lib/Doctrine/DBAL'),
'Doctrine\\Common\\Lexer\\' => array($vendorDir . '/doctrine/lexer/lib/Doctrine/Common/Lexer'),
'Doctrine\\Common\\Inflector\\' => array($vendorDir . '/doctrine/inflector/lib/Doctrine/Common/Inflector'),
- 'Doctrine\\Common\\Cache\\' => array($vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache'),
- 'Doctrine\\Common\\' => array($vendorDir . '/doctrine/event-manager/lib/Doctrine/Common'),
'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'),
'Cron\\' => array($vendorDir . '/dragonmantank/cron-expression/src/Cron'),
'ConsoleTVs\\Charts\\' => array($vendorDir . '/consoletvs/charts/src'),
- 'Composer\\CaBundle\\' => array($vendorDir . '/composer/ca-bundle/src'),
'Collective\\Html\\' => array($vendorDir . '/laravelcollective/html/src'),
'Carbon\\' => array($vendorDir . '/nesbot/carbon/src/Carbon'),
'Cake\\Chronos\\' => array($vendorDir . '/cakephp/chronos/src'),
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index 896b85d89..f0689edb5 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -14,16 +14,16 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
'667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php',
'7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
- 'def43f6c87e4f8dfd0c9e1b1bab14fe8' => __DIR__ . '/..' . '/symfony/polyfill-iconv/bootstrap.php',
'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
- '2c102faa651ef8ea5874edb585946bce' => __DIR__ . '/..' . '/swiftmailer/swiftmailer/lib/swift_required.php',
+ 'def43f6c87e4f8dfd0c9e1b1bab14fe8' => __DIR__ . '/..' . '/symfony/polyfill-iconv/bootstrap.php',
'37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
+ '2c102faa651ef8ea5874edb585946bce' => __DIR__ . '/..' . '/swiftmailer/swiftmailer/lib/swift_required.php',
'e39a8b23c42d4e1452234d762b03835a' => __DIR__ . '/..' . '/ramsey/uuid/src/functions.php',
'538ca81a9a966a6716601ecf48f4eaef' => __DIR__ . '/..' . '/opis/closure/functions.php',
+ '34122c0574b76bf21c9a8db62b5b9cf3' => __DIR__ . '/..' . '/cakephp/chronos/src/carbon_compat.php',
'f0906e6318348a765ffb6eb24e0d0938' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/helpers.php',
'58571171fd5812e6e447dce228f52f4d' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/helpers.php',
- '34122c0574b76bf21c9a8db62b5b9cf3' => __DIR__ . '/..' . '/cakephp/chronos/src/carbon_compat.php',
'6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
'801c31d8ed748cfa537fa45402288c95' => __DIR__ . '/..' . '/psy/psysh/src/functions.php',
'0d8253363903f0ac7b0978dcde4e28a0' => __DIR__ . '/..' . '/beyondcode/laravel-dump-server/helpers.php',
@@ -45,10 +45,6 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'Whoops\\' => 7,
'Webmozart\\Assert\\' => 17,
),
- 'U' =>
- array (
- 'UAParser\\' => 9,
- ),
'T' =>
array (
'TijsVerkoyen\\CssToInlineStyles\\' => 31,
@@ -93,8 +89,6 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'Psr\\Container\\' => 14,
'Prophecy\\' => 9,
'Predis\\' => 7,
- 'PragmaRX\\Tracker\\' => 17,
- 'PragmaRX\\Support\\' => 17,
'PhpParser\\' => 10,
'PhpOption\\' => 10,
),
@@ -124,8 +118,6 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
),
'J' =>
array (
- 'Jenssegers\\Agent\\' => 17,
- 'Jaybizzle\\CrawlerDetect\\' => 24,
'JakubOnderka\\PhpConsoleHighlighter\\' => 35,
'JakubOnderka\\PhpConsoleColor\\' => 29,
),
@@ -152,18 +144,14 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
array (
'Dotenv\\' => 7,
'Doctrine\\Instantiator\\' => 22,
- 'Doctrine\\DBAL\\' => 14,
'Doctrine\\Common\\Lexer\\' => 22,
'Doctrine\\Common\\Inflector\\' => 26,
- 'Doctrine\\Common\\Cache\\' => 22,
- 'Doctrine\\Common\\' => 16,
'DeepCopy\\' => 9,
),
'C' =>
array (
'Cron\\' => 5,
'ConsoleTVs\\Charts\\' => 18,
- 'Composer\\CaBundle\\' => 18,
'Collective\\Html\\' => 16,
'Carbon\\' => 7,
'Cake\\Chronos\\' => 13,
@@ -198,10 +186,6 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
array (
0 => __DIR__ . '/..' . '/webmozart/assert/src',
),
- 'UAParser\\' =>
- array (
- 0 => __DIR__ . '/..' . '/ua-parser/uap-php/src',
- ),
'TijsVerkoyen\\CssToInlineStyles\\' =>
array (
0 => __DIR__ . '/..' . '/tijsverkoyen/css-to-inline-styles/src',
@@ -334,14 +318,6 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
array (
0 => __DIR__ . '/..' . '/predis/predis/src',
),
- 'PragmaRX\\Tracker\\' =>
- array (
- 0 => __DIR__ . '/..' . '/pragmarx/tracker/src',
- ),
- 'PragmaRX\\Support\\' =>
- array (
- 0 => __DIR__ . '/..' . '/pragmarx/support/src',
- ),
'PhpParser\\' =>
array (
0 => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser',
@@ -386,14 +362,6 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
array (
0 => __DIR__ . '/..' . '/khill/lavacharts/src',
),
- 'Jenssegers\\Agent\\' =>
- array (
- 0 => __DIR__ . '/..' . '/jenssegers/agent/src',
- ),
- 'Jaybizzle\\CrawlerDetect\\' =>
- array (
- 0 => __DIR__ . '/..' . '/jaybizzle/crawler-detect/src',
- ),
'JakubOnderka\\PhpConsoleHighlighter\\' =>
array (
0 => __DIR__ . '/..' . '/jakub-onderka/php-console-highlighter/src',
@@ -438,10 +406,6 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
array (
0 => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator',
),
- 'Doctrine\\DBAL\\' =>
- array (
- 0 => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL',
- ),
'Doctrine\\Common\\Lexer\\' =>
array (
0 => __DIR__ . '/..' . '/doctrine/lexer/lib/Doctrine/Common/Lexer',
@@ -450,14 +414,6 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
array (
0 => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Common/Inflector',
),
- 'Doctrine\\Common\\Cache\\' =>
- array (
- 0 => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache',
- ),
- 'Doctrine\\Common\\' =>
- array (
- 0 => __DIR__ . '/..' . '/doctrine/event-manager/lib/Doctrine/Common',
- ),
'DeepCopy\\' =>
array (
0 => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy',
@@ -470,10 +426,6 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
array (
0 => __DIR__ . '/..' . '/consoletvs/charts/src',
),
- 'Composer\\CaBundle\\' =>
- array (
- 0 => __DIR__ . '/..' . '/composer/ca-bundle/src',
- ),
'Collective\\Html\\' =>
array (
0 => __DIR__ . '/..' . '/laravelcollective/html/src',
@@ -501,13 +453,6 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
);
public static $prefixesPsr0 = array (
- 'S' =>
- array (
- 'Snowplow\\RefererParser' =>
- array (
- 0 => __DIR__ . '/..' . '/snowplow/referer-parser/php/src',
- ),
- ),
'P' =>
array (
'Parsedown' =>
@@ -522,24 +467,9 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
0 => __DIR__ . '/..' . '/mockery/mockery/library',
),
),
- 'D' =>
- array (
- 'Detection' =>
- array (
- 0 => __DIR__ . '/..' . '/mobiledetect/mobiledetectlib/namespaced',
- ),
- ),
- 'B' =>
- array (
- 'Bllim\\Datatables' =>
- array (
- 0 => __DIR__ . '/..' . '/pragmarx/datatables/src',
- ),
- ),
);
public static $classMap = array (
- 'App\\Charts\\StructureFuelGauge' => __DIR__ . '/../..' . '/app/Charts/StructureFuelGauge.php',
'App\\Console\\Commands\\CleanStaleDataCommand' => __DIR__ . '/../..' . '/app/Console/Commands/Data/CleanStaleDataCommand.php',
'App\\Console\\Commands\\EmptyJumpBridges' => __DIR__ . '/../..' . '/app/Console/Commands/Data/EmptyJumpBridges.php',
'App\\Console\\Commands\\FlexStructureCommand' => __DIR__ . '/../..' . '/app/Console/Commands/Flex/FlexStructureCommand.php',
@@ -679,9 +609,6 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'BeyondCode\\DumpServer\\DumpServerServiceProvider' => __DIR__ . '/..' . '/beyondcode/laravel-dump-server/src/DumpServerServiceProvider.php',
'BeyondCode\\DumpServer\\Dumper' => __DIR__ . '/..' . '/beyondcode/laravel-dump-server/src/Dumper.php',
'BeyondCode\\DumpServer\\RequestContextProvider' => __DIR__ . '/..' . '/beyondcode/laravel-dump-server/src/RequestContextProvider.php',
- 'Bllim\\Datatables\\Datatables' => __DIR__ . '/..' . '/pragmarx/datatables/src/Bllim/Datatables/Datatables.php',
- 'Bllim\\Datatables\\DatatablesServiceProvider' => __DIR__ . '/..' . '/pragmarx/datatables/src/Bllim/Datatables/DatatablesServiceProvider.php',
- 'Bllim\\Datatables\\Facade\\Datatables' => __DIR__ . '/..' . '/pragmarx/datatables/src/Bllim/Datatables/Facade/Datatables.php',
'Cake\\Chronos\\Chronos' => __DIR__ . '/..' . '/cakephp/chronos/src/Chronos.php',
'Cake\\Chronos\\ChronosInterface' => __DIR__ . '/..' . '/cakephp/chronos/src/ChronosInterface.php',
'Cake\\Chronos\\ChronosInterval' => __DIR__ . '/..' . '/cakephp/chronos/src/ChronosInterval.php',
@@ -743,7 +670,6 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'Collective\\Html\\HtmlBuilder' => __DIR__ . '/..' . '/laravelcollective/html/src/HtmlBuilder.php',
'Collective\\Html\\HtmlFacade' => __DIR__ . '/..' . '/laravelcollective/html/src/HtmlFacade.php',
'Collective\\Html\\HtmlServiceProvider' => __DIR__ . '/..' . '/laravelcollective/html/src/HtmlServiceProvider.php',
- 'Composer\\CaBundle\\CaBundle' => __DIR__ . '/..' . '/composer/ca-bundle/src/CaBundle.php',
'ConfigTableSeeder' => __DIR__ . '/../..' . '/database/seeds/ConfigTableSeeder.php',
'ConsoleTVs\\Charts\\ChartsServiceProvider' => __DIR__ . '/..' . '/consoletvs/charts/src/ChartsServiceProvider.php',
'ConsoleTVs\\Charts\\Classes\\BaseChart' => __DIR__ . '/..' . '/consoletvs/charts/src/Classes/BaseChart.php',
@@ -806,295 +732,8 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'DeepCopy\\TypeFilter\\Spl\\SplDoublyLinkedListFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php',
'DeepCopy\\TypeFilter\\TypeFilter' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php',
'DeepCopy\\TypeMatcher\\TypeMatcher' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/TypeMatcher/TypeMatcher.php',
- 'Detection\\MobileDetect' => __DIR__ . '/..' . '/mobiledetect/mobiledetectlib/namespaced/Detection/MobileDetect.php',
- 'Doctrine\\Common\\Cache\\ApcCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/ApcCache.php',
- 'Doctrine\\Common\\Cache\\ApcuCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/ApcuCache.php',
- 'Doctrine\\Common\\Cache\\ArrayCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/ArrayCache.php',
- 'Doctrine\\Common\\Cache\\Cache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php',
- 'Doctrine\\Common\\Cache\\CacheProvider' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php',
- 'Doctrine\\Common\\Cache\\ChainCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/ChainCache.php',
- 'Doctrine\\Common\\Cache\\ClearableCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php',
- 'Doctrine\\Common\\Cache\\CouchbaseBucketCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/CouchbaseBucketCache.php',
- 'Doctrine\\Common\\Cache\\CouchbaseCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/CouchbaseCache.php',
- 'Doctrine\\Common\\Cache\\ExtMongoDBCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/ExtMongoDBCache.php',
- 'Doctrine\\Common\\Cache\\FileCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/FileCache.php',
- 'Doctrine\\Common\\Cache\\FilesystemCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/FilesystemCache.php',
- 'Doctrine\\Common\\Cache\\FlushableCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/FlushableCache.php',
- 'Doctrine\\Common\\Cache\\InvalidCacheId' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/InvalidCacheId.php',
- 'Doctrine\\Common\\Cache\\LegacyMongoDBCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/LegacyMongoDBCache.php',
- 'Doctrine\\Common\\Cache\\MemcacheCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/MemcacheCache.php',
- 'Doctrine\\Common\\Cache\\MemcachedCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/MemcachedCache.php',
- 'Doctrine\\Common\\Cache\\MongoDBCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/MongoDBCache.php',
- 'Doctrine\\Common\\Cache\\MultiDeleteCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/MultiDeleteCache.php',
- 'Doctrine\\Common\\Cache\\MultiGetCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/MultiGetCache.php',
- 'Doctrine\\Common\\Cache\\MultiOperationCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/MultiOperationCache.php',
- 'Doctrine\\Common\\Cache\\MultiPutCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/MultiPutCache.php',
- 'Doctrine\\Common\\Cache\\PhpFileCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/PhpFileCache.php',
- 'Doctrine\\Common\\Cache\\PredisCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/PredisCache.php',
- 'Doctrine\\Common\\Cache\\RedisCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/RedisCache.php',
- 'Doctrine\\Common\\Cache\\SQLite3Cache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/SQLite3Cache.php',
- 'Doctrine\\Common\\Cache\\Version' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/Version.php',
- 'Doctrine\\Common\\Cache\\VoidCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/VoidCache.php',
- 'Doctrine\\Common\\Cache\\WinCacheCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/WinCacheCache.php',
- 'Doctrine\\Common\\Cache\\XcacheCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/XcacheCache.php',
- 'Doctrine\\Common\\Cache\\ZendDataCache' => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache/ZendDataCache.php',
- 'Doctrine\\Common\\EventArgs' => __DIR__ . '/..' . '/doctrine/event-manager/lib/Doctrine/Common/EventArgs.php',
- 'Doctrine\\Common\\EventManager' => __DIR__ . '/..' . '/doctrine/event-manager/lib/Doctrine/Common/EventManager.php',
- 'Doctrine\\Common\\EventSubscriber' => __DIR__ . '/..' . '/doctrine/event-manager/lib/Doctrine/Common/EventSubscriber.php',
'Doctrine\\Common\\Inflector\\Inflector' => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Common/Inflector/Inflector.php',
'Doctrine\\Common\\Lexer\\AbstractLexer' => __DIR__ . '/..' . '/doctrine/lexer/lib/Doctrine/Common/Lexer/AbstractLexer.php',
- 'Doctrine\\DBAL\\Cache\\ArrayStatement' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Cache/ArrayStatement.php',
- 'Doctrine\\DBAL\\Cache\\CacheException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Cache/CacheException.php',
- 'Doctrine\\DBAL\\Cache\\QueryCacheProfile' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Cache/QueryCacheProfile.php',
- 'Doctrine\\DBAL\\Cache\\ResultCacheStatement' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Cache/ResultCacheStatement.php',
- 'Doctrine\\DBAL\\ColumnCase' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/ColumnCase.php',
- 'Doctrine\\DBAL\\Configuration' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Configuration.php',
- 'Doctrine\\DBAL\\Connection' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Connection.php',
- 'Doctrine\\DBAL\\ConnectionException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/ConnectionException.php',
- 'Doctrine\\DBAL\\Connections\\MasterSlaveConnection' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Connections/MasterSlaveConnection.php',
- 'Doctrine\\DBAL\\DBALException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php',
- 'Doctrine\\DBAL\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver.php',
- 'Doctrine\\DBAL\\DriverManager' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/DriverManager.php',
- 'Doctrine\\DBAL\\Driver\\AbstractDB2Driver' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractDB2Driver.php',
- 'Doctrine\\DBAL\\Driver\\AbstractDriverException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractDriverException.php',
- 'Doctrine\\DBAL\\Driver\\AbstractMySQLDriver' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php',
- 'Doctrine\\DBAL\\Driver\\AbstractOracleDriver' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractOracleDriver.php',
- 'Doctrine\\DBAL\\Driver\\AbstractOracleDriver\\EasyConnectString' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractOracleDriver/EasyConnectString.php',
- 'Doctrine\\DBAL\\Driver\\AbstractPostgreSQLDriver' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractPostgreSQLDriver.php',
- 'Doctrine\\DBAL\\Driver\\AbstractSQLAnywhereDriver' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractSQLAnywhereDriver.php',
- 'Doctrine\\DBAL\\Driver\\AbstractSQLServerDriver' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractSQLServerDriver.php',
- 'Doctrine\\DBAL\\Driver\\AbstractSQLiteDriver' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractSQLiteDriver.php',
- 'Doctrine\\DBAL\\Driver\\Connection' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/Connection.php',
- 'Doctrine\\DBAL\\Driver\\DriverException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/DriverException.php',
- 'Doctrine\\DBAL\\Driver\\DrizzlePDOMySql\\Connection' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/DrizzlePDOMySql/Connection.php',
- 'Doctrine\\DBAL\\Driver\\DrizzlePDOMySql\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/DrizzlePDOMySql/Driver.php',
- 'Doctrine\\DBAL\\Driver\\ExceptionConverterDriver' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/ExceptionConverterDriver.php',
- 'Doctrine\\DBAL\\Driver\\IBMDB2\\DB2Connection' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/IBMDB2/DB2Connection.php',
- 'Doctrine\\DBAL\\Driver\\IBMDB2\\DB2Driver' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/IBMDB2/DB2Driver.php',
- 'Doctrine\\DBAL\\Driver\\IBMDB2\\DB2Exception' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/IBMDB2/DB2Exception.php',
- 'Doctrine\\DBAL\\Driver\\IBMDB2\\DB2Statement' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/IBMDB2/DB2Statement.php',
- 'Doctrine\\DBAL\\Driver\\Mysqli\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/Mysqli/Driver.php',
- 'Doctrine\\DBAL\\Driver\\Mysqli\\MysqliConnection' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/Mysqli/MysqliConnection.php',
- 'Doctrine\\DBAL\\Driver\\Mysqli\\MysqliException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/Mysqli/MysqliException.php',
- 'Doctrine\\DBAL\\Driver\\Mysqli\\MysqliStatement' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/Mysqli/MysqliStatement.php',
- 'Doctrine\\DBAL\\Driver\\OCI8\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/OCI8/Driver.php',
- 'Doctrine\\DBAL\\Driver\\OCI8\\OCI8Connection' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/OCI8/OCI8Connection.php',
- 'Doctrine\\DBAL\\Driver\\OCI8\\OCI8Exception' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/OCI8/OCI8Exception.php',
- 'Doctrine\\DBAL\\Driver\\OCI8\\OCI8Statement' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/OCI8/OCI8Statement.php',
- 'Doctrine\\DBAL\\Driver\\PDOConnection' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php',
- 'Doctrine\\DBAL\\Driver\\PDOException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOException.php',
- 'Doctrine\\DBAL\\Driver\\PDOIbm\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOIbm/Driver.php',
- 'Doctrine\\DBAL\\Driver\\PDOMySql\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php',
- 'Doctrine\\DBAL\\Driver\\PDOOracle\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOOracle/Driver.php',
- 'Doctrine\\DBAL\\Driver\\PDOPgSql\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOPgSql/Driver.php',
- 'Doctrine\\DBAL\\Driver\\PDOSqlite\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOSqlite/Driver.php',
- 'Doctrine\\DBAL\\Driver\\PDOSqlsrv\\Connection' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOSqlsrv/Connection.php',
- 'Doctrine\\DBAL\\Driver\\PDOSqlsrv\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOSqlsrv/Driver.php',
- 'Doctrine\\DBAL\\Driver\\PDOSqlsrv\\Statement' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOSqlsrv/Statement.php',
- 'Doctrine\\DBAL\\Driver\\PDOStatement' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php',
- 'Doctrine\\DBAL\\Driver\\PingableConnection' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/PingableConnection.php',
- 'Doctrine\\DBAL\\Driver\\ResultStatement' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/ResultStatement.php',
- 'Doctrine\\DBAL\\Driver\\SQLAnywhere\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLAnywhere/Driver.php',
- 'Doctrine\\DBAL\\Driver\\SQLAnywhere\\SQLAnywhereConnection' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLAnywhere/SQLAnywhereConnection.php',
- 'Doctrine\\DBAL\\Driver\\SQLAnywhere\\SQLAnywhereException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLAnywhere/SQLAnywhereException.php',
- 'Doctrine\\DBAL\\Driver\\SQLAnywhere\\SQLAnywhereStatement' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLAnywhere/SQLAnywhereStatement.php',
- 'Doctrine\\DBAL\\Driver\\SQLSrv\\Driver' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLSrv/Driver.php',
- 'Doctrine\\DBAL\\Driver\\SQLSrv\\LastInsertId' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLSrv/LastInsertId.php',
- 'Doctrine\\DBAL\\Driver\\SQLSrv\\SQLSrvConnection' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvConnection.php',
- 'Doctrine\\DBAL\\Driver\\SQLSrv\\SQLSrvException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvException.php',
- 'Doctrine\\DBAL\\Driver\\SQLSrv\\SQLSrvStatement' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvStatement.php',
- 'Doctrine\\DBAL\\Driver\\ServerInfoAwareConnection' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/ServerInfoAwareConnection.php',
- 'Doctrine\\DBAL\\Driver\\Statement' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/Statement.php',
- 'Doctrine\\DBAL\\Driver\\StatementIterator' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Driver/StatementIterator.php',
- 'Doctrine\\DBAL\\Event\\ConnectionEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Event/ConnectionEventArgs.php',
- 'Doctrine\\DBAL\\Event\\Listeners\\MysqlSessionInit' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Event/Listeners/MysqlSessionInit.php',
- 'Doctrine\\DBAL\\Event\\Listeners\\OracleSessionInit' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Event/Listeners/OracleSessionInit.php',
- 'Doctrine\\DBAL\\Event\\Listeners\\SQLSessionInit' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Event/Listeners/SQLSessionInit.php',
- 'Doctrine\\DBAL\\Event\\SchemaAlterTableAddColumnEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableAddColumnEventArgs.php',
- 'Doctrine\\DBAL\\Event\\SchemaAlterTableChangeColumnEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableChangeColumnEventArgs.php',
- 'Doctrine\\DBAL\\Event\\SchemaAlterTableEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableEventArgs.php',
- 'Doctrine\\DBAL\\Event\\SchemaAlterTableRemoveColumnEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableRemoveColumnEventArgs.php',
- 'Doctrine\\DBAL\\Event\\SchemaAlterTableRenameColumnEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableRenameColumnEventArgs.php',
- 'Doctrine\\DBAL\\Event\\SchemaColumnDefinitionEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaColumnDefinitionEventArgs.php',
- 'Doctrine\\DBAL\\Event\\SchemaCreateTableColumnEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaCreateTableColumnEventArgs.php',
- 'Doctrine\\DBAL\\Event\\SchemaCreateTableEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaCreateTableEventArgs.php',
- 'Doctrine\\DBAL\\Event\\SchemaDropTableEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaDropTableEventArgs.php',
- 'Doctrine\\DBAL\\Event\\SchemaEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaEventArgs.php',
- 'Doctrine\\DBAL\\Event\\SchemaIndexDefinitionEventArgs' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaIndexDefinitionEventArgs.php',
- 'Doctrine\\DBAL\\Events' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Events.php',
- 'Doctrine\\DBAL\\Exception\\ConnectionException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/ConnectionException.php',
- 'Doctrine\\DBAL\\Exception\\ConstraintViolationException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/ConstraintViolationException.php',
- 'Doctrine\\DBAL\\Exception\\DatabaseObjectExistsException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/DatabaseObjectExistsException.php',
- 'Doctrine\\DBAL\\Exception\\DatabaseObjectNotFoundException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/DatabaseObjectNotFoundException.php',
- 'Doctrine\\DBAL\\Exception\\DeadlockException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/DeadlockException.php',
- 'Doctrine\\DBAL\\Exception\\DriverException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/DriverException.php',
- 'Doctrine\\DBAL\\Exception\\ForeignKeyConstraintViolationException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/ForeignKeyConstraintViolationException.php',
- 'Doctrine\\DBAL\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/InvalidArgumentException.php',
- 'Doctrine\\DBAL\\Exception\\InvalidFieldNameException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/InvalidFieldNameException.php',
- 'Doctrine\\DBAL\\Exception\\LockWaitTimeoutException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/LockWaitTimeoutException.php',
- 'Doctrine\\DBAL\\Exception\\NonUniqueFieldNameException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/NonUniqueFieldNameException.php',
- 'Doctrine\\DBAL\\Exception\\NotNullConstraintViolationException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/NotNullConstraintViolationException.php',
- 'Doctrine\\DBAL\\Exception\\ReadOnlyException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/ReadOnlyException.php',
- 'Doctrine\\DBAL\\Exception\\RetryableException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/RetryableException.php',
- 'Doctrine\\DBAL\\Exception\\ServerException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/ServerException.php',
- 'Doctrine\\DBAL\\Exception\\SyntaxErrorException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/SyntaxErrorException.php',
- 'Doctrine\\DBAL\\Exception\\TableExistsException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/TableExistsException.php',
- 'Doctrine\\DBAL\\Exception\\TableNotFoundException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/TableNotFoundException.php',
- 'Doctrine\\DBAL\\Exception\\UniqueConstraintViolationException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Exception/UniqueConstraintViolationException.php',
- 'Doctrine\\DBAL\\FetchMode' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/FetchMode.php',
- 'Doctrine\\DBAL\\Id\\TableGenerator' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Id/TableGenerator.php',
- 'Doctrine\\DBAL\\Id\\TableGeneratorSchemaVisitor' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Id/TableGeneratorSchemaVisitor.php',
- 'Doctrine\\DBAL\\LockMode' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/LockMode.php',
- 'Doctrine\\DBAL\\Logging\\DebugStack' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Logging/DebugStack.php',
- 'Doctrine\\DBAL\\Logging\\EchoSQLLogger' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Logging/EchoSQLLogger.php',
- 'Doctrine\\DBAL\\Logging\\LoggerChain' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Logging/LoggerChain.php',
- 'Doctrine\\DBAL\\Logging\\SQLLogger' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Logging/SQLLogger.php',
- 'Doctrine\\DBAL\\ParameterType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/ParameterType.php',
- 'Doctrine\\DBAL\\Platforms\\AbstractPlatform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/AbstractPlatform.php',
- 'Doctrine\\DBAL\\Platforms\\DB2Platform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/DB2Platform.php',
- 'Doctrine\\DBAL\\Platforms\\DateIntervalUnit' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/DateIntervalUnit.php',
- 'Doctrine\\DBAL\\Platforms\\DrizzlePlatform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/DrizzlePlatform.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\DB2Keywords' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/DB2Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\DrizzleKeywords' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/DrizzleKeywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\KeywordList' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/KeywordList.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\MariaDb102Keywords' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/MariaDb102Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\MsSQLKeywords' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/MsSQLKeywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\MySQL57Keywords' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/MySQL57Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\MySQL80Keywords' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/MySQL80Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\MySQLKeywords' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/MySQLKeywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\OracleKeywords' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/OracleKeywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\PostgreSQL100Keywords' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/PostgreSQL100Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\PostgreSQL91Keywords' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/PostgreSQL91Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\PostgreSQL92Keywords' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/PostgreSQL92Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\PostgreSQL94Keywords' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/PostgreSQL94Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\PostgreSQLKeywords' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/PostgreSQLKeywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\ReservedKeywordsValidator' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/ReservedKeywordsValidator.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLAnywhere11Keywords' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/SQLAnywhere11Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLAnywhere12Keywords' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/SQLAnywhere12Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLAnywhere16Keywords' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/SQLAnywhere16Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLAnywhereKeywords' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/SQLAnywhereKeywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLServer2005Keywords' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/SQLServer2005Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLServer2008Keywords' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/SQLServer2008Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLServer2012Keywords' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/SQLServer2012Keywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLServerKeywords' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/SQLServerKeywords.php',
- 'Doctrine\\DBAL\\Platforms\\Keywords\\SQLiteKeywords' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/SQLiteKeywords.php',
- 'Doctrine\\DBAL\\Platforms\\MariaDb1027Platform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MariaDb1027Platform.php',
- 'Doctrine\\DBAL\\Platforms\\MySQL57Platform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySQL57Platform.php',
- 'Doctrine\\DBAL\\Platforms\\MySQL80Platform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySQL80Platform.php',
- 'Doctrine\\DBAL\\Platforms\\MySqlPlatform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php',
- 'Doctrine\\DBAL\\Platforms\\OraclePlatform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/OraclePlatform.php',
- 'Doctrine\\DBAL\\Platforms\\PostgreSQL100Platform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSQL100Platform.php',
- 'Doctrine\\DBAL\\Platforms\\PostgreSQL91Platform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSQL91Platform.php',
- 'Doctrine\\DBAL\\Platforms\\PostgreSQL92Platform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSQL92Platform.php',
- 'Doctrine\\DBAL\\Platforms\\PostgreSQL94Platform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSQL94Platform.php',
- 'Doctrine\\DBAL\\Platforms\\PostgreSqlPlatform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSqlPlatform.php',
- 'Doctrine\\DBAL\\Platforms\\SQLAnywhere11Platform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLAnywhere11Platform.php',
- 'Doctrine\\DBAL\\Platforms\\SQLAnywhere12Platform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLAnywhere12Platform.php',
- 'Doctrine\\DBAL\\Platforms\\SQLAnywhere16Platform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLAnywhere16Platform.php',
- 'Doctrine\\DBAL\\Platforms\\SQLAnywherePlatform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLAnywherePlatform.php',
- 'Doctrine\\DBAL\\Platforms\\SQLAzurePlatform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLAzurePlatform.php',
- 'Doctrine\\DBAL\\Platforms\\SQLServer2005Platform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLServer2005Platform.php',
- 'Doctrine\\DBAL\\Platforms\\SQLServer2008Platform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLServer2008Platform.php',
- 'Doctrine\\DBAL\\Platforms\\SQLServer2012Platform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLServer2012Platform.php',
- 'Doctrine\\DBAL\\Platforms\\SQLServerPlatform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLServerPlatform.php',
- 'Doctrine\\DBAL\\Platforms\\SqlitePlatform' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SqlitePlatform.php',
- 'Doctrine\\DBAL\\Platforms\\TrimMode' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Platforms/TrimMode.php',
- 'Doctrine\\DBAL\\Portability\\Connection' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Portability/Connection.php',
- 'Doctrine\\DBAL\\Portability\\Statement' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Portability/Statement.php',
- 'Doctrine\\DBAL\\Query\\Expression\\CompositeExpression' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Query/Expression/CompositeExpression.php',
- 'Doctrine\\DBAL\\Query\\Expression\\ExpressionBuilder' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Query/Expression/ExpressionBuilder.php',
- 'Doctrine\\DBAL\\Query\\QueryBuilder' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Query/QueryBuilder.php',
- 'Doctrine\\DBAL\\Query\\QueryException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Query/QueryException.php',
- 'Doctrine\\DBAL\\SQLParserUtils' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/SQLParserUtils.php',
- 'Doctrine\\DBAL\\SQLParserUtilsException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/SQLParserUtilsException.php',
- 'Doctrine\\DBAL\\Schema\\AbstractAsset' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/AbstractAsset.php',
- 'Doctrine\\DBAL\\Schema\\AbstractSchemaManager' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php',
- 'Doctrine\\DBAL\\Schema\\Column' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Column.php',
- 'Doctrine\\DBAL\\Schema\\ColumnDiff' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/ColumnDiff.php',
- 'Doctrine\\DBAL\\Schema\\Comparator' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Comparator.php',
- 'Doctrine\\DBAL\\Schema\\Constraint' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Constraint.php',
- 'Doctrine\\DBAL\\Schema\\DB2SchemaManager' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/DB2SchemaManager.php',
- 'Doctrine\\DBAL\\Schema\\DrizzleSchemaManager' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/DrizzleSchemaManager.php',
- 'Doctrine\\DBAL\\Schema\\ForeignKeyConstraint' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/ForeignKeyConstraint.php',
- 'Doctrine\\DBAL\\Schema\\Identifier' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Identifier.php',
- 'Doctrine\\DBAL\\Schema\\Index' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Index.php',
- 'Doctrine\\DBAL\\Schema\\MySqlSchemaManager' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/MySqlSchemaManager.php',
- 'Doctrine\\DBAL\\Schema\\OracleSchemaManager' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/OracleSchemaManager.php',
- 'Doctrine\\DBAL\\Schema\\PostgreSqlSchemaManager' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/PostgreSqlSchemaManager.php',
- 'Doctrine\\DBAL\\Schema\\SQLAnywhereSchemaManager' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/SQLAnywhereSchemaManager.php',
- 'Doctrine\\DBAL\\Schema\\SQLServerSchemaManager' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/SQLServerSchemaManager.php',
- 'Doctrine\\DBAL\\Schema\\Schema' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Schema.php',
- 'Doctrine\\DBAL\\Schema\\SchemaConfig' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/SchemaConfig.php',
- 'Doctrine\\DBAL\\Schema\\SchemaDiff' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/SchemaDiff.php',
- 'Doctrine\\DBAL\\Schema\\SchemaException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/SchemaException.php',
- 'Doctrine\\DBAL\\Schema\\Sequence' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Sequence.php',
- 'Doctrine\\DBAL\\Schema\\SqliteSchemaManager' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/SqliteSchemaManager.php',
- 'Doctrine\\DBAL\\Schema\\Synchronizer\\AbstractSchemaSynchronizer' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Synchronizer/AbstractSchemaSynchronizer.php',
- 'Doctrine\\DBAL\\Schema\\Synchronizer\\SchemaSynchronizer' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Synchronizer/SchemaSynchronizer.php',
- 'Doctrine\\DBAL\\Schema\\Synchronizer\\SingleDatabaseSynchronizer' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Synchronizer/SingleDatabaseSynchronizer.php',
- 'Doctrine\\DBAL\\Schema\\Table' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Table.php',
- 'Doctrine\\DBAL\\Schema\\TableDiff' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/TableDiff.php',
- 'Doctrine\\DBAL\\Schema\\View' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/View.php',
- 'Doctrine\\DBAL\\Schema\\Visitor\\AbstractVisitor' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/AbstractVisitor.php',
- 'Doctrine\\DBAL\\Schema\\Visitor\\CreateSchemaSqlCollector' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/CreateSchemaSqlCollector.php',
- 'Doctrine\\DBAL\\Schema\\Visitor\\DropSchemaSqlCollector' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/DropSchemaSqlCollector.php',
- 'Doctrine\\DBAL\\Schema\\Visitor\\Graphviz' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/Graphviz.php',
- 'Doctrine\\DBAL\\Schema\\Visitor\\NamespaceVisitor' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/NamespaceVisitor.php',
- 'Doctrine\\DBAL\\Schema\\Visitor\\RemoveNamespacedAssets' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/RemoveNamespacedAssets.php',
- 'Doctrine\\DBAL\\Schema\\Visitor\\SchemaDiffVisitor' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/SchemaDiffVisitor.php',
- 'Doctrine\\DBAL\\Schema\\Visitor\\Visitor' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/Visitor.php',
- 'Doctrine\\DBAL\\Sharding\\PoolingShardConnection' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Sharding/PoolingShardConnection.php',
- 'Doctrine\\DBAL\\Sharding\\PoolingShardManager' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Sharding/PoolingShardManager.php',
- 'Doctrine\\DBAL\\Sharding\\SQLAzure\\SQLAzureFederationsSynchronizer' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Sharding/SQLAzure/SQLAzureFederationsSynchronizer.php',
- 'Doctrine\\DBAL\\Sharding\\SQLAzure\\SQLAzureShardManager' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Sharding/SQLAzure/SQLAzureShardManager.php',
- 'Doctrine\\DBAL\\Sharding\\SQLAzure\\Schema\\MultiTenantVisitor' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Sharding/SQLAzure/Schema/MultiTenantVisitor.php',
- 'Doctrine\\DBAL\\Sharding\\ShardChoser\\MultiTenantShardChoser' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Sharding/ShardChoser/MultiTenantShardChoser.php',
- 'Doctrine\\DBAL\\Sharding\\ShardChoser\\ShardChoser' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Sharding/ShardChoser/ShardChoser.php',
- 'Doctrine\\DBAL\\Sharding\\ShardManager' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Sharding/ShardManager.php',
- 'Doctrine\\DBAL\\Sharding\\ShardingException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Sharding/ShardingException.php',
- 'Doctrine\\DBAL\\Statement' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Statement.php',
- 'Doctrine\\DBAL\\Tools\\Console\\Command\\ImportCommand' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Tools/Console/Command/ImportCommand.php',
- 'Doctrine\\DBAL\\Tools\\Console\\Command\\ReservedWordsCommand' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Tools/Console/Command/ReservedWordsCommand.php',
- 'Doctrine\\DBAL\\Tools\\Console\\Command\\RunSqlCommand' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Tools/Console/Command/RunSqlCommand.php',
- 'Doctrine\\DBAL\\Tools\\Console\\ConsoleRunner' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Tools/Console/ConsoleRunner.php',
- 'Doctrine\\DBAL\\Tools\\Console\\Helper\\ConnectionHelper' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Tools/Console/Helper/ConnectionHelper.php',
- 'Doctrine\\DBAL\\Tools\\Dumper' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Tools/Dumper.php',
- 'Doctrine\\DBAL\\TransactionIsolationLevel' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/TransactionIsolationLevel.php',
- 'Doctrine\\DBAL\\Types\\ArrayType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/ArrayType.php',
- 'Doctrine\\DBAL\\Types\\BigIntType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/BigIntType.php',
- 'Doctrine\\DBAL\\Types\\BinaryType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/BinaryType.php',
- 'Doctrine\\DBAL\\Types\\BlobType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/BlobType.php',
- 'Doctrine\\DBAL\\Types\\BooleanType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/BooleanType.php',
- 'Doctrine\\DBAL\\Types\\ConversionException' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/ConversionException.php',
- 'Doctrine\\DBAL\\Types\\DateImmutableType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/DateImmutableType.php',
- 'Doctrine\\DBAL\\Types\\DateIntervalType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/DateIntervalType.php',
- 'Doctrine\\DBAL\\Types\\DateTimeImmutableType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeImmutableType.php',
- 'Doctrine\\DBAL\\Types\\DateTimeType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeType.php',
- 'Doctrine\\DBAL\\Types\\DateTimeTzImmutableType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeTzImmutableType.php',
- 'Doctrine\\DBAL\\Types\\DateTimeTzType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeTzType.php',
- 'Doctrine\\DBAL\\Types\\DateType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/DateType.php',
- 'Doctrine\\DBAL\\Types\\DecimalType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/DecimalType.php',
- 'Doctrine\\DBAL\\Types\\FloatType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/FloatType.php',
- 'Doctrine\\DBAL\\Types\\GuidType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/GuidType.php',
- 'Doctrine\\DBAL\\Types\\IntegerType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/IntegerType.php',
- 'Doctrine\\DBAL\\Types\\JsonArrayType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/JsonArrayType.php',
- 'Doctrine\\DBAL\\Types\\JsonType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/JsonType.php',
- 'Doctrine\\DBAL\\Types\\ObjectType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/ObjectType.php',
- 'Doctrine\\DBAL\\Types\\PhpDateTimeMappingType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/PhpDateTimeMappingType.php',
- 'Doctrine\\DBAL\\Types\\PhpIntegerMappingType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/PhpIntegerMappingType.php',
- 'Doctrine\\DBAL\\Types\\SimpleArrayType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/SimpleArrayType.php',
- 'Doctrine\\DBAL\\Types\\SmallIntType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/SmallIntType.php',
- 'Doctrine\\DBAL\\Types\\StringType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/StringType.php',
- 'Doctrine\\DBAL\\Types\\TextType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/TextType.php',
- 'Doctrine\\DBAL\\Types\\TimeImmutableType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/TimeImmutableType.php',
- 'Doctrine\\DBAL\\Types\\TimeType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/TimeType.php',
- 'Doctrine\\DBAL\\Types\\Type' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/Type.php',
- 'Doctrine\\DBAL\\Types\\TypeRegistry' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/TypeRegistry.php',
- 'Doctrine\\DBAL\\Types\\Types' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/Types.php',
- 'Doctrine\\DBAL\\Types\\VarDateTimeImmutableType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/VarDateTimeImmutableType.php',
- 'Doctrine\\DBAL\\Types\\VarDateTimeType' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Types/VarDateTimeType.php',
- 'Doctrine\\DBAL\\Version' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/Version.php',
- 'Doctrine\\DBAL\\VersionAwarePlatformDriver' => __DIR__ . '/..' . '/doctrine/dbal/lib/Doctrine/DBAL/VersionAwarePlatformDriver.php',
'Doctrine\\Instantiator\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php',
'Doctrine\\Instantiator\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php',
'Doctrine\\Instantiator\\Exception\\UnexpectedValueException' => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php',
@@ -2611,14 +2250,6 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'JakubOnderka\\PhpConsoleColor\\ConsoleColor' => __DIR__ . '/..' . '/jakub-onderka/php-console-color/src/ConsoleColor.php',
'JakubOnderka\\PhpConsoleColor\\InvalidStyleException' => __DIR__ . '/..' . '/jakub-onderka/php-console-color/src/InvalidStyleException.php',
'JakubOnderka\\PhpConsoleHighlighter\\Highlighter' => __DIR__ . '/..' . '/jakub-onderka/php-console-highlighter/src/Highlighter.php',
- 'Jaybizzle\\CrawlerDetect\\CrawlerDetect' => __DIR__ . '/..' . '/jaybizzle/crawler-detect/src/CrawlerDetect.php',
- 'Jaybizzle\\CrawlerDetect\\Fixtures\\AbstractProvider' => __DIR__ . '/..' . '/jaybizzle/crawler-detect/src/Fixtures/AbstractProvider.php',
- 'Jaybizzle\\CrawlerDetect\\Fixtures\\Crawlers' => __DIR__ . '/..' . '/jaybizzle/crawler-detect/src/Fixtures/Crawlers.php',
- 'Jaybizzle\\CrawlerDetect\\Fixtures\\Exclusions' => __DIR__ . '/..' . '/jaybizzle/crawler-detect/src/Fixtures/Exclusions.php',
- 'Jaybizzle\\CrawlerDetect\\Fixtures\\Headers' => __DIR__ . '/..' . '/jaybizzle/crawler-detect/src/Fixtures/Headers.php',
- 'Jenssegers\\Agent\\Agent' => __DIR__ . '/..' . '/jenssegers/agent/src/Agent.php',
- 'Jenssegers\\Agent\\AgentServiceProvider' => __DIR__ . '/..' . '/jenssegers/agent/src/AgentServiceProvider.php',
- 'Jenssegers\\Agent\\Facades\\Agent' => __DIR__ . '/..' . '/jenssegers/agent/src/Facades/Agent.php',
'JsonException' => __DIR__ . '/..' . '/symfony/polyfill-php73/Resources/stubs/JsonException.php',
'Khill\\Lavacharts\\Builders\\ChartBuilder' => __DIR__ . '/..' . '/khill/lavacharts/src/Builders/ChartBuilder.php',
'Khill\\Lavacharts\\Builders\\DashboardBuilder' => __DIR__ . '/..' . '/khill/lavacharts/src/Builders/DashboardBuilder.php',
@@ -2971,7 +2602,6 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'League\\OAuth1\\Client\\Signature\\PlainTextSignature' => __DIR__ . '/..' . '/league/oauth1-client/src/Client/Signature/PlainTextSignature.php',
'League\\OAuth1\\Client\\Signature\\Signature' => __DIR__ . '/..' . '/league/oauth1-client/src/Client/Signature/Signature.php',
'League\\OAuth1\\Client\\Signature\\SignatureInterface' => __DIR__ . '/..' . '/league/oauth1-client/src/Client/Signature/SignatureInterface.php',
- 'Mobile_Detect' => __DIR__ . '/..' . '/mobiledetect/mobiledetectlib/Mobile_Detect.php',
'Mockery' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery.php',
'Mockery\\Adapter\\Phpunit\\Legacy\\TestListenerForV5' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Adapter/Phpunit/Legacy/TestListenerForV5.php',
'Mockery\\Adapter\\Phpunit\\Legacy\\TestListenerForV6' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery/Adapter/Phpunit/Legacy/TestListenerForV6.php',
@@ -3853,131 +3483,6 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'PhpParser\\Parser\\Tokens' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Tokens.php',
'PhpParser\\PrettyPrinterAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php',
'PhpParser\\PrettyPrinter\\Standard' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php',
- 'PragmaRX\\Support\\CacheManager' => __DIR__ . '/..' . '/pragmarx/support/src/CacheManager.php',
- 'PragmaRX\\Support\\Config' => __DIR__ . '/..' . '/pragmarx/support/src/Config.php',
- 'PragmaRX\\Support\\CpfCnpj\\Cnpj' => __DIR__ . '/..' . '/pragmarx/support/src/CpfCnpj/Cnpj.php',
- 'PragmaRX\\Support\\CpfCnpj\\Cpf' => __DIR__ . '/..' . '/pragmarx/support/src/CpfCnpj/Cpf.php',
- 'PragmaRX\\Support\\CpfCnpj\\CpfCnpj' => __DIR__ . '/..' . '/pragmarx/support/src/CpfCnpj/CpfCnpj.php',
- 'PragmaRX\\Support\\DateTime' => __DIR__ . '/..' . '/pragmarx/support/src/DateTime.php',
- 'PragmaRX\\Support\\Debug\\Dumper' => __DIR__ . '/..' . '/pragmarx/support/src/Debug/Dumper.php',
- 'PragmaRX\\Support\\Debug\\HtmlDumper' => __DIR__ . '/..' . '/pragmarx/support/src/Debug/HtmlDumper.php',
- 'PragmaRX\\Support\\Environment' => __DIR__ . '/..' . '/pragmarx/support/src/Environment.php',
- 'PragmaRX\\Support\\Exceptions\\EnvironmentVariableNotSet' => __DIR__ . '/..' . '/pragmarx/support/src/Exceptions/EnvironmentVariableNotSet.php',
- 'PragmaRX\\Support\\Exceptions\\Exception' => __DIR__ . '/..' . '/pragmarx/support/src/Exceptions/Exception.php',
- 'PragmaRX\\Support\\Filesystem' => __DIR__ . '/..' . '/pragmarx/support/src/Filesystem.php',
- 'PragmaRX\\Support\\Finder' => __DIR__ . '/..' . '/pragmarx/support/src/Finder.php',
- 'PragmaRX\\Support\\GeoIp\\GeoIp' => __DIR__ . '/..' . '/pragmarx/support/src/GeoIp/GeoIp.php',
- 'PragmaRX\\Support\\GeoIp\\GeoIp1' => __DIR__ . '/..' . '/pragmarx/support/src/GeoIp/GeoIp1.php',
- 'PragmaRX\\Support\\GeoIp\\GeoIp2' => __DIR__ . '/..' . '/pragmarx/support/src/GeoIp/GeoIp2.php',
- 'PragmaRX\\Support\\GeoIp\\GeoIpAbstract' => __DIR__ . '/..' . '/pragmarx/support/src/GeoIp/GeoIpAbstract.php',
- 'PragmaRX\\Support\\GeoIp\\GeoIpContract' => __DIR__ . '/..' . '/pragmarx/support/src/GeoIp/GeoIpContract.php',
- 'PragmaRX\\Support\\GeoIp\\Updater' => __DIR__ . '/..' . '/pragmarx/support/src/GeoIp/Updater.php',
- 'PragmaRX\\Support\\ImporterExporter\\ImporterExporter' => __DIR__ . '/..' . '/pragmarx/support/src/ImporterExporter/ImporterExporter.php',
- 'PragmaRX\\Support\\Inflectors\\En' => __DIR__ . '/..' . '/pragmarx/support/src/Inflectors/En.php',
- 'PragmaRX\\Support\\Inflectors\\Inflector' => __DIR__ . '/..' . '/pragmarx/support/src/Inflectors/Inflector.php',
- 'PragmaRX\\Support\\Inflectors\\InflectorInterface' => __DIR__ . '/..' . '/pragmarx/support/src/Inflectors/InflectorInterface.php',
- 'PragmaRX\\Support\\Inflectors\\PtBr' => __DIR__ . '/..' . '/pragmarx/support/src/Inflectors/PtBr.php',
- 'PragmaRX\\Support\\IpAddress' => __DIR__ . '/..' . '/pragmarx/support/src/IpAddress.php',
- 'PragmaRX\\Support\\Migration' => __DIR__ . '/..' . '/pragmarx/support/src/Migration.php',
- 'PragmaRX\\Support\\PhpSession' => __DIR__ . '/..' . '/pragmarx/support/src/PhpSession.php',
- 'PragmaRX\\Support\\Response' => __DIR__ . '/..' . '/pragmarx/support/src/Response.php',
- 'PragmaRX\\Support\\ServiceProvider' => __DIR__ . '/..' . '/pragmarx/support/src/ServiceProvider.php',
- 'PragmaRX\\Support\\Timer' => __DIR__ . '/..' . '/pragmarx/support/src/Timer.php',
- 'PragmaRX\\Support\\YamlConfig' => __DIR__ . '/..' . '/pragmarx/support/src/YamlConfig.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Agent' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/Agent.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Connection' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/Connection.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Cookie' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/Cookie.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Device' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/Device.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Domain' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/Domain.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Error' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/Error.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Event' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/Event.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\EventLog' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/EventLog.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\GeoIp' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/GeoIp.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Language' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/Language.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Log' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/Log.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Path' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/Path.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Query' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/Query.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\QueryArgument' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/QueryArgument.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Referer' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/Referer.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Repository' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/Repository.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\RepositoryInterface' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/RepositoryInterface.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Route' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/Route.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\RoutePath' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/RoutePath.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\RoutePathParameter' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/RoutePathParameter.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\Session' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/Session.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\SqlQuery' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/SqlQuery.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\SqlQueryBinding' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/SqlQueryBinding.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\SqlQueryBindingParameter' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/SqlQueryBindingParameter.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\SqlQueryLog' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/SqlQueryLog.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\SystemClass' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/SystemClass.php',
- 'PragmaRX\\Tracker\\Data\\Repositories\\User' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/Repositories/User.php',
- 'PragmaRX\\Tracker\\Data\\RepositoryManager' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/RepositoryManager.php',
- 'PragmaRX\\Tracker\\Data\\RepositoryManagerInterface' => __DIR__ . '/..' . '/pragmarx/tracker/src/Data/RepositoryManagerInterface.php',
- 'PragmaRX\\Tracker\\Eventing\\EventStorage' => __DIR__ . '/..' . '/pragmarx/tracker/src/Eventing/EventStorage.php',
- 'PragmaRX\\Tracker\\Repositories\\Message' => __DIR__ . '/..' . '/pragmarx/tracker/src/Repositories/Message.php',
- 'PragmaRX\\Tracker\\Services\\Authentication' => __DIR__ . '/..' . '/pragmarx/tracker/src/Services/Authentication.php',
- 'PragmaRX\\Tracker\\Support\\Cache' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/Cache.php',
- 'PragmaRX\\Tracker\\Support\\CrawlerDetector' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/CrawlerDetector.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\CompileError' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/Exceptions/CompileError.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\CompileWarning' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/Exceptions/CompileWarning.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\CoreError' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/Exceptions/CoreError.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\CoreWarning' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/Exceptions/CoreWarning.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\Deprecated' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/Exceptions/Deprecated.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\Error' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/Exceptions/Error.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\ExceptionFactory' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/Exceptions/ExceptionFactory.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\Handler' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/Exceptions/Handler.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\Notice' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/Exceptions/Notice.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\Parse' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/Exceptions/Parse.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\RecoverableError' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/Exceptions/RecoverableError.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\Strict' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/Exceptions/Strict.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\UserDeprecated' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/Exceptions/UserDeprecated.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\UserError' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/Exceptions/UserError.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\UserNotice' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/Exceptions/UserNotice.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\UserWarning' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/Exceptions/UserWarning.php',
- 'PragmaRX\\Tracker\\Support\\Exceptions\\Warning' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/Exceptions/Warning.php',
- 'PragmaRX\\Tracker\\Support\\Filesystem' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/Filesystem.php',
- 'PragmaRX\\Tracker\\Support\\LanguageDetect' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/LanguageDetect.php',
- 'PragmaRX\\Tracker\\Support\\Migration' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/Migration.php',
- 'PragmaRX\\Tracker\\Support\\Minutes' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/Minutes.php',
- 'PragmaRX\\Tracker\\Support\\MobileDetect' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/MobileDetect.php',
- 'PragmaRX\\Tracker\\Support\\RefererParser' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/RefererParser.php',
- 'PragmaRX\\Tracker\\Support\\UserAgentParser' => __DIR__ . '/..' . '/pragmarx/tracker/src/Support/UserAgentParser.php',
- 'PragmaRX\\Tracker\\Tracker' => __DIR__ . '/..' . '/pragmarx/tracker/src/Tracker.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Artisan\\Base' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Artisan/Base.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Artisan\\Tables' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Artisan/Tables.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Artisan\\UpdateGeoIp' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Artisan/UpdateGeoIp.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Controllers\\Stats' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Controllers/Stats.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Facade' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Facade.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Middlewares\\Tracker' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Middlewares/Tracker.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Agent' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/Agent.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Base' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/Base.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Connection' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/Connection.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Cookie' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/Cookie.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Device' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/Device.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Domain' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/Domain.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Error' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/Error.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Event' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/Event.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\EventLog' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/EventLog.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\GeoIp' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/GeoIp.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Language' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/Language.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Log' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/Log.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Path' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/Path.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Query' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/Query.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\QueryArgument' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/QueryArgument.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Referer' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/Referer.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\RefererSearchTerm' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/RefererSearchTerm.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Route' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/Route.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\RoutePath' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/RoutePath.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\RoutePathParameter' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/RoutePathParameter.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\Session' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/Session.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\SqlQuery' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/SqlQuery.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\SqlQueryBinding' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/SqlQueryBinding.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\SqlQueryBindingParameter' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/SqlQueryBindingParameter.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\SqlQueryLog' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/SqlQueryLog.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\SystemClass' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/SystemClass.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Models\\User' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Models/User.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\ServiceProvider' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/ServiceProvider.php',
- 'PragmaRX\\Tracker\\Vendor\\Laravel\\Support\\Session' => __DIR__ . '/..' . '/pragmarx/tracker/src/Vendor/Laravel/Support/Session.php',
'Predis\\Autoloader' => __DIR__ . '/..' . '/predis/predis/src/Autoloader.php',
'Predis\\Client' => __DIR__ . '/..' . '/predis/predis/src/Client.php',
'Predis\\ClientContextInterface' => __DIR__ . '/..' . '/predis/predis/src/ClientContextInterface.php',
@@ -4675,14 +4180,6 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'SebastianBergmann\\Timer\\RuntimeException' => __DIR__ . '/..' . '/phpunit/php-timer/src/RuntimeException.php',
'SebastianBergmann\\Timer\\Timer' => __DIR__ . '/..' . '/phpunit/php-timer/src/Timer.php',
'SebastianBergmann\\Version' => __DIR__ . '/..' . '/sebastian/version/src/Version.php',
- 'Snowplow\\RefererParser\\Config\\ConfigFileReaderTrait' => __DIR__ . '/..' . '/snowplow/referer-parser/php/src/Snowplow/RefererParser/Config/ConfigFileReaderTrait.php',
- 'Snowplow\\RefererParser\\Config\\ConfigReaderInterface' => __DIR__ . '/..' . '/snowplow/referer-parser/php/src/Snowplow/RefererParser/Config/ConfigReaderInterface.php',
- 'Snowplow\\RefererParser\\Config\\JsonConfigReader' => __DIR__ . '/..' . '/snowplow/referer-parser/php/src/Snowplow/RefererParser/Config/JsonConfigReader.php',
- 'Snowplow\\RefererParser\\Config\\YamlConfigReader' => __DIR__ . '/..' . '/snowplow/referer-parser/php/src/Snowplow/RefererParser/Config/YamlConfigReader.php',
- 'Snowplow\\RefererParser\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/snowplow/referer-parser/php/src/Snowplow/RefererParser/Exception/InvalidArgumentException.php',
- 'Snowplow\\RefererParser\\Medium' => __DIR__ . '/..' . '/snowplow/referer-parser/php/src/Snowplow/RefererParser/Medium.php',
- 'Snowplow\\RefererParser\\Parser' => __DIR__ . '/..' . '/snowplow/referer-parser/php/src/Snowplow/RefererParser/Parser.php',
- 'Snowplow\\RefererParser\\Referer' => __DIR__ . '/..' . '/snowplow/referer-parser/php/src/Snowplow/RefererParser/Referer.php',
'SolarSystemSeeder' => __DIR__ . '/../..' . '/database/seeds/SolarSystemSeeder.php',
'Symfony\\Component\\Console\\Application' => __DIR__ . '/..' . '/symfony/console/Application.php',
'Symfony\\Component\\Console\\CommandLoader\\CommandLoaderInterface' => __DIR__ . '/..' . '/symfony/console/CommandLoader/CommandLoaderInterface.php',
@@ -5425,33 +4922,6 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'TijsVerkoyen\\CssToInlineStyles\\Css\\Property\\Property' => __DIR__ . '/..' . '/tijsverkoyen/css-to-inline-styles/src/Css/Property/Property.php',
'TijsVerkoyen\\CssToInlineStyles\\Css\\Rule\\Processor' => __DIR__ . '/..' . '/tijsverkoyen/css-to-inline-styles/src/Css/Rule/Processor.php',
'TijsVerkoyen\\CssToInlineStyles\\Css\\Rule\\Rule' => __DIR__ . '/..' . '/tijsverkoyen/css-to-inline-styles/src/Css/Rule/Rule.php',
- 'UAParser\\AbstractParser' => __DIR__ . '/..' . '/ua-parser/uap-php/src/AbstractParser.php',
- 'UAParser\\Command\\ConvertCommand' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Command/ConvertCommand.php',
- 'UAParser\\Command\\FetchCommand' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Command/FetchCommand.php',
- 'UAParser\\Command\\LogfileCommand' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Command/LogfileCommand.php',
- 'UAParser\\Command\\ParserCommand' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Command/ParserCommand.php',
- 'UAParser\\Command\\UpdateCommand' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Command/UpdateCommand.php',
- 'UAParser\\DeviceParser' => __DIR__ . '/..' . '/ua-parser/uap-php/src/DeviceParser.php',
- 'UAParser\\Exception\\DomainException' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Exception/DomainException.php',
- 'UAParser\\Exception\\FetcherException' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Exception/FetcherException.php',
- 'UAParser\\Exception\\FileNotFoundException' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Exception/FileNotFoundException.php',
- 'UAParser\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Exception/InvalidArgumentException.php',
- 'UAParser\\Exception\\ReaderException' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Exception/ReaderException.php',
- 'UAParser\\OperatingSystemParser' => __DIR__ . '/..' . '/ua-parser/uap-php/src/OperatingSystemParser.php',
- 'UAParser\\Parser' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Parser.php',
- 'UAParser\\Result\\AbstractClient' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Result/AbstractClient.php',
- 'UAParser\\Result\\AbstractSoftware' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Result/AbstractSoftware.php',
- 'UAParser\\Result\\AbstractVersionedSoftware' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Result/AbstractVersionedSoftware.php',
- 'UAParser\\Result\\Client' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Result/Client.php',
- 'UAParser\\Result\\Device' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Result/Device.php',
- 'UAParser\\Result\\OperatingSystem' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Result/OperatingSystem.php',
- 'UAParser\\Result\\UserAgent' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Result/UserAgent.php',
- 'UAParser\\UserAgentParser' => __DIR__ . '/..' . '/ua-parser/uap-php/src/UserAgentParser.php',
- 'UAParser\\Util\\Converter' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Util/Converter.php',
- 'UAParser\\Util\\Fetcher' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Util/Fetcher.php',
- 'UAParser\\Util\\Logfile\\AbstractReader' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Util/Logfile/AbstractReader.php',
- 'UAParser\\Util\\Logfile\\ApacheCommonLogFormatReader' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Util/Logfile/ApacheCommonLogFormatReader.php',
- 'UAParser\\Util\\Logfile\\ReaderInterface' => __DIR__ . '/..' . '/ua-parser/uap-php/src/Util/Logfile/ReaderInterface.php',
'Webmozart\\Assert\\Assert' => __DIR__ . '/..' . '/webmozart/assert/src/Assert.php',
'Whoops\\Exception\\ErrorException' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Exception/ErrorException.php',
'Whoops\\Exception\\Formatter' => __DIR__ . '/..' . '/filp/whoops/src/Whoops/Exception/Formatter.php',
diff --git a/vendor/composer/ca-bundle/LICENSE b/vendor/composer/ca-bundle/LICENSE
deleted file mode 100644
index c5b5220e8..000000000
--- a/vendor/composer/ca-bundle/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (C) 2016 Composer
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/composer/ca-bundle/README.md b/vendor/composer/ca-bundle/README.md
deleted file mode 100644
index d8205ec53..000000000
--- a/vendor/composer/ca-bundle/README.md
+++ /dev/null
@@ -1,85 +0,0 @@
-composer/ca-bundle
-==================
-
-Small utility library that lets you find a path to the system CA bundle,
-and includes a fallback to the Mozilla CA bundle.
-
-Originally written as part of [composer/composer](https://github.com/composer/composer),
-now extracted and made available as a stand-alone library.
-
-
-Installation
-------------
-
-Install the latest version with:
-
-```bash
-$ composer require composer/ca-bundle
-```
-
-
-Requirements
-------------
-
-* PHP 5.3.2 is required but using the latest version of PHP is highly recommended.
-
-
-Basic usage
------------
-
-### `Composer\CaBundle\CaBundle`
-
-- `CaBundle::getSystemCaRootBundlePath()`: Returns the system CA bundle path, or a path to the bundled one as fallback
-- `CaBundle::getBundledCaBundlePath()`: Returns the path to the bundled CA file
-- `CaBundle::validateCaFile($filename)`: Validates a CA file using openssl_x509_parse only if it is safe to use
-- `CaBundle::isOpensslParseSafe()`: Test if it is safe to use the PHP function openssl_x509_parse()
-- `CaBundle::reset()`: Resets the static caches
-
-
-#### To use with curl
-
-```php
-$curl = curl_init("https://example.org/");
-
-$caPathOrFile = \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath();
-if (is_dir($caPathOrFile)) {
- curl_setopt($curl, CURLOPT_CAPATH, $caPathOrFile);
-} else {
- curl_setopt($curl, CURLOPT_CAINFO, $caPathOrFile);
-}
-
-$result = curl_exec($curl);
-```
-
-#### To use with php streams
-
-```php
-$opts = array(
- 'http' => array(
- 'method' => "GET"
- )
-);
-
-$caPathOrFile = \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath();
-if (is_dir($caPathOrFile)) {
- $opts['ssl']['capath'] = $caPathOrFile;
-} else {
- $opts['ssl']['cafile'] = $caPathOrFile;
-}
-
-$context = stream_context_create($opts);
-$result = file_get_contents('https://example.com', false, $context);
-```
-
-#### To use with Guzzle
-
-```php
-$client = new \GuzzleHttp\Client([
- \GuzzleHttp\RequestOptions::VERIFY => \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath()
-]);
-```
-
-License
--------
-
-composer/ca-bundle is licensed under the MIT License, see the LICENSE file for details.
diff --git a/vendor/composer/ca-bundle/composer.json b/vendor/composer/ca-bundle/composer.json
deleted file mode 100644
index 22de0a892..000000000
--- a/vendor/composer/ca-bundle/composer.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "name": "composer/ca-bundle",
- "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
- "type": "library",
- "license": "MIT",
- "keywords": [
- "cabundle",
- "cacert",
- "certificate",
- "ssl",
- "tls"
- ],
- "authors": [
- {
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
- }
- ],
- "support": {
- "irc": "irc://irc.freenode.org/composer",
- "issues": "https://github.com/composer/ca-bundle/issues"
- },
- "require": {
- "ext-openssl": "*",
- "ext-pcre": "*",
- "php": "^5.3.2 || ^7.0 || ^8.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8",
- "psr/log": "^1.0",
- "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0"
- },
- "autoload": {
- "psr-4": {
- "Composer\\CaBundle\\": "src"
- }
- },
- "autoload-dev": {
- "psr-4": {
- "Composer\\CaBundle\\": "tests"
- }
- },
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "config": {
- "platform": {
- "php": "5.3.9"
- }
- }
-}
diff --git a/vendor/composer/ca-bundle/res/cacert.pem b/vendor/composer/ca-bundle/res/cacert.pem
deleted file mode 100644
index 7ad01f31e..000000000
--- a/vendor/composer/ca-bundle/res/cacert.pem
+++ /dev/null
@@ -1,3432 +0,0 @@
-##
-## Bundle of CA Root Certificates
-##
-## Certificate data from Mozilla as of: Wed Nov 27 04:12:10 2019 GMT
-##
-## This is a bundle of X.509 certificates of public Certificate Authorities
-## (CA). These were automatically extracted from Mozilla's root certificates
-## file (certdata.txt). This file can be found in the mozilla source tree:
-## https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt
-##
-## It contains the certificates in PEM format and therefore
-## can be directly used with curl / libcurl / php_curl, or with
-## an Apache+mod_ssl webserver for SSL client authentication.
-## Just configure this file as the SSLCACertificateFile.
-##
-## Conversion done with mk-ca-bundle.pl version 1.27.
-## SHA256: 607309057d0ec70f8e4e97b03906bafb2fcebb24cd37b5e8293e681ae26ceae0
-##
-
-
-GlobalSign Root CA
-==================
------BEGIN CERTIFICATE-----
-MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx
-GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds
-b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV
-BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD
-VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa
-DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc
-THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb
-Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP
-c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX
-gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
-HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF
-AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj
-Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG
-j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH
-hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
-X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
------END CERTIFICATE-----
-
-GlobalSign Root CA - R2
-=======================
------BEGIN CERTIFICATE-----
-MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
-YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
-bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
-aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
-bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
-ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
-s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
-S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
-TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
-ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
-FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
-YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
-BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
-9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
-01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
-9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
-TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
------END CERTIFICATE-----
-
-Verisign Class 3 Public Primary Certification Authority - G3
-============================================================
------BEGIN CERTIFICATE-----
-MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
-UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
-cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
-IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
-dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
-CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
-dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
-cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg
-Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
-ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1
-EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc
-cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw
-EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj
-055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
-ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f
-j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC
-/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0
-xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa
-t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
------END CERTIFICATE-----
-
-Entrust.net Premium 2048 Secure Server CA
-=========================================
------BEGIN CERTIFICATE-----
-MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
-ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp
-bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
-BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx
-NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
-d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
-MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
-ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
-MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL
-Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr
-hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW
-nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi
-VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E
-BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ
-KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy
-T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf
-zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT
-J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e
-nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE=
------END CERTIFICATE-----
-
-Baltimore CyberTrust Root
-=========================
------BEGIN CERTIFICATE-----
-MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE
-ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li
-ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC
-SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs
-dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME
-uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB
-UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C
-G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9
-XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr
-l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI
-VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
-BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh
-cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5
-hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa
-Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
-RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
------END CERTIFICATE-----
-
-AddTrust External Root
-======================
------BEGIN CERTIFICATE-----
-MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
-QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD
-VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw
-NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU
-cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg
-Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821
-+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw
-Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo
-aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy
-2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7
-7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P
-BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL
-VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk
-VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB
-IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl
-j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
-6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355
-e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
-G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
------END CERTIFICATE-----
-
-Entrust Root Certification Authority
-====================================
------BEGIN CERTIFICATE-----
-MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV
-BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw
-b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG
-A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0
-MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu
-MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu
-Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v
-dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
-ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz
-A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww
-Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68
-j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN
-rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw
-DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1
-MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH
-hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
-A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM
-Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa
-v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS
-W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
-tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
------END CERTIFICATE-----
-
-GeoTrust Global CA
-==================
------BEGIN CERTIFICATE-----
-MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
-Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw
-MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
-LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
-CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo
-BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet
-8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc
-T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU
-vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD
-AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk
-DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q
-zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4
-d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2
-mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p
-XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
-Mw==
------END CERTIFICATE-----
-
-GeoTrust Universal CA
-=====================
------BEGIN CERTIFICATE-----
-MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
-R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1
-MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu
-Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
-ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t
-JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e
-RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs
-7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d
-8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V
-qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga
-Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB
-Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu
-KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08
-ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0
-XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB
-hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc
-aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2
-qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL
-oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK
-xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF
-KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2
-DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK
-xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU
-p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI
-P/rmMuGNG2+k5o7Y+SlIis5z/iw=
------END CERTIFICATE-----
-
-GeoTrust Universal CA 2
-=======================
------BEGIN CERTIFICATE-----
-MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
-R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0
-MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg
-SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA
-A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0
-DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17
-j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q
-JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a
-QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2
-WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP
-20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn
-ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC
-SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG
-8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2
-+/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E
-BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z
-dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ
-4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+
-mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq
-A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg
-Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP
-pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d
-FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp
-gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm
-X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
------END CERTIFICATE-----
-
-Comodo AAA Services root
-========================
------BEGIN CERTIFICATE-----
-MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
-R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
-TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw
-MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl
-c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
-BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
-ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG
-C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs
-i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW
-Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH
-Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK
-Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f
-BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl
-cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz
-LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm
-7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
-Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
-8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C
-12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
------END CERTIFICATE-----
-
-QuoVadis Root CA
-================
------BEGIN CERTIFICATE-----
-MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE
-ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
-eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz
-MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp
-cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD
-EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
-AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk
-J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL
-F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL
-YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen
-AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w
-PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y
-ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7
-MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj
-YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
-ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
-Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW
-Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu
-BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw
-FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0
-aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6
-tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo
-fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul
-LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x
-gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi
-5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi
-5nrQNiOKSnQ2+Q==
------END CERTIFICATE-----
-
-QuoVadis Root CA 2
-==================
------BEGIN CERTIFICATE-----
-MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
-EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx
-ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
-aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC
-DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6
-XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk
-lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB
-lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy
-lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt
-66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn
-wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh
-D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy
-BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie
-J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud
-DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU
-a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT
-ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv
-Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3
-UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm
-VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK
-+JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW
-IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1
-WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X
-f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II
-4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8
-VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u
------END CERTIFICATE-----
-
-QuoVadis Root CA 3
-==================
------BEGIN CERTIFICATE-----
-MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
-EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx
-OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
-aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
-DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg
-DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij
-KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K
-DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv
-BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp
-p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8
-nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX
-MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM
-Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz
-uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT
-BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj
-YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
-aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB
-BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD
-VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4
-ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE
-AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV
-qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s
-hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z
-POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2
-Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp
-8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC
-bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu
-g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p
-vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
-qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
------END CERTIFICATE-----
-
-Security Communication Root CA
-==============================
------BEGIN CERTIFICATE-----
-MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
-U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
-HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
-U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
-ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw
-8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM
-DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX
-5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd
-DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2
-JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw
-DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g
-0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a
-mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ
-s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
-6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
-FL39vmwLAw==
------END CERTIFICATE-----
-
-Sonera Class 2 Root CA
-======================
------BEGIN CERTIFICATE-----
-MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
-U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw
-NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
-IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3
-/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT
-dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG
-f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P
-tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH
-nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT
-XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt
-0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI
-cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph
-Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx
-EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
-llpwrN9M
------END CERTIFICATE-----
-
-XRamp Global CA Root
-====================
------BEGIN CERTIFICATE-----
-MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE
-BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj
-dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
-dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx
-HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg
-U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
-dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu
-IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx
-foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE
-zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs
-AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry
-xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
-EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap
-oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC
-AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc
-/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
-qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n
-nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz
-8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw=
------END CERTIFICATE-----
-
-Go Daddy Class 2 CA
-===================
------BEGIN CERTIFICATE-----
-MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
-VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp
-ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG
-A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g
-RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD
-ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv
-2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32
-qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j
-YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY
-vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O
-BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o
-atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu
-MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG
-A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim
-PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt
-I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
-HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI
-Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b
-vZ8=
------END CERTIFICATE-----
-
-Starfield Class 2 CA
-====================
------BEGIN CERTIFICATE-----
-MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc
-U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg
-Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo
-MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG
-A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG
-SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY
-bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ
-JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm
-epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN
-F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF
-MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f
-hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo
-bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g
-QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs
-afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM
-PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
-xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD
-KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
-QBFGmh95DmK/D5fs4C8fF5Q=
------END CERTIFICATE-----
-
-Taiwan GRCA
-===========
------BEGIN CERTIFICATE-----
-MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG
-EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X
-DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv
-dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD
-ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN
-w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5
-BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O
-1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO
-htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov
-J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7
-Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t
-B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB
-O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8
-lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV
-HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2
-09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ
-TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj
-Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2
-Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU
-D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz
-DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk
-Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk
-7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ
-CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy
-+fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS
------END CERTIFICATE-----
-
-DigiCert Assured ID Root CA
-===========================
------BEGIN CERTIFICATE-----
-MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG
-EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
-IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx
-MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
-ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew
-ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO
-9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy
-UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW
-/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy
-oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf
-GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF
-66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq
-hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc
-EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn
-SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i
-8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
-+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
------END CERTIFICATE-----
-
-DigiCert Global Root CA
-=======================
------BEGIN CERTIFICATE-----
-MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG
-EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
-HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw
-MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
-dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq
-hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn
-TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5
-BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H
-4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y
-7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB
-o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm
-8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF
-BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr
-EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt
-tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886
-UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
-CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
------END CERTIFICATE-----
-
-DigiCert High Assurance EV Root CA
-==================================
------BEGIN CERTIFICATE-----
-MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG
-EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw
-KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw
-MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
-MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu
-Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t
-Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS
-OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3
-MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ
-NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe
-h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB
-Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY
-JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ
-V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp
-myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK
-mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
-vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
------END CERTIFICATE-----
-
-DST Root CA X3
-==============
------BEGIN CERTIFICATE-----
-MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK
-ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X
-DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1
-cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD
-ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT
-rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9
-UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy
-xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d
-utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T
-AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ
-MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug
-dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE
-GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw
-RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS
-fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
------END CERTIFICATE-----
-
-SwissSign Gold CA - G2
-======================
------BEGIN CERTIFICATE-----
-MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw
-EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN
-MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp
-c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B
-AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq
-t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C
-jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg
-vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF
-ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR
-AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend
-jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO
-peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR
-7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi
-GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw
-AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64
-OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov
-L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm
-5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr
-44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf
-Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m
-Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp
-mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk
-vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf
-KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br
-NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj
-viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ
------END CERTIFICATE-----
-
-SwissSign Silver CA - G2
-========================
------BEGIN CERTIFICATE-----
-MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT
-BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X
-DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3
-aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG
-9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644
-N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm
-+/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH
-6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu
-MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h
-qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5
-FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs
-ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc
-celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X
-CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/
-BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB
-tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0
-cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P
-4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F
-kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L
-3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx
-/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa
-DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP
-e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu
-WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ
-DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub
-DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u
------END CERTIFICATE-----
-
-GeoTrust Primary Certification Authority
-========================================
------BEGIN CERTIFICATE-----
-MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG
-EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD
-ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx
-CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ
-cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
-CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN
-b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9
-nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge
-RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt
-tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
-AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI
-hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K
-Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN
-NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa
-Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG
-1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
------END CERTIFICATE-----
-
-thawte Primary Root CA
-======================
------BEGIN CERTIFICATE-----
-MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE
-BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
-aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
-cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3
-MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg
-SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv
-KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT
-FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs
-oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ
-1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc
-q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K
-aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p
-afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD
-VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF
-AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE
-uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
-xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89
-jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH
-z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==
------END CERTIFICATE-----
-
-VeriSign Class 3 Public Primary Certification Authority - G5
-============================================================
------BEGIN CERTIFICATE-----
-MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
-BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
-ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
-IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp
-ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB
-yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln
-biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh
-dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt
-YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
-ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz
-j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD
-Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/
-Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r
-fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/
-BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv
-Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
-aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG
-SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+
-X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE
-KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC
-Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE
-ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
------END CERTIFICATE-----
-
-SecureTrust CA
-==============
------BEGIN CERTIFICATE-----
-MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG
-EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy
-dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe
-BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC
-ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX
-OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t
-DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH
-GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b
-01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH
-ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
-BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj
-aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
-KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu
-SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf
-mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ
-nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
-3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
------END CERTIFICATE-----
-
-Secure Global CA
-================
------BEGIN CERTIFICATE-----
-MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG
-EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH
-bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg
-MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg
-Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx
-YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ
-bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g
-8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV
-HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi
-0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
-EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn
-oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA
-MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+
-OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn
-CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5
-3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
-f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
------END CERTIFICATE-----
-
-COMODO Certification Authority
-==============================
------BEGIN CERTIFICATE-----
-MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE
-BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
-A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1
-dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb
-MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD
-T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH
-+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww
-xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV
-4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA
-1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI
-rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E
-BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k
-b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC
-AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP
-OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
-RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc
-IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
-+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
------END CERTIFICATE-----
-
-Network Solutions Certificate Authority
-=======================================
------BEGIN CERTIFICATE-----
-MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG
-EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr
-IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx
-MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
-MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
-CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx
-jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT
-aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT
-crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc
-/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB
-AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP
-BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv
-bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA
-A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q
-4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/
-GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
-wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
-ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
------END CERTIFICATE-----
-
-COMODO ECC Certification Authority
-==================================
------BEGIN CERTIFICATE-----
-MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC
-R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
-ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB
-dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix
-GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
-Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo
-b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X
-4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni
-wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E
-BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG
-FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
-U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
------END CERTIFICATE-----
-
-OISTE WISeKey Global Root GA CA
-===============================
------BEGIN CERTIFICATE-----
-MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE
-BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG
-A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH
-bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD
-VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw
-IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5
-IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9
-Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg
-Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD
-d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ
-/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R
-LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
-AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
-KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm
-MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4
-+vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa
-hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY
-okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
------END CERTIFICATE-----
-
-Certigna
-========
------BEGIN CERTIFICATE-----
-MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw
-EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3
-MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI
-Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q
-XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH
-GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p
-ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg
-DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf
-Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ
-tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ
-BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J
-SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA
-hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+
-ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu
-PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
-1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
-WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
------END CERTIFICATE-----
-
-Cybertrust Global Root
-======================
------BEGIN CERTIFICATE-----
-MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
-ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
-MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
-ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
-+Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
-0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
-AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
-89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
-8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
-BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
-MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
-A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
-lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
-5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
-hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
-X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
-WL1WMRJOEcgh4LMRkWXbtKaIOM5V
------END CERTIFICATE-----
-
-ePKI Root Certification Authority
-=================================
------BEGIN CERTIFICATE-----
-MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG
-EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg
-Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx
-MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq
-MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B
-AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs
-IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi
-lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv
-qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX
-12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O
-WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+
-ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao
-lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/
-vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi
-Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi
-MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH
-ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0
-1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq
-KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV
-xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP
-NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r
-GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE
-xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx
-gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy
-sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD
-BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw=
------END CERTIFICATE-----
-
-certSIGN ROOT CA
-================
------BEGIN CERTIFICATE-----
-MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD
-VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa
-Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE
-CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I
-JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH
-rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2
-ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD
-0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943
-AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
-Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB
-AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8
-SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0
-x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt
-vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
-TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
------END CERTIFICATE-----
-
-GeoTrust Primary Certification Authority - G3
-=============================================
------BEGIN CERTIFICATE-----
-MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE
-BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0
-IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy
-eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz
-NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo
-YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT
-LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI
-hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j
-K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE
-c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C
-IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu
-dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC
-MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr
-2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9
-cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE
-Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD
-AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s
-t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt
------END CERTIFICATE-----
-
-thawte Primary Root CA - G2
-===========================
------BEGIN CERTIFICATE-----
-MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC
-VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu
-IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg
-Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV
-MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG
-b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt
-IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS
-LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5
-8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU
-mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN
-G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K
-rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg==
------END CERTIFICATE-----
-
-thawte Primary Root CA - G3
-===========================
------BEGIN CERTIFICATE-----
-MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE
-BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
-aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
-cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w
-ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh
-d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD
-VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG
-A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
-MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At
-P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC
-+BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY
-7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW
-vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E
-BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ
-KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK
-A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu
-t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC
-8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm
-er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A=
------END CERTIFICATE-----
-
-GeoTrust Primary Certification Authority - G2
-=============================================
------BEGIN CERTIFICATE-----
-MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC
-VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu
-Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD
-ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1
-OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg
-MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl
-b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG
-BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc
-KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD
-VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+
-EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m
-ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2
-npaqBA+K
------END CERTIFICATE-----
-
-VeriSign Universal Root Certification Authority
-===============================================
------BEGIN CERTIFICATE-----
-MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE
-BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
-ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
-IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u
-IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV
-UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
-cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
-IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0
-aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj
-1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP
-MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72
-9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I
-AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR
-tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G
-CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O
-a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
-DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3
-Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx
-Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx
-P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P
-wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4
-mJO37M2CYfE45k+XmCpajQ==
------END CERTIFICATE-----
-
-VeriSign Class 3 Public Primary Certification Authority - G4
-============================================================
------BEGIN CERTIFICATE-----
-MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC
-VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3
-b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz
-ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj
-YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL
-MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU
-cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo
-b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5
-IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8
-Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz
-rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB
-/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw
-HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u
-Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD
-A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx
-AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
------END CERTIFICATE-----
-
-NetLock Arany (Class Gold) Főtanúsítvány
-========================================
------BEGIN CERTIFICATE-----
-MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G
-A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610
-dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB
-cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx
-MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO
-ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv
-biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6
-c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu
-0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw
-/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk
-H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw
-fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1
-neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB
-BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW
-qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta
-YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC
-bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna
-NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu
-dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
------END CERTIFICATE-----
-
-Staat der Nederlanden Root CA - G2
-==================================
------BEGIN CERTIFICATE-----
-MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE
-CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g
-Um9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oXDTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMC
-TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l
-ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ
-5291qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8SpuOUfiUtn
-vWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPUZ5uW6M7XxgpT0GtJlvOj
-CwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvEpMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiil
-e7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCR
-OME4HYYEhLoaJXhena/MUGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpI
-CT0ugpTNGmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy5V65
-48r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv6q012iDTiIJh8BIi
-trzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEKeN5KzlW/HdXZt1bv8Hb/C3m1r737
-qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMB
-AAGjgZcwgZQwDwYDVR0TAQH/BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcC
-ARYxaHR0cDovL3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV
-HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqGSIb3DQEBCwUA
-A4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLySCZa59sCrI2AGeYwRTlHSeYAz
-+51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwj
-f/ST7ZwaUb7dRUG/kSS0H4zpX897IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaN
-kqbG9AclVMwWVxJKgnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfk
-CpYL+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxLvJxxcypF
-URmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkmbEgeqmiSBeGCc1qb3Adb
-CG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvkN1trSt8sV4pAWja63XVECDdCcAz+3F4h
-oKOKwJCcaNpQ5kUQR3i2TtJlycM33+FCY7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoV
-IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm
-66+KAQ==
------END CERTIFICATE-----
-
-Hongkong Post Root CA 1
-=======================
------BEGIN CERTIFICATE-----
-MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT
-DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx
-NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n
-IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF
-AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1
-ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr
-auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh
-qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY
-V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV
-HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i
-h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio
-l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei
-IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps
-T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT
-c4afU9hDDl3WY4JxHYB0yvbiAmvZWg==
------END CERTIFICATE-----
-
-SecureSign RootCA11
-===================
------BEGIN CERTIFICATE-----
-MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi
-SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS
-b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw
-KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1
-cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL
-TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO
-wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq
-g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP
-O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA
-bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX
-t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh
-OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r
-bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ
-Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01
-y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061
-lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I=
------END CERTIFICATE-----
-
-Microsec e-Szigno Root CA 2009
-==============================
------BEGIN CERTIFICATE-----
-MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER
-MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv
-c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o
-dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE
-BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt
-U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw
-DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA
-fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG
-0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA
-pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm
-1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC
-AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf
-QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE
-FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o
-lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX
-I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775
-tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02
-yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi
-LXpUq3DDfSJlgnCW
------END CERTIFICATE-----
-
-GlobalSign Root CA - R3
-=======================
------BEGIN CERTIFICATE-----
-MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv
-YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
-bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
-aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
-bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt
-iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ
-0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3
-rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl
-OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2
-xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
-FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7
-lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8
-EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E
-bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18
-YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r
-kpeDMdmztcpHWD9f
------END CERTIFICATE-----
-
-Autoridad de Certificacion Firmaprofesional CIF A62634068
-=========================================================
------BEGIN CERTIFICATE-----
-MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA
-BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
-MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw
-QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
-NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
-Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
-B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
-7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
-ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
-plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
-MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
-LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
-bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
-vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud
-EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH
-DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp
-cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA
-bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx
-ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx
-51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk
-R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP
-T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f
-Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl
-osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR
-crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR
-saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD
-KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi
-6Et8Vcad+qMUu2WFbm5PEn4KPJ2V
------END CERTIFICATE-----
-
-Izenpe.com
-==========
------BEGIN CERTIFICATE-----
-MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG
-EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz
-MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu
-QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ
-03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK
-ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU
-+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC
-PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT
-OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK
-F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK
-0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+
-0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB
-leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID
-AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+
-SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG
-NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx
-MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
-BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l
-Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga
-kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q
-hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs
-g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5
-aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5
-nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC
-ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo
-Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z
-WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw==
------END CERTIFICATE-----
-
-Chambers of Commerce Root - 2008
-================================
------BEGIN CERTIFICATE-----
-MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD
-MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
-bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
-QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy
-Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl
-ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF
-EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl
-cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
-AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA
-XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj
-h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/
-ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk
-NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g
-D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331
-lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ
-0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj
-ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2
-EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI
-G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ
-BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh
-bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh
-bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC
-CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH
-AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1
-wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH
-3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU
-RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6
-M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1
-YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF
-9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK
-zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG
-nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg
-OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ
------END CERTIFICATE-----
-
-Global Chambersign Root - 2008
-==============================
------BEGIN CERTIFICATE-----
-MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD
-MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
-bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
-QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx
-NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg
-Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ
-QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD
-aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf
-VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf
-XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0
-ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB
-/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA
-TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M
-H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe
-Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF
-HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh
-wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB
-AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT
-BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE
-BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm
-aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm
-aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp
-1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0
-dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG
-/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6
-ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s
-dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg
-9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH
-foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du
-qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr
-P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq
-c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z
-09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B
------END CERTIFICATE-----
-
-Go Daddy Root Certificate Authority - G2
-========================================
------BEGIN CERTIFICATE-----
-MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
-B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu
-MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5
-MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
-b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G
-A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI
-hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq
-9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD
-+qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd
-fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl
-NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC
-MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9
-BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac
-vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r
-5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV
-N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
-LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1
------END CERTIFICATE-----
-
-Starfield Root Certificate Authority - G2
-=========================================
------BEGIN CERTIFICATE-----
-MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
-B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
-b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
-eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw
-DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg
-VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB
-dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv
-W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs
-bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk
-N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf
-ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU
-JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
-AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol
-TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx
-4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw
-F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K
-pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ
-c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0
------END CERTIFICATE-----
-
-Starfield Services Root Certificate Authority - G2
-==================================================
------BEGIN CERTIFICATE-----
-MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
-B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
-b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl
-IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV
-BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT
-dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg
-Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
-AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2
-h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa
-hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP
-LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB
-rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw
-AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG
-SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP
-E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy
-xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd
-iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza
-YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6
------END CERTIFICATE-----
-
-AffirmTrust Commercial
-======================
------BEGIN CERTIFICATE-----
-MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS
-BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw
-MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
-bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF
-AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb
-DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV
-C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6
-BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww
-MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV
-HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
-AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG
-hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi
-qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv
-0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh
-sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
------END CERTIFICATE-----
-
-AffirmTrust Networking
-======================
------BEGIN CERTIFICATE-----
-MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS
-BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw
-MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
-bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF
-AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE
-Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI
-dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24
-/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb
-h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV
-HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
-AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu
-UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6
-12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23
-WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9
-/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
------END CERTIFICATE-----
-
-AffirmTrust Premium
-===================
------BEGIN CERTIFICATE-----
-MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS
-BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy
-OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy
-dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
-MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn
-BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV
-5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs
-+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd
-GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R
-p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI
-S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04
-6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5
-/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo
-+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB
-/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv
-MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg
-Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC
-6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S
-L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK
-+4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV
-BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg
-IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60
-g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb
-zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw==
------END CERTIFICATE-----
-
-AffirmTrust Premium ECC
-=======================
------BEGIN CERTIFICATE-----
-MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV
-BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx
-MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U
-cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA
-IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ
-N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW
-BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK
-BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X
-57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM
-eQ==
------END CERTIFICATE-----
-
-Certum Trusted Network CA
-=========================
------BEGIN CERTIFICATE-----
-MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK
-ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv
-biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy
-MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU
-ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
-MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
-AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC
-l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J
-J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4
-fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0
-cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB
-Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw
-DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj
-jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1
-mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj
-Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
-03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=
------END CERTIFICATE-----
-
-TWCA Root Certification Authority
-=================================
------BEGIN CERTIFICATE-----
-MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ
-VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh
-dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG
-EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB
-IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
-AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx
-QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC
-oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP
-4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r
-y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB
-BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG
-9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC
-mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW
-QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY
-T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny
-Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw==
------END CERTIFICATE-----
-
-Security Communication RootCA2
-==============================
------BEGIN CERTIFICATE-----
-MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
-U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh
-dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC
-SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy
-aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
-ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++
-+T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R
-3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV
-spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K
-EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8
-QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB
-CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj
-u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk
-3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q
-tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29
-mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
------END CERTIFICATE-----
-
-EC-ACC
-======
------BEGIN CERTIFICATE-----
-MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE
-BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w
-ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD
-VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE
-CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT
-BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7
-MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt
-SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl
-Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh
-cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK
-w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT
-ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4
-HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a
-E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw
-0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E
-BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD
-VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0
-Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l
-dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ
-lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa
-Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe
-l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2
-E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D
-5EI=
------END CERTIFICATE-----
-
-Hellenic Academic and Research Institutions RootCA 2011
-=======================================================
------BEGIN CERTIFICATE-----
-MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT
-O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y
-aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
-IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT
-AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
-IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo
-IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
-AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI
-1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa
-71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u
-8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH
-3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/
-MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8
-MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu
-b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt
-XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8
-TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD
-/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N
-7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4
------END CERTIFICATE-----
-
-Actalis Authentication Root CA
-==============================
------BEGIN CERTIFICATE-----
-MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM
-BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE
-AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky
-MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz
-IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290
-IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ
-wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa
-by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6
-zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f
-YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2
-oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l
-EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7
-hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8
-EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5
-jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY
-iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt
-ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI
-WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0
-JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx
-K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+
-Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC
-4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo
-2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz
-lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem
-OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9
-vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==
------END CERTIFICATE-----
-
-Trustis FPS Root CA
-===================
------BEGIN CERTIFICATE-----
-MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG
-EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290
-IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV
-BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ
-KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ
-RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk
-H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa
-cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt
-o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA
-AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd
-BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c
-GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC
-yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P
-8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV
-l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl
-iB6XzCGcKQENZetX2fNXlrtIzYE=
------END CERTIFICATE-----
-
-Buypass Class 2 Root CA
-=======================
------BEGIN CERTIFICATE-----
-MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
-QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X
-DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1
-eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw
-DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1
-g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn
-9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b
-/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU
-CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff
-awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI
-zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn
-Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX
-Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs
-M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD
-VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF
-AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s
-A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI
-osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S
-aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd
-DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD
-LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0
-oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC
-wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS
-CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN
-rJgWVqA=
------END CERTIFICATE-----
-
-Buypass Class 3 Root CA
-=======================
------BEGIN CERTIFICATE-----
-MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
-QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X
-DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1
-eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw
-DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH
-sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR
-5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh
-7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ
-ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH
-2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV
-/afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ
-RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA
-Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq
-j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD
-VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF
-AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV
-cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G
-uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG
-Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8
-ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2
-KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz
-6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug
-UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe
-eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi
-Cp/HuZc=
------END CERTIFICATE-----
-
-T-TeleSec GlobalRoot Class 3
-============================
------BEGIN CERTIFICATE-----
-MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
-IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
-cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx
-MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
-dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
-ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3
-DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK
-9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU
-NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF
-iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W
-0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA
-MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr
-AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb
-fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT
-ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h
-P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml
-e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw==
------END CERTIFICATE-----
-
-EE Certification Centre Root CA
-===============================
------BEGIN CERTIFICATE-----
-MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
-EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy
-dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw
-MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB
-UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy
-ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB
-DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM
-TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2
-rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw
-93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN
-P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T
-AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ
-MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF
-BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj
-xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM
-lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u
-uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU
-3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM
-dcGWxZ0=
------END CERTIFICATE-----
-
-D-TRUST Root Class 3 CA 2 2009
-==============================
------BEGIN CERTIFICATE-----
-MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK
-DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe
-Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE
-LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw
-DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD
-ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA
-BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv
-KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z
-p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC
-AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ
-4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y
-eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw
-MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G
-PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw
-OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm
-2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0
-o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV
-dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph
-X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I=
------END CERTIFICATE-----
-
-D-TRUST Root Class 3 CA 2 EV 2009
-=================================
------BEGIN CERTIFICATE-----
-MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK
-DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw
-OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK
-DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw
-OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS
-egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh
-zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T
-7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60
-sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35
-11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv
-cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v
-ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El
-MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp
-b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh
-c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+
-PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05
-nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX
-ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA
-NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv
-w9y4AyHqnxbxLFS1
------END CERTIFICATE-----
-
-CA Disig Root R2
-================
------BEGIN CERTIFICATE-----
-MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNVBAYTAlNLMRMw
-EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp
-ZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQyMDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sx
-EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp
-c2lnIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbC
-w3OeNcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNHPWSb6Wia
-xswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3Ix2ymrdMxp7zo5eFm1tL7
-A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbeQTg06ov80egEFGEtQX6sx3dOy1FU+16S
-GBsEWmjGycT6txOgmLcRK7fWV8x8nhfRyyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqV
-g8NTEQxzHQuyRpDRQjrOQG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa
-5Beny912H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJQfYE
-koopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUDi/ZnWejBBhG93c+A
-Ak9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORsnLMOPReisjQS1n6yqEm70XooQL6i
-Fh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNV
-HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5u
-Qu0wDQYJKoZIhvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM
-tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqfGopTpti72TVV
-sRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkblvdhuDvEK7Z4bLQjb/D907Je
-dR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W8
-1k/BfDxujRNt+3vrMNDcTa/F1balTFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjx
-mHHEt38OFdAlab0inSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01
-utI3gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18DrG5gPcFw0
-sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3OszMOl6W8KjptlwlCFtaOg
-UxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8xL4ysEr3vQCj8KWefshNPZiTEUxnpHikV
-7+ZtsH8tZ/3zbBt1RqPlShfppNcL
------END CERTIFICATE-----
-
-ACCVRAIZ1
-=========
------BEGIN CERTIFICATE-----
-MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB
-SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1
-MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH
-UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
-DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM
-jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0
-RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD
-aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ
-0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG
-WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7
-8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR
-5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J
-9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK
-Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw
-Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu
-Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2
-VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM
-Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA
-QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh
-AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA
-YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj
-AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA
-IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk
-aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0
-dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2
-MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI
-hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E
-R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN
-YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49
-nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ
-TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3
-sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h
-I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg
-Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd
-3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p
-EfbRD0tVNEYqi4Y7
------END CERTIFICATE-----
-
-TWCA Global Root CA
-===================
------BEGIN CERTIFICATE-----
-MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcxEjAQBgNVBAoT
-CVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMTVFdDQSBHbG9iYWwgUm9vdCBD
-QTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQK
-EwlUQUlXQU4tQ0ExEDAOBgNVBAsTB1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3Qg
-Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2C
-nJfF10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz0ALfUPZV
-r2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfChMBwqoJimFb3u/Rk28OKR
-Q4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbHzIh1HrtsBv+baz4X7GGqcXzGHaL3SekV
-tTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1W
-KKD+u4ZqyPpcC1jcxkt2yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99
-sy2sbZCilaLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYPoA/p
-yJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQABDzfuBSO6N+pjWxn
-kjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcEqYSjMq+u7msXi7Kx/mzhkIyIqJdI
-zshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMC
-AQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6g
-cFGn90xHNcgL1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn
-LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WFH6vPNOw/KP4M
-8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNoRI2T9GRwoD2dKAXDOXC4Ynsg
-/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlg
-lPx4mI88k1HtQJAH32RjJMtOcQWh15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryP
-A9gK8kxkRr05YuWW6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3m
-i4TWnsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5jwa19hAM8
-EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWzaGHQRiapIVJpLesux+t3
-zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmyKwbQBM0=
------END CERTIFICATE-----
-
-TeliaSonera Root CA v1
-======================
------BEGIN CERTIFICATE-----
-MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE
-CgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwHhcNMDcxMDE4
-MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwW
-VGVsaWFTb25lcmEgUm9vdCBDQSB2MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+
-6yfwIaPzaSZVfp3FVRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA
-3GV17CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+XZ75Ljo1k
-B1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+/jXh7VB7qTCNGdMJjmhn
-Xb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxH
-oLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkmdtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3
-F0fUTPHSiXk+TT2YqGHeOh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJ
-oWjiUIMusDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4pgd7
-gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fsslESl1MpWtTwEhDc
-TwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQarMCpgKIv7NHfirZ1fpoeDVNAgMB
-AAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qW
-DNXr+nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNm
-zqjMDfz1mgbldxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx
-0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1TjTQpgcmLNkQfW
-pb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBedY2gea+zDTYa4EzAvXUYNR0PV
-G6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpc
-c41teyWRyu5FrgZLAMzTsVlQ2jqIOylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOT
-JsjrDNYmiLbAJM+7vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2
-qReWt88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcnHL/EVlP6
-Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems
-WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY=
------END CERTIFICATE-----
-
-E-Tugra Certification Authority
-===============================
------BEGIN CERTIFICATE-----
-MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlRSMQ8w
-DQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamls
-ZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN
-ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMw
-NTEyMDk0OFoXDTIzMDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmEx
-QDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxl
-cmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQD
-DB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
-MIICCgKCAgEA4vU/kwVRHoViVF56C/UYB4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vd
-hQd2h8y/L5VMzH2nPbxHD5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5K
-CKpbknSFQ9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEoq1+g
-ElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3Dk14opz8n8Y4e0ypQ
-BaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcHfC425lAcP9tDJMW/hkd5s3kc91r0
-E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsutdEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gz
-rt48Ue7LE3wBf4QOXVGUnhMMti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAq
-jqFGOjGY5RH8zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn
-rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUXU8u3Zg5mTPj5
-dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6Jyr+zE7S6E5UMA8GA1UdEwEB
-/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEG
-MA0GCSqGSIb3DQEBCwUAA4ICAQAFNzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAK
-kEh47U6YA5n+KGCRHTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jO
-XKqYGwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c77NCR807
-VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3+GbHeJAAFS6LrVE1Uweo
-a2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WKvJUawSg5TB9D0pH0clmKuVb8P7Sd2nCc
-dlqMQ1DujjByTd//SffGqWfZbawCEeI6FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEV
-KV0jq9BgoRJP3vQXzTLlyb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gT
-Dx4JnW2PAJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpDy4Q0
-8ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8dNL/+I5c30jn6PQ0G
-C7TbO6Orb1wdtn7os4I07QZcJA==
------END CERTIFICATE-----
-
-T-TeleSec GlobalRoot Class 2
-============================
------BEGIN CERTIFICATE-----
-MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
-IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
-cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx
-MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
-dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
-ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3
-DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ
-SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F
-vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970
-2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV
-WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA
-MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy
-YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4
-r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf
-vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR
-3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN
-9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg==
------END CERTIFICATE-----
-
-Atos TrustedRoot 2011
-=====================
------BEGIN CERTIFICATE-----
-MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU
-cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4
-MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG
-A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV
-hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr
-54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+
-DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320
-HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR
-z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R
-l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ
-bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB
-CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h
-k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh
-TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9
-61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G
-3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed
------END CERTIFICATE-----
-
-QuoVadis Root CA 1 G3
-=====================
------BEGIN CERTIFICATE-----
-MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQELBQAwSDELMAkG
-A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv
-b3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJN
-MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEg
-RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakE
-PBtVwedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWerNrwU8lm
-PNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF34168Xfuw6cwI2H44g4hWf6
-Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh4Pw5qlPafX7PGglTvF0FBM+hSo+LdoIN
-ofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXpUhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/l
-g6AnhF4EwfWQvTA9xO+oabw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV
-7qJZjqlc3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/GKubX
-9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSthfbZxbGL0eUQMk1f
-iyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KOTk0k+17kBL5yG6YnLUlamXrXXAkg
-t3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOtzCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
-AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZI
-hvcNAQELBQADggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC
-MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2cDMT/uFPpiN3
-GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUNqXsCHKnQO18LwIE6PWThv6ct
-Tr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP
-+V04ikkwj+3x6xn0dxoxGE1nVGwvb2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh
-3jRJjehZrJ3ydlo28hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fa
-wx/kNSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNjZgKAvQU6
-O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhpq1467HxpvMc7hU6eFbm0
-FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFtnh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOV
-hMJKzRwuJIczYOXD
------END CERTIFICATE-----
-
-QuoVadis Root CA 2 G3
-=====================
------BEGIN CERTIFICATE-----
-MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQELBQAwSDELMAkG
-A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv
-b3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJN
-MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIg
-RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFh
-ZiFfqq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMWn4rjyduY
-NM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ymc5GQYaYDFCDy54ejiK2t
-oIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+O7q414AB+6XrW7PFXmAqMaCvN+ggOp+o
-MiwMzAkd056OXbxMmO7FGmh77FOm6RQ1o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+l
-V0POKa2Mq1W/xPtbAd0jIaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZo
-L1NesNKqIcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz8eQQ
-sSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43ehvNURG3YBZwjgQQvD
-6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l7ZizlWNof/k19N+IxWA1ksB8aRxh
-lRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALGcC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
-AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZI
-hvcNAQELBQADggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66
-AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RCroijQ1h5fq7K
-pVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0GaW/ZZGYjeVYg3UQt4XAoeo0L9
-x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4nlv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgz
-dWqTHBLmYF5vHX/JHyPLhGGfHoJE+V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6X
-U/IyAgkwo1jwDQHVcsaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+Nw
-mNtddbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNgKCLjsZWD
-zYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeMHVOyToV7BjjHLPj4sHKN
-JeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4WSr2Rz0ZiC3oheGe7IUIarFsNMkd7Egr
-O3jtZsSOeWmD3n+M
------END CERTIFICATE-----
-
-QuoVadis Root CA 3 G3
-=====================
------BEGIN CERTIFICATE-----
-MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQELBQAwSDELMAkG
-A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv
-b3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJN
-MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMg
-RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286
-IxSR/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNuFoM7pmRL
-Mon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXRU7Ox7sWTaYI+FrUoRqHe
-6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+cra1AdHkrAj80//ogaX3T7mH1urPnMNA3
-I4ZyYUUpSFlob3emLoG+B01vr87ERRORFHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3U
-VDmrJqMz6nWB2i3ND0/kA9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f7
-5li59wzweyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634RylsSqi
-Md5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBpVzgeAVuNVejH38DM
-dyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0QA4XN8f+MFrXBsj6IbGB/kE+V9/Yt
-rQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
-AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZI
-hvcNAQELBQADggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px
-KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnIFUBhynLWcKzS
-t/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5WvvoxXqA/4Ti2Tk08HS6IT7SdEQ
-TXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFgu/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9Du
-DcpmvJRPpq3t/O5jrFc/ZSXPsoaP0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGib
-Ih6BJpsQBJFxwAYf3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmD
-hPbl8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+DhcI00iX
-0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HNPlopNLk9hM6xZdRZkZFW
-dSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ywaZWWDYWGWVjUTR939+J399roD1B0y2
-PpxxVJkES/1Y+Zj0
------END CERTIFICATE-----
-
-DigiCert Assured ID Root G2
-===========================
------BEGIN CERTIFICATE-----
-MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG
-EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
-IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw
-MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
-ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw
-ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH
-35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq
-bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw
-VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP
-YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn
-lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO
-w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv
-0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz
-d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW
-hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M
-jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo
-IhNzbM8m9Yop5w==
------END CERTIFICATE-----
-
-DigiCert Assured ID Root G3
-===========================
------BEGIN CERTIFICATE-----
-MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV
-UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD
-VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1
-MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
-d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ
-BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb
-RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs
-KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF
-UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy
-YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy
-1vUhZscv6pZjamVFkpUBtA==
------END CERTIFICATE-----
-
-DigiCert Global Root G2
-=======================
------BEGIN CERTIFICATE-----
-MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG
-EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
-HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx
-MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
-dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq
-hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ
-kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO
-3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV
-BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM
-UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB
-o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu
-5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr
-F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U
-WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH
-QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/
-iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl
-MrY=
------END CERTIFICATE-----
-
-DigiCert Global Root G3
-=======================
------BEGIN CERTIFICATE-----
-MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV
-UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD
-VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw
-MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k
-aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C
-AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O
-YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP
-BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp
-Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y
-3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34
-VOKa5Vt8sycX
------END CERTIFICATE-----
-
-DigiCert Trusted Root G4
-========================
------BEGIN CERTIFICATE-----
-MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQG
-EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEw
-HwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1
-MTIwMDAwWjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
-d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0G
-CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3yithZwuEp
-pz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9o
-k3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7Fsa
-vOvJz82sNEBfsXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGY
-QJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6
-MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCiEhtm
-mnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7
-f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFH
-dL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8
-oR7FwI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud
-DwEB/wQEAwIBhjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD
-ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2SV1EY+CtnJYY
-ZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd+SeuMIW59mdNOj6PWTkiU0Tr
-yF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWcfFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy
-7zBZLq7gcfJW5GqXb5JQbZaNaHqasjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iah
-ixTXTBmyUEFxPT9NcCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN
-5r5N0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie4u1Ki7wb
-/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mIr/OSmbaz5mEP0oUA51Aa
-5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tK
-G48BtieVU+i2iW1bvGjUI+iLUaJW+fCmgKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP
-82Z+
------END CERTIFICATE-----
-
-COMODO RSA Certification Authority
-==================================
------BEGIN CERTIFICATE-----
-MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCBhTELMAkGA1UE
-BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
-A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlv
-biBBdXRob3JpdHkwHhcNMTAwMTE5MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMC
-R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
-ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBB
-dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR6FSS0gpWsawNJN3Fz0Rn
-dJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8Xpz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZ
-FGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+
-5eNu/Nio5JIk2kNrYrhV/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pG
-x8cgoLEfZd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z+pUX
-2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7wqP/0uK3pN/u6uPQL
-OvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZahSL0896+1DSJMwBGB7FY79tOi4lu3
-sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVICu9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+C
-GCe01a60y1Dma/RMhnEw6abfFobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5
-WdYgGq/yapiqcrxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E
-FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
-DQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvlwFTPoCWOAvn9sKIN9SCYPBMt
-rFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+
-nq6PK7o9mfjYcwlYRm6mnPTXJ9OV2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSg
-tZx8jb8uk2IntznaFxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwW
-sRqZCuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiKboHGhfKp
-pC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmckejkk9u+UJueBPSZI9FoJA
-zMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yLS0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHq
-ZJx64SIDqZxubw5lT2yHh17zbqD5daWbQOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk52
-7RH89elWsn2/x20Kk4yl0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7I
-LaZRfyHBNVOFBkpdn627G190
------END CERTIFICATE-----
-
-USERTrust RSA Certification Authority
-=====================================
------BEGIN CERTIFICATE-----
-MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCBiDELMAkGA1UE
-BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK
-ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh
-dGlvbiBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UE
-BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK
-ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh
-dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCAEmUXNg7D2wiz
-0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2j
-Y0K2dvKpOyuR+OJv0OwWIJAJPuLodMkYtJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFn
-RghRy4YUVD+8M/5+bJz/Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O
-+T23LLb2VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT79uq
-/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6c0Plfg6lZrEpfDKE
-Y1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmTYo61Zs8liM2EuLE/pDkP2QKe6xJM
-lXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97lc6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8
-yexDJtC/QV9AqURE9JnnV4eeUB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+
-eLf8ZxXhyVeEHg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd
-BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
-MAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPFUp/L+M+ZBn8b2kMVn54CVVeW
-FPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KOVWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ
-7l8wXEskEVX/JJpuXior7gtNn3/3ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQ
-Eg9zKC7F4iRO/Fjs8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM
-8WcRiQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYzeSf7dNXGi
-FSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZXHlKYC6SQK5MNyosycdi
-yA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9c
-J2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRBVXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGw
-sAvgnEzDHNb842m1R0aBL6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gx
-Q+6IHdfGjjxDah2nGN59PRbxYvnKkKj9
------END CERTIFICATE-----
-
-USERTrust ECC Certification Authority
-=====================================
------BEGIN CERTIFICATE-----
-MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDELMAkGA1UEBhMC
-VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
-aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv
-biBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMC
-VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
-aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv
-biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqfloI+d61SRvU8Za2EurxtW2
-0eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinngo4N+LZfQYcTxmdwlkWOrfzCjtHDix6Ez
-nPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNV
-HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBB
-HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu
-9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg=
------END CERTIFICATE-----
-
-GlobalSign ECC Root CA - R4
-===========================
------BEGIN CERTIFICATE-----
-MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEkMCIGA1UECxMb
-R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
-EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb
-R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
-EwpHbG9iYWxTaWduMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprl
-OQcJFspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAwDgYDVR0P
-AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61FuOJAf/sKbvu+M8k8o4TV
-MAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGXkPoUVy0D7O48027KqGx2vKLeuwIgJ6iF
-JzWbVsaj8kfSt24bAgAXqmemFZHe+pTsewv4n4Q=
------END CERTIFICATE-----
-
-GlobalSign ECC Root CA - R5
-===========================
------BEGIN CERTIFICATE-----
-MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEkMCIGA1UECxMb
-R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
-EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb
-R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
-EwpHbG9iYWxTaWduMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6
-SFkc8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8kehOvRnkmS
-h5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd
-BgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYIKoZIzj0EAwMDaAAwZQIxAOVpEslu28Yx
-uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7
-yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3
------END CERTIFICATE-----
-
-Staat der Nederlanden Root CA - G3
-==================================
------BEGIN CERTIFICATE-----
-MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE
-CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g
-Um9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloXDTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMC
-TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l
-ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4y
-olQPcPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WWIkYFsO2t
-x1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqXxz8ecAgwoNzFs21v0IJy
-EavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFyKJLZWyNtZrVtB0LrpjPOktvA9mxjeM3K
-Tj215VKb8b475lRgsGYeCasH/lSJEULR9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUur
-mkVLoR9BvUhTFXFkC4az5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU5
-1nus6+N86U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7Ngzp
-07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHPbMk7ccHViLVlvMDo
-FxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXtBznaqB16nzaeErAMZRKQFWDZJkBE
-41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTtXUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMB
-AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleu
-yjWcLhL75LpdINyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD
-U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwpLiniyMMB8jPq
-KqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8Ipf3YF3qKS9Ysr1YvY2WTxB1
-v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixpgZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA
-8KCWAg8zxXHzniN9lLf9OtMJgwYh/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b
-8KKaa8MFSu1BYBQw0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0r
-mj1AfsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq4BZ+Extq
-1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR1VmiiXTTn74eS9fGbbeI
-JG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/QFH1T/U67cjF68IeHRaVesd+QnGTbksV
-tzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM94B7IWcnMFk=
------END CERTIFICATE-----
-
-Staat der Nederlanden EV Root CA
-================================
------BEGIN CERTIFICATE-----
-MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJOTDEeMBwGA1UE
-CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFhdCBkZXIgTmVkZXJsYW5kZW4g
-RVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0yMjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5M
-MR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRl
-cmxhbmRlbiBFViBSb290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkk
-SzrSM4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nCUiY4iKTW
-O0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3dZ//BYY1jTw+bbRcwJu+r
-0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46prfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8
-Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13lpJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gV
-XJrm0w912fxBmJc+qiXbj5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr
-08C+eKxCKFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS/ZbV
-0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0XcgOPvZuM5l5Tnrmd
-74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH1vI4gnPah1vlPNOePqc7nvQDs/nx
-fRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrPpx9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNC
-MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwa
-ivsnuL8wbqg7MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI
-eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u2dfOWBfoqSmu
-c0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHSv4ilf0X8rLiltTMMgsT7B/Zq
-5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTCwPTxGfARKbalGAKb12NMcIxHowNDXLldRqAN
-b/9Zjr7dn3LDWyvfjFvO5QxGbJKyCqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tN
-f1zuacpzEPuKqf2evTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi
-5Dp6Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIaGl6I6lD4
-WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeLeG9QgkRQP2YGiqtDhFZK
-DyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGy
-eUN51q1veieQA6TqJIc/2b3Z6fJfUEkc7uzXLg==
------END CERTIFICATE-----
-
-IdenTrust Commercial Root CA 1
-==============================
------BEGIN CERTIFICATE-----
-MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQG
-EwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBS
-b290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQwMTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzES
-MBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENB
-IDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ld
-hNlT3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU+ehcCuz/
-mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gpS0l4PJNgiCL8mdo2yMKi
-1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1bVoE/c40yiTcdCMbXTMTEl3EASX2MN0C
-XZ/g1Ue9tOsbobtJSdifWwLziuQkkORiT0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl
-3ZBWzvurpWCdxJ35UrCLvYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzy
-NeVJSQjKVsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZKdHzV
-WYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHTc+XvvqDtMwt0viAg
-xGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hvl7yTmvmcEpB4eoCHFddydJxVdHix
-uuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5NiGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC
-AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZI
-hvcNAQELBQADggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH
-6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwtLRvM7Kqas6pg
-ghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93nAbowacYXVKV7cndJZ5t+qnt
-ozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmV
-YjzlVYA211QC//G5Xc7UI2/YRYRKW2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUX
-feu+h1sXIFRRk0pTAwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/ro
-kTLql1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG4iZZRHUe
-2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZmUlO+KWA2yUPHGNiiskz
-Z2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7R
-cGzM7vRX+Bi6hG6H
------END CERTIFICATE-----
-
-IdenTrust Public Sector Root CA 1
-=================================
------BEGIN CERTIFICATE-----
-MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQG
-EwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3Rv
-ciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcNMzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJV
-UzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBS
-b290IENBIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTy
-P4o7ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGyRBb06tD6
-Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlSbdsHyo+1W/CD80/HLaXI
-rcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF/YTLNiCBWS2ab21ISGHKTN9T0a9SvESf
-qy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoS
-mJxZZoY+rfGwyj4GD3vwEUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFn
-ol57plzy9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9VGxyh
-LrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ2fjXctscvG29ZV/v
-iDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsVWaFHVCkugyhfHMKiq3IXAAaOReyL
-4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gDW/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8B
-Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMw
-DQYJKoZIhvcNAQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj
-t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHVDRDtfULAj+7A
-mgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9TaDKQGXSc3z1i9kKlT/YPyNt
-GtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8GlwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFt
-m6/n6J91eEyrRjuazr8FGF1NFTwWmhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMx
-NRF4eKLg6TCMf4DfWN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4
-Mhn5+bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJtshquDDI
-ajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhAGaQdp/lLQzfcaFpPz+vC
-ZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ
-3Wl9af0AVqW3rLatt8o+Ae+c
------END CERTIFICATE-----
-
-Entrust Root Certification Authority - G2
-=========================================
------BEGIN CERTIFICATE-----
-MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMCVVMxFjAUBgNV
-BAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy
-bXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ug
-b25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIw
-HhcNMDkwNzA3MTcyNTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT
-DUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMx
-OTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s
-eTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggEi
-MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP
-/vaCeb9zYQYKpSfYs1/TRU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXz
-HHfV1IWNcCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hWwcKU
-s/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1U1+cPvQXLOZprE4y
-TGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0jaWvYkxN4FisZDQSA/i2jZRjJKRx
-AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ6
-0B7vfec7aVHUbI2fkBJmqzANBgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5Z
-iXMRrEPR9RP/jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ
-Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v1fN2D807iDgi
-nWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4RnAuknZoh8/CbCzB428Hch0P+
-vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmHVHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xO
-e4pIb4tF9g==
------END CERTIFICATE-----
-
-Entrust Root Certification Authority - EC1
-==========================================
------BEGIN CERTIFICATE-----
-MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkGA1UEBhMCVVMx
-FjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn
-YWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXpl
-ZCB1c2Ugb25seTEzMDEGA1UEAxMqRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5
-IC0gRUMxMB4XDTEyMTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYw
-FAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs
-LXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg
-dXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt
-IEVDMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHy
-AsWfoPZb1YsGGYZPUxBtByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef
-9eNi1KlHBz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
-FLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVCR98crlOZF7ZvHH3h
-vxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nXhTcGtXsI/esni0qU+eH6p44mCOh8
-kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G
------END CERTIFICATE-----
-
-CFCA EV ROOT
-============
------BEGIN CERTIFICATE-----
-MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJDTjEwMC4GA1UE
-CgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNB
-IEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkxMjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEw
-MC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQD
-DAxDRkNBIEVWIFJPT1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnV
-BU03sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpLTIpTUnrD
-7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5/ZOkVIBMUtRSqy5J35DN
-uF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp7hZZLDRJGqgG16iI0gNyejLi6mhNbiyW
-ZXvKWfry4t3uMCz7zEasxGPrb382KzRzEpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7
-xzbh72fROdOXW3NiGUgthxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9f
-py25IGvPa931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqotaK8K
-gWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNgTnYGmE69g60dWIol
-hdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfVPKPtl8MeNPo4+QgO48BdK4PRVmrJ
-tqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hvcWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAf
-BgNVHSMEGDAWgBTj/i39KNALtbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB
-/wQEAwIBBjAdBgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB
-ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObTej/tUxPQ4i9q
-ecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdLjOztUmCypAbqTuv0axn96/Ua
-4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBSESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sG
-E5uPhnEFtC+NiWYzKXZUmhH4J/qyP5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfX
-BDrDMlI1Dlb4pd19xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjn
-aH9dCi77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN5mydLIhy
-PDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe/v5WOaHIz16eGWRGENoX
-kbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C
-ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su
------END CERTIFICATE-----
-
-OISTE WISeKey Global Root GB CA
-===============================
------BEGIN CERTIFICATE-----
-MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBtMQswCQYDVQQG
-EwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl
-ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAw
-MzJaFw0zOTEyMDExNTEwMzFaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYD
-VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEds
-b2JhbCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3HEokKtaX
-scriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGxWuR51jIjK+FTzJlFXHtP
-rby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk
-9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNku7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4o
-Qnc/nSMbsrY9gBQHTC5P99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvg
-GUpuuy9rM2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB
-/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZI
-hvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrghcViXfa43FK8+5/ea4n32cZiZBKpD
-dHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0
-VQreUGdNZtGn//3ZwLWoo4rOZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEui
-HZeeevJuQHHfaPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic
-Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM=
------END CERTIFICATE-----
-
-SZAFIR ROOT CA2
-===============
------BEGIN CERTIFICATE-----
-MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQELBQAwUTELMAkG
-A1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6ZW5pb3dhIFMuQS4xGDAWBgNV
-BAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkwNzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJ
-BgNVBAYTAlBMMSgwJgYDVQQKDB9LcmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYD
-VQQDDA9TWkFGSVIgUk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5Q
-qEvNQLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT3PSQ1hNK
-DJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw3gAeqDRHu5rr/gsUvTaE
-2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr63fE9biCloBK0TXC5ztdyO4mTp4CEHCdJ
-ckm1/zuVnsHMyAHs6A6KCpbns6aH5db5BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwi
-ieDhZNRnvDF5YTy7ykHNXGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P
-AQH/BAQDAgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsFAAOC
-AQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw8PRBEew/R40/cof5
-O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOGnXkZ7/e7DDWQw4rtTw/1zBLZpD67
-oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCPoky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul
-4+vJhaAlIDf7js4MNIThPIGyd05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6
-+/NNIxuZMzSgLvWpCz/UXeHPhJ/iGcJfitYgHuNztw==
------END CERTIFICATE-----
-
-Certum Trusted Network CA 2
-===========================
------BEGIN CERTIFICATE-----
-MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCBgDELMAkGA1UE
-BhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4xJzAlBgNVBAsTHkNlcnR1
-bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIGA1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29y
-ayBDQSAyMCIYDzIwMTExMDA2MDgzOTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQ
-TDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENl
-cnRpZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENB
-IDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWADGSdhhuWZGc/IjoedQF9
-7/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+o
-CgCXhVqqndwpyeI1B+twTUrWwbNWuKFBOJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40b
-Rr5HMNUuctHFY9rnY3lEfktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2p
-uTRZCr+ESv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1mo130
-GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02isx7QBlrd9pPPV3WZ
-9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOWOZV7bIBaTxNyxtd9KXpEulKkKtVB
-Rgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgezTv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pye
-hizKV/Ma5ciSixqClnrDvFASadgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vM
-BhBgu4M1t15n3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
-AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZI
-hvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQF/xlhMcQSZDe28cmk4gmb3DW
-Al45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTfCVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuA
-L55MYIR4PSFk1vtBHxgP58l1cb29XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMo
-clm2q8KMZiYcdywmdjWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tM
-pkT/WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jbAoJnwTnb
-w3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksqP/ujmv5zMnHCnsZy4Ypo
-J/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Kob7a6bINDd82Kkhehnlt4Fj1F4jNy3eFm
-ypnTycUm/Q1oBEauttmbjL4ZvrHG8hnjXALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLX
-is7VmFxWlgPF7ncGNf/P5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7
-zAYspsbiDrW5viSP
------END CERTIFICATE-----
-
-Hellenic Academic and Research Institutions RootCA 2015
-=======================================================
------BEGIN CERTIFICATE-----
-MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcT
-BkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0
-aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl
-YXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAx
-MTIxWjCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMg
-QWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNV
-BAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIw
-MTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDC+Kk/G4n8PDwEXT2QNrCROnk8Zlrv
-bTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+eh
-iGsxr/CL0BgzuNtFajT0AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+
-6PAQZe104S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06CojXd
-FPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV9Cz82XBST3i4vTwr
-i5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrDgfgXy5I2XdGj2HUb4Ysn6npIQf1F
-GQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2
-fu/Z8VFRfS0myGlZYeCsargqNhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9mu
-iNX6hME6wGkoLfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc
-Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
-AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVdctA4GGqd83EkVAswDQYJKoZI
-hvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0IXtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+
-D1hYc2Ryx+hFjtyp8iY/xnmMsVMIM4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrM
-d/K4kPFox/la/vot9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+y
-d+2VZ5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/eaj8GsGsVn
-82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnhX9izjFk0WaSrT2y7Hxjb
-davYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQl033DlZdwJVqwjbDG2jJ9SrcR5q+ss7F
-Jej6A7na+RZukYT1HCjI/CbM1xyQVqdfbzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVt
-J94Cj8rDtSvK6evIIVM4pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGa
-JI7ZjnHKe7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0vm9q
-p/UsQu0yrbYhnr68
------END CERTIFICATE-----
-
-Hellenic Academic and Research Institutions ECC RootCA 2015
-===========================================================
------BEGIN CERTIFICATE-----
-MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0
-aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u
-cyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj
-aCBJbnN0aXR1dGlvbnMgRUNDIFJvb3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEw
-MzcxMlowgaoxCzAJBgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmlj
-IEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUQwQgYD
-VQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIEVDQyBSb290
-Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKgQehLgoRc4vgxEZmGZE4JJS+dQS8KrjVP
-dJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJajq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoK
-Vlp8aQuqgAkkbH7BRqNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
-BBYEFLQiC4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaeplSTA
-GiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7SofTUwJCA3sS61kFyjn
-dc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR
------END CERTIFICATE-----
-
-ISRG Root X1
-============
------BEGIN CERTIFICATE-----
-MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAwTzELMAkGA1UE
-BhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNoIEdyb3VwMRUwEwYDVQQD
-EwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQG
-EwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMT
-DElTUkcgUm9vdCBYMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54r
-Vygch77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+0TM8ukj1
-3Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6UA5/TR5d8mUgjU+g4rk8K
-b4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sWT8KOEUt+zwvo/7V3LvSye0rgTBIlDHCN
-Aymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyHB5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ
-4Q7e2RCOFvu396j3x+UCB5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf
-1b0SHzUvKBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWnOlFu
-hjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTnjh8BCNAw1FtxNrQH
-usEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbwqHyGO0aoSCqI3Haadr8faqU9GY/r
-OPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CIrU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4G
-A1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY
-9umbbjANBgkqhkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
-ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ3BebYhtF8GaV
-0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KKNFtY2PwByVS5uCbMiogziUwt
-hDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJw
-TdwJx4nLCgdNbOhdjsnvzqvHu7UrTkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nx
-e5AW0wdeRlN8NwdCjNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZA
-JzVcoyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq4RgqsahD
-YVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPAmRGunUHBcnWEvgJBQl9n
-JEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57demyPxgcYxn/eR44/KJ4EBs+lVDR3veyJ
-m+kXQ99b21/+jh5Xos1AnX5iItreGCc=
------END CERTIFICATE-----
-
-AC RAIZ FNMT-RCM
-================
------BEGIN CERTIFICATE-----
-MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsxCzAJBgNVBAYT
-AkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTAeFw0wODEw
-MjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJD
-TTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
-ggIBALpxgHpMhm5/yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcf
-qQgfBBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAzWHFctPVr
-btQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxFtBDXaEAUwED653cXeuYL
-j2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z374jNUUeAlz+taibmSXaXvMiwzn15Cou
-08YfxGyqxRxqAQVKL9LFwag0Jl1mpdICIfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mw
-WsXmo8RZZUc1g16p6DULmbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnT
-tOmlcYF7wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peSMKGJ
-47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2ZSysV4999AeU14EC
-ll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMetUqIJ5G+GR4of6ygnXYMgrwTJbFaa
-i0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE
-FPd9xf3E6Jobd2Sn9R2gzL+HYJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1o
-dHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD
-nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1RXxlDPiyN8+s
-D8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYMLVN0V2Ue1bLdI4E7pWYjJ2cJ
-j+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrT
-Qfv6MooqtyuGC2mDOL7Nii4LcK2NJpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW
-+YJF1DngoABd15jmfZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7
-Ixjp6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp1txyM/1d
-8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B9kiABdcPUXmsEKvU7ANm
-5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wokRqEIr9baRRmW1FMdW4R58MD3R++Lj8UG
-rp1MYp3/RgT408m2ECVAdf4WqslKYIYvuu8wd+RU4riEmViAqhOLUTpPSPaLtrM=
------END CERTIFICATE-----
-
-Amazon Root CA 1
-================
------BEGIN CERTIFICATE-----
-MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsFADA5MQswCQYD
-VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAxMB4XDTE1
-MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv
-bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
-ggEBALJ4gHHKeNXjca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgH
-FzZM9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qwIFAGbHrQ
-gLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6VOujw5H5SNz/0egwLX0t
-dHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L93FcXmn/6pUCyziKrlA4b9v7LWIbxcce
-VOF34GfID5yHI9Y/QCB/IIDEgEw+OyQmjgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB
-/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3
-DQEBCwUAA4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDIU5PM
-CCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUsN+gDS63pYaACbvXy
-8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vvo/ufQJVtMVT8QtPHRh8jrdkPSHCa
-2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2
-xJNDd2ZhwLnoQdeXeGADbkpyrqXRfboQnoZsG4q5WTP468SQvvG5
------END CERTIFICATE-----
-
-Amazon Root CA 2
-================
------BEGIN CERTIFICATE-----
-MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwFADA5MQswCQYD
-VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAyMB4XDTE1
-MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv
-bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
-ggIBAK2Wny2cSkxKgXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4
-kHbZW0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg1dKmSYXp
-N+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K8nu+NQWpEjTj82R0Yiw9
-AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvd
-fLC6HM783k81ds8P+HgfajZRRidhW+mez/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAEx
-kv8LV/SasrlX6avvDXbR8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSS
-btqDT6ZjmUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz7Mt0
-Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6+XUyo05f7O0oYtlN
-c/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI0u1ufm8/0i2BWSlmy5A5lREedCf+
-3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSw
-DPBMMPQFWAJI/TPlUq9LhONmUjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oA
-A7CXDpO8Wqj2LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY
-+gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kSk5Nrp+gvU5LE
-YFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl7uxMMne0nxrpS10gxdr9HIcW
-xkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygmbtmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQ
-gj9sAq+uEjonljYE1x2igGOpm/HlurR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbW
-aQbLU8uz/mtBzUF+fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoV
-Yh63n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE76KlXIx3
-KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H9jVlpNMKVv/1F2Rs76gi
-JUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT4PsJYGw=
------END CERTIFICATE-----
-
-Amazon Root CA 3
-================
------BEGIN CERTIFICATE-----
-MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5MQswCQYDVQQG
-EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAzMB4XDTE1MDUy
-NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ
-MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZB
-f8ANm+gBG1bG8lKlui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjr
-Zt6jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSrttvXBp43
-rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkrBqWTrBqYaGFy+uGh0Psc
-eGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteMYyRIHN8wfdVoOw==
------END CERTIFICATE-----
-
-Amazon Root CA 4
-================
------BEGIN CERTIFICATE-----
-MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5MQswCQYDVQQG
-EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSA0MB4XDTE1MDUy
-NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ
-MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN
-/sGKe0uoe0ZLY7Bi9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri
-83BkM6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
-HQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WBMAoGCCqGSM49BAMDA2gA
-MGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlwCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1
-AE47xDqUEpHJWEadIRNyp4iciuRMStuW1KyLa2tJElMzrdfkviT8tQp21KW8EA==
------END CERTIFICATE-----
-
-LuxTrust Global Root 2
-======================
------BEGIN CERTIFICATE-----
-MIIFwzCCA6ugAwIBAgIUCn6m30tEntpqJIWe5rgV0xZ/u7EwDQYJKoZIhvcNAQELBQAwRjELMAkG
-A1UEBhMCTFUxFjAUBgNVBAoMDUx1eFRydXN0IFMuQS4xHzAdBgNVBAMMFkx1eFRydXN0IEdsb2Jh
-bCBSb290IDIwHhcNMTUwMzA1MTMyMTU3WhcNMzUwMzA1MTMyMTU3WjBGMQswCQYDVQQGEwJMVTEW
-MBQGA1UECgwNTHV4VHJ1c3QgUy5BLjEfMB0GA1UEAwwWTHV4VHJ1c3QgR2xvYmFsIFJvb3QgMjCC
-AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANeFl78RmOnwYoNMPIf5U2o3C/IPPIfOb9wm
-Kb3FibrJgz337spbxm1Jc7TJRqMbNBM/wYlFV/TZsfs2ZUv7COJIcRHIbjuend+JZTemhfY7RBi2
-xjcwYkSSl2l9QjAk5A0MiWtj3sXh306pFGxT4GHO9hcvHTy95iJMHZP1EMShduxq3sVs35a0VkBC
-wGKSMKEtFZSg0iAGCW5qbeXrt77U8PEVfIvmTroTzEsnXpk8F12PgX8zPU/TPxvsXD/wPEx1bvKm
-1Z3aLQdjAsZy6ZS8TEmVT4hSyNvoaYL4zDRbIvCGp4m9SAptZoFtyMhk+wHh9OHe2Z7d21vUKpkm
-FRseTJIpgp7VkoGSQXAZ96Tlk0u8d2cx3Rz9MXANF5kM+Qw5GSoXtTBxVdUPrljhPS80m8+f9niF
-wpN6cj5mj5wWEWCPnolvZ77gR1o7DJpni89Gxq44o/KnvObWhWszJHAiS8sIm7vI+AIpHb4gDEa/
-a4ebsypmQjVGbKq6rfmYe+lQVRQxv7HaLe2ArWgk+2mr2HETMOZns4dA/Yl+8kPREd8vZS9kzl8U
-ubG/Mb2HeFpZZYiq/FkySIbWTLkpS5XTdvN3JW1CHDiDTf2jX5t/Lax5Gw5CMZdjpPuKadUiDTSQ
-MC6otOBttpSsvItO13D8xTiOZCXhTTmQzsmHhFhxAgMBAAGjgagwgaUwDwYDVR0TAQH/BAUwAwEB
-/zBCBgNVHSAEOzA5MDcGByuBKwEBAQowLDAqBggrBgEFBQcCARYeaHR0cHM6Ly9yZXBvc2l0b3J5
-Lmx1eHRydXN0Lmx1MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBT/GCh2+UgFLKGu8SsbK7JT
-+Et8szAdBgNVHQ4EFgQU/xgodvlIBSyhrvErGyuyU/hLfLMwDQYJKoZIhvcNAQELBQADggIBAGoZ
-FO1uecEsh9QNcH7X9njJCwROxLHOk3D+sFTAMs2ZMGQXvw/l4jP9BzZAcg4atmpZ1gDlaCDdLnIN
-H2pkMSCEfUmmWjfrRcmF9dTHF5kH5ptV5AzoqbTOjFu1EVzPig4N1qx3gf4ynCSecs5U89BvolbW
-7MM3LGVYvlcAGvI1+ut7MV3CwRI9loGIlonBWVx65n9wNOeD4rHh4bhY79SV5GCc8JaXcozrhAIu
-ZY+kt9J/Z93I055cqqmkoCUUBpvsT34tC38ddfEz2O3OuHVtPlu5mB0xDVbYQw8wkbIEa91WvpWA
-VWe+2M2D2RjuLg+GLZKecBPs3lHJQ3gCpU3I+V/EkVhGFndadKpAvAefMLmx9xIX3eP/JEAdemrR
-TxgKqpAd60Ae36EeRJIQmvKN4dFLRp7oRUKX6kWZ8+xm1QL68qZKJKrezrnK+T+Tb/mjuuqlPpmt
-/f97mfVl7vBZKGfXkJWkE4SphMHozs51k2MavDzq1WQfLSoSOcbDWjLtR5EWDrw4wVDej8oqkDQc
-7kGUnF4ZLvhFSZl0kbAEb+MEWrGrKqv+x9CWttrhSmQGbmBNvUJO/3jaJMobtNeWOWyu8Q6qp31I
-iyBMz2TWuJdGsE7RKlY6oJO9r4Ak4Ap+58rVyuiFVdw2KuGUaJPHZnJED4AhMmwlxyOAgwrr
------END CERTIFICATE-----
-
-TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1
-=============================================
------BEGIN CERTIFICATE-----
-MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIxGDAWBgNVBAcT
-D0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxpbXNlbCB2ZSBUZWtub2xvamlr
-IEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0wKwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24g
-TWVya2V6aSAtIEthbXUgU00xNjA0BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRp
-ZmlrYXNpIC0gU3VydW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYD
-VQQGEwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXllIEJpbGlt
-c2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklUQUsxLTArBgNVBAsTJEth
-bXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBTTTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11
-IFNNIFNTTCBLb2sgU2VydGlmaWthc2kgLSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
-MIIBCgKCAQEAr3UwM6q7a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y8
-6Ij5iySrLqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INrN3wc
-wv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2XYacQuFWQfw4tJzh0
-3+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/iSIzL+aFCr2lqBs23tPcLG07xxO9
-WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4fAJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQU
-ZT/HiobGPN08VFw1+DrtUgxHV8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJ
-KoZIhvcNAQELBQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh
-AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPfIPP54+M638yc
-lNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4lzwDGrpDxpa5RXI4s6ehlj2R
-e37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0j
-q5Rm+K37DwhuJi1/FwcJsoz7UMCflo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM=
------END CERTIFICATE-----
-
-GDCA TrustAUTH R5 ROOT
-======================
------BEGIN CERTIFICATE-----
-MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UEBhMCQ04xMjAw
-BgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8wHQYDVQQD
-DBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVow
-YjELMAkGA1UEBhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ
-IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0B
-AQEFAAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJjDp6L3TQs
-AlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBjTnnEt1u9ol2x8kECK62p
-OqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+uKU49tm7srsHwJ5uu4/Ts765/94Y9cnrr
-pftZTqfrlYwiOXnhLQiPzLyRuEH3FMEjqcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ
-9Cy5WmYqsBebnh52nUpmMUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQ
-xXABZG12ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloPzgsM
-R6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3GkL30SgLdTMEZeS1SZ
-D2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeCjGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4
-oR24qoAATILnsn8JuLwwoC8N9VKejveSswoAHQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx
-9hoh49pwBiFYFIeFd3mqgnkCAwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlR
-MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg
-p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZmDRd9FBUb1Ov9
-H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5COmSdI31R9KrO9b7eGZONn35
-6ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ryL3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd
-+PwyvzeG5LuOmCd+uh8W4XAR8gPfJWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQ
-HtZa37dG/OaG+svgIHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBD
-F8Io2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV09tL7ECQ
-8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQXR4EzzffHqhmsYzmIGrv
-/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrqT8p+ck0LcIymSLumoRT2+1hEmRSuqguT
-aaApJUqlyyvdimYHFngVV3Eb7PVHhPOeMTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g==
------END CERTIFICATE-----
-
-TrustCor RootCert CA-1
-======================
------BEGIN CERTIFICATE-----
-MIIEMDCCAxigAwIBAgIJANqb7HHzA7AZMA0GCSqGSIb3DQEBCwUAMIGkMQswCQYDVQQGEwJQQTEP
-MA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3Ig
-U3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3Jp
-dHkxHzAdBgNVBAMMFlRydXN0Q29yIFJvb3RDZXJ0IENBLTEwHhcNMTYwMjA0MTIzMjE2WhcNMjkx
-MjMxMTcyMzE2WjCBpDELMAkGA1UEBhMCUEExDzANBgNVBAgMBlBhbmFtYTEUMBIGA1UEBwwLUGFu
-YW1hIENpdHkxJDAiBgNVBAoMG1RydXN0Q29yIFN5c3RlbXMgUy4gZGUgUi5MLjEnMCUGA1UECwwe
-VHJ1c3RDb3IgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR8wHQYDVQQDDBZUcnVzdENvciBSb290Q2Vy
-dCBDQS0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv463leLCJhJrMxnHQFgKq1mq
-jQCj/IDHUHuO1CAmujIS2CNUSSUQIpidRtLByZ5OGy4sDjjzGiVoHKZaBeYei0i/mJZ0PmnK6bV4
-pQa81QBeCQryJ3pS/C3Vseq0iWEk8xoT26nPUu0MJLq5nux+AHT6k61sKZKuUbS701e/s/OojZz0
-JEsq1pme9J7+wH5COucLlVPat2gOkEz7cD+PSiyU8ybdY2mplNgQTsVHCJCZGxdNuWxu72CVEY4h
-gLW9oHPY0LJ3xEXqWib7ZnZ2+AYfYW0PVcWDtxBWcgYHpfOxGgMFZA6dWorWhnAbJN7+KIor0Gqw
-/Hqi3LJ5DotlDwIDAQABo2MwYTAdBgNVHQ4EFgQU7mtJPHo/DeOxCbeKyKsZn3MzUOcwHwYDVR0j
-BBgwFoAU7mtJPHo/DeOxCbeKyKsZn3MzUOcwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
-AYYwDQYJKoZIhvcNAQELBQADggEBACUY1JGPE+6PHh0RU9otRCkZoB5rMZ5NDp6tPVxBb5UrJKF5
-mDo4Nvu7Zp5I/5CQ7z3UuJu0h3U/IJvOcs+hVcFNZKIZBqEHMwwLKeXx6quj7LUKdJDHfXLy11yf
-ke+Ri7fc7Waiz45mO7yfOgLgJ90WmMCV1Aqk5IGadZQ1nJBfiDcGrVmVCrDRZ9MZyonnMlo2HD6C
-qFqTvsbQZJG2z9m2GM/bftJlo6bEjhcxwft+dtvTheNYsnd6djtsL1Ac59v2Z3kf9YKVmgenFK+P
-3CghZwnS1k1aHBkcjndcw5QkPTJrS37UeJSDvjdNzl/HHk484IkzlQsPpTLWPFp5LBk=
------END CERTIFICATE-----
-
-TrustCor RootCert CA-2
-======================
------BEGIN CERTIFICATE-----
-MIIGLzCCBBegAwIBAgIIJaHfyjPLWQIwDQYJKoZIhvcNAQELBQAwgaQxCzAJBgNVBAYTAlBBMQ8w
-DQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5MSQwIgYDVQQKDBtUcnVzdENvciBT
-eXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRydXN0Q29yIENlcnRpZmljYXRlIEF1dGhvcml0
-eTEfMB0GA1UEAwwWVHJ1c3RDb3IgUm9vdENlcnQgQ0EtMjAeFw0xNjAyMDQxMjMyMjNaFw0zNDEy
-MzExNzI2MzlaMIGkMQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5h
-bWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5U
-cnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHzAdBgNVBAMMFlRydXN0Q29yIFJvb3RDZXJ0
-IENBLTIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnIG7CKqJiJJWQdsg4foDSq8Gb
-ZQWU9MEKENUCrO2fk8eHyLAnK0IMPQo+QVqedd2NyuCb7GgypGmSaIwLgQ5WoD4a3SwlFIIvl9Nk
-RvRUqdw6VC0xK5mC8tkq1+9xALgxpL56JAfDQiDyitSSBBtlVkxs1Pu2YVpHI7TYabS3OtB0PAx1
-oYxOdqHp2yqlO/rOsP9+aij9JxzIsekp8VduZLTQwRVtDr4uDkbIXvRR/u8OYzo7cbrPb1nKDOOb
-XUm4TOJXsZiKQlecdu/vvdFoqNL0Cbt3Nb4lggjEFixEIFapRBF37120Hapeaz6LMvYHL1cEksr1
-/p3C6eizjkxLAjHZ5DxIgif3GIJ2SDpxsROhOdUuxTTCHWKF3wP+TfSvPd9cW436cOGlfifHhi5q
-jxLGhF5DUVCcGZt45vz27Ud+ez1m7xMTiF88oWP7+ayHNZ/zgp6kPwqcMWmLmaSISo5uZk3vFsQP
-eSghYA2FFn3XVDjxklb9tTNMg9zXEJ9L/cb4Qr26fHMC4P99zVvh1Kxhe1fVSntb1IVYJ12/+Ctg
-rKAmrhQhJ8Z3mjOAPF5GP/fDsaOGM8boXg25NSyqRsGFAnWAoOsk+xWq5Gd/bnc/9ASKL3x74xdh
-8N0JqSDIvgmk0H5Ew7IwSjiqqewYmgeCK9u4nBit2uBGF6zPXQIDAQABo2MwYTAdBgNVHQ4EFgQU
-2f4hQG6UnrybPZx9mCAZ5YwwYrIwHwYDVR0jBBgwFoAU2f4hQG6UnrybPZx9mCAZ5YwwYrIwDwYD
-VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBAJ5Fngw7tu/h
-Osh80QA9z+LqBrWyOrsGS2h60COXdKcs8AjYeVrXWoSK2BKaG9l9XE1wxaX5q+WjiYndAfrs3fnp
-kpfbsEZC89NiqpX+MWcUaViQCqoL7jcjx1BRtPV+nuN79+TMQjItSQzL/0kMmx40/W5ulop5A7Zv
-2wnL/V9lFDfhOPXzYRZY5LVtDQsEGz9QLX+zx3oaFoBg+Iof6Rsqxvm6ARppv9JYx1RXCI/hOWB3
-S6xZhBqI8d3LT3jX5+EzLfzuQfogsL7L9ziUwOHQhQ+77Sxzq+3+knYaZH9bDTMJBzN7Bj8RpFxw
-PIXAz+OQqIN3+tvmxYxoZxBnpVIt8MSZj3+/0WvitUfW2dCFmU2Umw9Lje4AWkcdEQOsQRivh7dv
-DDqPys/cA8GiCcjl/YBeyGBCARsaU1q7N6a3vLqE6R5sGtRk2tRD/pOLS/IseRYQ1JMLiI+h2IYU
-RpFHmygk71dSTlxCnKr3Sewn6EAes6aJInKc9Q0ztFijMDvd1GpUk74aTfOTlPf8hAs/hCBcNANE
-xdqtvArBAs8e5ZTZ845b2EzwnexhF7sUMlQMAimTHpKG9n/v55IFDlndmQguLvqcAFLTxWYp5KeX
-RKQOKIETNcX2b2TmQcTVL8w0RSXPQQCWPUouwpaYT05KnJe32x+SMsj/D1Fu1uwJ
------END CERTIFICATE-----
-
-TrustCor ECA-1
-==============
------BEGIN CERTIFICATE-----
-MIIEIDCCAwigAwIBAgIJAISCLF8cYtBAMA0GCSqGSIb3DQEBCwUAMIGcMQswCQYDVQQGEwJQQTEP
-MA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3Ig
-U3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3Jp
-dHkxFzAVBgNVBAMMDlRydXN0Q29yIEVDQS0xMB4XDTE2MDIwNDEyMzIzM1oXDTI5MTIzMTE3Mjgw
-N1owgZwxCzAJBgNVBAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5
-MSQwIgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRydXN0Q29y
-IENlcnRpZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOVHJ1c3RDb3IgRUNBLTEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPj+ARtZ+odnbb3w9U73NjKYKtR8aja+3+XzP4Q1HpGjOR
-MRegdMTUpwHmspI+ap3tDvl0mEDTPwOABoJA6LHip1GnHYMma6ve+heRK9jGrB6xnhkB1Zem6g23
-xFUfJ3zSCNV2HykVh0A53ThFEXXQmqc04L/NyFIduUd+Dbi7xgz2c1cWWn5DkR9VOsZtRASqnKmc
-p0yJF4OuowReUoCLHhIlERnXDH19MURB6tuvsBzvgdAsxZohmz3tQjtQJvLsznFhBmIhVE5/wZ0+
-fyCMgMsq2JdiyIMzkX2woloPV+g7zPIlstR8L+xNxqE6FXrntl019fZISjZFZtS6mFjBAgMBAAGj
-YzBhMB0GA1UdDgQWBBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAfBgNVHSMEGDAWgBREnkj1zG1I1KBL
-f/5ZJC+Dl5mahjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsF
-AAOCAQEABT41XBVwm8nHc2FvcivUwo/yQ10CzsSUuZQRg2dd4mdsdXa/uwyqNsatR5Nj3B5+1t4u
-/ukZMjgDfxT2AHMsWbEhBuH7rBiVDKP/mZb3Kyeb1STMHd3BOuCYRLDE5D53sXOpZCz2HAF8P11F
-hcCF5yWPldwX8zyfGm6wyuMdKulMY/okYWLW2n62HGz1Ah3UKt1VkOsqEUc8Ll50soIipX1TH0Xs
-J5F95yIW6MBoNtjG8U+ARDL54dHRHareqKucBK+tIA5kmE2la8BIWJZpTdwHjFGTot+fDz2LYLSC
-jaoITmJF4PkL0uDgPFveXHEnJcLmA4GLEFPjx1WitJ/X5g==
------END CERTIFICATE-----
-
-SSL.com Root Certification Authority RSA
-========================================
------BEGIN CERTIFICATE-----
-MIIF3TCCA8WgAwIBAgIIeyyb0xaAMpkwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCVVMxDjAM
-BgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24x
-MTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTYw
-MjEyMTczOTM5WhcNNDEwMjEyMTczOTM5WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx
-EDAOBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NM
-LmNvbSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIwDQYJKoZIhvcNAQEBBQAD
-ggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh4/WvpOz6Sl2RxFdHaxh3a3by/ZPkPQ/C
-Fp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVToZRdOQbngT0aXqhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8
-P2FI7bADFB0QDksZ4LtO7IZl/zbzXmcCC52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/ge
-oeOy3ZExqysdBP+lSgQ36YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9aqkp
-k8zruFvh/l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrIM/4RJTXq/LrFYD3Z
-fBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUWNmuF6R7As93EJNyAKoFBbZQ+yODJ
-gUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH4Ih86hzOtXVcUS4cK38acijnALXRdMbX5J+tB5O2
-UzU1/Dfkw/ZdFr4hc96SCvigY2q8lpJqPvi8ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi8
-1xtZPCvM8hnIk2snYxnP/Okm+Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4s
-bE6x/c+cCbqiM+2HAgMBAAGjYzBhMB0GA1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAPBgNV
-HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMA4GA1UdDwEB/wQE
-AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAIBgRlCn7Jp0cHh5wYfGVcpNxJK1ok1iOMq8bs3AD/CUr
-dIWQPXhq9LmLpZc7tRiRux6n+UBbkflVma8eEdBcHadm47GUBwwyOabqG7B52B2ccETjit3E+ZUf
-ijhDPwGFpUenPUayvOUiaPd7nNgsPgohyC0zrL/FgZkxdMF1ccW+sfAjRfSda/wZY52jvATGGAsl
-u1OJD7OAUN5F7kR/q5R4ZJjT9ijdh9hwZXT7DrkT66cPYakylszeu+1jTBi7qUD3oFRuIIhxdRjq
-erQ0cuAjJ3dctpDqhiVAq+8zD8ufgr6iIPv2tS0a5sKFsXQP+8hlAqRSAUfdSSLBv9jra6x+3uxj
-MxW3IwiPxg+NQVrdjsW5j+VFP3jbutIbQLH+cU0/4IGiul607BXgk90IH37hVZkLId6Tngr75qNJ
-vTYw/ud3sqB1l7UtgYgXZSD32pAAn8lSzDLKNXz1PQ/YK9f1JmzJBjSWFupwWRoyeXkLtoh/D1JI
-Pb9s2KJELtFOt3JY04kTlf5Eq/jXixtunLwsoFvVagCvXzfh1foQC5ichucmj87w7G6KVwuA406y
-wKBjYZC6VWg3dGq2ktufoYYitmUnDuy2n0Jg5GfCtdpBC8TTi2EbvPofkSvXRAdeuims2cXp71NI
-WuuA8ShYIc2wBlX7Jz9TkHCpBB5XJ7k=
------END CERTIFICATE-----
-
-SSL.com Root Certification Authority ECC
-========================================
------BEGIN CERTIFICATE-----
-MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMCVVMxDjAMBgNV
-BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xMTAv
-BgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEy
-MTgxNDAzWhcNNDEwMjEyMTgxNDAzWjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAO
-BgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv
-bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuBBAAiA2IA
-BEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI7Z4INcgn64mMU1jrYor+
-8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPgCemB+vNH06NjMGEwHQYDVR0OBBYEFILR
-hXMw5zUE044CkvvlpNHEIejNMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTT
-jgKS++Wk0cQh6M0wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCW
-e+0F+S8Tkdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+gA0z
-5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl
------END CERTIFICATE-----
-
-SSL.com EV Root Certification Authority RSA R2
-==============================================
------BEGIN CERTIFICATE-----
-MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNVBAYTAlVTMQ4w
-DAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9u
-MTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy
-MB4XDTE3MDUzMTE4MTQzN1oXDTQyMDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQI
-DAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYD
-VQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMIICIjAN
-BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvqM0fNTPl9fb69LT3w23jh
-hqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssufOePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7w
-cXHswxzpY6IXFJ3vG2fThVUCAtZJycxa4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTO
-Zw+oz12WGQvE43LrrdF9HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+
-B6KjBSYRaZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcAb9Zh
-CBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQGp8hLH94t2S42Oim
-9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQVPWKchjgGAGYS5Fl2WlPAApiiECto
-RHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMOpgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+Slm
-JuwgUHfbSguPvuUCYHBBXtSuUDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48
-+qvWBkofZ6aYMBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV
-HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa49QaAJadz20Zp
-qJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBWs47LCp1Jjr+kxJG7ZhcFUZh1
-++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nx
-Y/hoLVUE0fKNsKTPvDxeH3jnpaAgcLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2G
-guDKBAdRUNf/ktUM79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDz
-OFSz/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXtll9ldDz7
-CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEmKf7GUmG6sXP/wwyc5Wxq
-lD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKKQbNmC1r7fSOl8hqw/96bg5Qu0T/fkreR
-rwU7ZcegbLHNYhLDkBvjJc40vG93drEQw/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1
-hlMYegouCRw2n5H9gooiS9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX
-9hwJ1C07mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w==
------END CERTIFICATE-----
-
-SSL.com EV Root Certification Authority ECC
-===========================================
------BEGIN CERTIFICATE-----
-MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMCVVMxDjAMBgNV
-BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xNDAy
-BgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYw
-MjEyMTgxNTIzWhcNNDEwMjEyMTgxNTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx
-EDAOBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NM
-LmNvbSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB
-BAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMAVIbc/R/fALhBYlzccBYy
-3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1KthkuWnBaBu2+8KGwytAJKaNjMGEwHQYDVR0O
-BBYEFFvKXuXe0oGqzagtZFG22XKbl+ZPMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe
-5d7SgarNqC1kUbbZcpuX5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJ
-N+vp1RPZytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZgh5Mm
-m7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg==
------END CERTIFICATE-----
-
-GlobalSign Root CA - R6
-=======================
------BEGIN CERTIFICATE-----
-MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEgMB4GA1UECxMX
-R2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds
-b2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQxMjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9i
-YWxTaWduIFJvb3QgQ0EgLSBSNjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFs
-U2lnbjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQss
-grRIxutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1kZguSgMpE
-3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxDaNc9PIrFsmbVkJq3MQbF
-vuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJwLnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqM
-PKq0pPbzlUoSB239jLKJz9CgYXfIWHSw1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+
-azayOeSsJDa38O+2HBNXk7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05O
-WgtH8wY2SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/hbguy
-CLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4nWUx2OVvq+aWh2IMP
-0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpYrZxCRXluDocZXFSxZba/jJvcE+kN
-b7gu3GduyYsRtYQUigAZcIN5kZeR1BonvzceMgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQE
-AwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNV
-HSMEGDAWgBSubAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN
-nsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGtIxg93eFyRJa0
-lV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr6155wsTLxDKZmOMNOsIeDjHfrY
-BzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLjvUYAGm0CuiVdjaExUd1URhxN25mW7xocBFym
-Fe944Hn+Xds+qkxV/ZoVqW/hpvvfcDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr
-3TsTjxKM4kEaSHpzoHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB1
-0jZpnOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfspA9MRf/T
-uTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+vJJUEeKgDu+6B5dpffItK
-oZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+t
-JDfLRVpOoERIyNiwmcUVhAn21klJwGW45hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA=
------END CERTIFICATE-----
-
-OISTE WISeKey Global Root GC CA
-===============================
------BEGIN CERTIFICATE-----
-MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQswCQYDVQQGEwJD
-SDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEo
-MCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRa
-Fw00MjA1MDkwOTU4MzNaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQL
-ExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh
-bCBSb290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4nieUqjFqdr
-VCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4Wp2OQ0jnUsYd4XxiWD1Ab
-NTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd
-BgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7TrYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0E
-AwMDaAAwZQIwJsdpW9zV57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtk
-AjEA2zQgMgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9
------END CERTIFICATE-----
-
-GTS Root R1
-===========
------BEGIN CERTIFICATE-----
-MIIFWjCCA0KgAwIBAgIQbkepxUtHDA3sM9CJuRz04TANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQG
-EwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJv
-b3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAG
-A1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIi
-MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx
-9vaMf/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7wCl7r
-aKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjwTcLCeoiKu7rPWRnW
-r4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0PfyblqAj+lug8aJRT7oM6iCsVlgmy4HqM
-LnXWnOunVmSPlk9orj2XwoSPwLxAwAtcvfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly
-4cpk9+aCEI3oncKKiPo4Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr
-06zqkUspzBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92
-wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70paDPvOmbsB4om
-3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrNVjzRlwW5y0vtOUucxD/SVRNu
-JLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD
-VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEM
-BQADggIBADiWCu49tJYeX++dnAsznyvgyv3SjgofQXSlfKqE1OXyHuY3UjKcC9FhHb8owbZEKTV1
-d5iyfNm9dKyKaOOpMQkpAWBz40d8U6iQSifvS9efk+eCNs6aaAyC58/UEBZvXw6ZXPYfcX3v73sv
-fuo21pdwCxXu11xWajOl40k4DLh9+42FpLFZXvRq4d2h9mREruZRgyFmxhE+885H7pwoHyXa/6xm
-ld01D1zvICxi/ZG6qcz8WpyTgYMpl0p8WnK0OdC3d8t5/Wk6kjftbjhlRn7pYL15iJdfOBL07q9b
-gsiG1eGZbYwE8na6SfZu6W0eX6DvJ4J2QPim01hcDyxC2kLGe4g0x8HYRZvBPsVhHdljUEn2NIVq
-4BjFbkerQUIpm/ZgDdIx02OYI5NaAIFItO/Nis3Jz5nu2Z6qNuFoS3FJFDYoOj0dzpqPJeaAcWEr
-tXvM+SUWgeExX6GjfhaknBZqlxi9dnKlC54dNuYvoS++cJEPqOba+MSSQGwlfnuzCdyyF62ARPBo
-pY+Udf90WuioAnwMCeKpSwughQtiue+hMZL77/ZRBIls6Kl0obsXs7X9SQ98POyDGCBDTtWTurQ0
-sR8WNh8M5mQ5Fkzc4P4dyKliPUDqysU0ArSuiYgzNdwsE3PYJ/HQcu51OyLemGhmW/HGY0dVHLql
-CFF1pkgl
------END CERTIFICATE-----
-
-GTS Root R2
-===========
------BEGIN CERTIFICATE-----
-MIIFWjCCA0KgAwIBAgIQbkepxlqz5yDFMJo/aFLybzANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQG
-EwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJv
-b3QgUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAG
-A1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIi
-MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTuk
-k3LvCvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY6Dlo
-7JUle3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAuMC6C/Pq8tBcKSOWI
-m8Wba96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7kRXuJVfeKH2JShBKzwkCX44ofR5Gm
-dFrS+LFjKBC4swm4VndAoiaYecb+3yXuPuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbu
-ak7MkogwTZq9TwtImoS1mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscsz
-cTJGr61K8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RW
-Ir9qS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKaG73Vululycsl
-aVNVJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCqgc7dGtxRcw1PcOnlthYhGXmy
-5okLdWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD
-VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEM
-BQADggIBALZp8KZ3/p7uC4Gt4cCpx/k1HUCCq+YEtN/L9x0Pg/B+E02NjO7jMyLDOfxA325BS0JT
-vhaI8dI4XsRomRyYUpOM52jtG2pzegVATX9lO9ZY8c6DR2Dj/5epnGB3GFW1fgiTz9D2PGcDFWEJ
-+YF59exTpJ/JjwGLc8R3dtyDovUMSRqodt6Sm2T4syzFJ9MHwAiApJiS4wGWAqoC7o87xdFtCjMw
-c3i5T1QWvwsHoaRc5svJXISPD+AVdyx+Jn7axEvbpxZ3B7DNdehyQtaVhJ2Gg/LkkM0JR9SLA3Da
-WsYDQvTtN6LwG1BUSw7YhN4ZKJmBR64JGz9I0cNv4rBgF/XuIwKl2gBbbZCr7qLpGzvpx0QnRY5r
-n/WkhLx3+WuXrD5RRaIRpsyF7gpo8j5QOHokYh4XIDdtak23CZvJ/KRY9bb7nE4Yu5UC56Gtmwfu
-Nmsk0jmGwZODUNKBRqhfYlcsu2xkiAhu7xNUX90txGdj08+JN7+dIPT7eoOboB6BAFDC5AwiWVIQ
-7UNWhwD4FFKnHYuTjKJNRn8nxnGbJN7k2oaLDX5rIMHAnuFl2GqjpuiFizoHCBy69Y9Vmhh1fuXs
-gWbRIXOhNUQLgD1bnF5vKheW0YMjiGZt5obicDIvUiLnyOd/xCxgXS/Dr55FBcOEArf9LAhST4Ld
-o/DUhgkC
------END CERTIFICATE-----
-
-GTS Root R3
-===========
------BEGIN CERTIFICATE-----
-MIICDDCCAZGgAwIBAgIQbkepx2ypcyRAiQ8DVd2NHTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV
-UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
-UjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
-ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcq
-hkjOPQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUU
-Rout736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24Cej
-QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP
-0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEAgFukfCPAlaUs3L6JbyO5o91lAFJekazInXJ0
-glMLfalAvWhgxeG4VDvBNhcl2MG9AjEAnjWSdIUlUfUk7GRSJFClH9voy8l27OyCbvWFGFPouOOa
-KaqW04MjyaR7YbPMAuhd
------END CERTIFICATE-----
-
-GTS Root R4
-===========
------BEGIN CERTIFICATE-----
-MIICCjCCAZGgAwIBAgIQbkepyIuUtui7OyrYorLBmTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV
-UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
-UjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
-ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcq
-hkjOPQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa
-6zzuhXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqj
-QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV
-2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNnADBkAjBqUFJ0CMRw3J5QdCHojXohw0+WbhXRIjVhLfoI
-N+4Zba3bssx9BzT1YBkstTTZbyACMANxsbqjYAuG7ZoIapVon+Kz4ZNkfF6Tpt95LY2F45TPI11x
-zPKwTdb+mciUqXWi4w==
------END CERTIFICATE-----
-
-UCA Global G2 Root
-==================
------BEGIN CERTIFICATE-----
-MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9MQswCQYDVQQG
-EwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBHbG9iYWwgRzIgUm9vdDAeFw0x
-NjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0xCzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlU
-cnVzdDEbMBkGA1UEAwwSVUNBIEdsb2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
-MIICCgKCAgEAxeYrb3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmT
-oni9kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzmVHqUwCoV
-8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/RVogvGjqNO7uCEeBHANBS
-h6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDcC/Vkw85DvG1xudLeJ1uK6NjGruFZfc8o
-LTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIjtm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/
-R+zvWr9LesGtOxdQXGLYD0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBe
-KW4bHAyvj5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6DlNaBa
-4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6iIis7nCs+dwp4wwc
-OxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznPO6Q0ibd5Ei9Hxeepl2n8pndntd97
-8XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O
-BBYEFIHEjMz15DD/pQwIX4wVZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo
-5sOASD0Ee/ojL3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5
-1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl1qnN3e92mI0A
-Ds0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oUb3n09tDh05S60FdRvScFDcH9
-yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LVPtateJLbXDzz2K36uGt/xDYotgIVilQsnLAX
-c47QN6MUPJiVAAwpBVueSUmxX8fjy88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHo
-jhJi6IjMtX9Gl8CbEGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZk
-bxqgDMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI+Vg7RE+x
-ygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGyYiGqhkCyLmTTX8jjfhFn
-RR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bXUB+K+wb1whnw0A==
------END CERTIFICATE-----
-
-UCA Extended Validation Root
-============================
------BEGIN CERTIFICATE-----
-MIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQG
-EwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9u
-IFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMxMDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8G
-A1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIi
-MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrs
-iWogD4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvSsPGP2KxF
-Rv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aopO2z6+I9tTcg1367r3CTu
-eUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dksHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR
-59mzLC52LqGj3n5qiAno8geK+LLNEOfic0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH
-0mK1lTnj8/FtDw5lhIpjVMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KR
-el7sFsLzKuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/TuDv
-B0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41Gsx2VYVdWf6/wFlth
-WG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs1+lvK9JKBZP8nm9rZ/+I8U6laUpS
-NwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQDfwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS
-3H5aBZ8eNJr34RQwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQEL
-BQADggIBADaNl8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR
-ap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQVBcZEhrxH9cM
-aVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5c6sq1WnIeJEmMX3ixzDx/BR4
-dxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb
-+7lsq+KePRXBOy5nAliRn+/4Qh8st2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOW
-F3sGPjLtx7dCvHaj2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwi
-GpWOvpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2CxR9GUeOc
-GMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmxcmtpzyKEC2IPrNkZAJSi
-djzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbMfjKaiJUINlK73nZfdklJrX+9ZSCyycEr
-dhh2n1ax
------END CERTIFICATE-----
-
-Certigna Root CA
-================
------BEGIN CERTIFICATE-----
-MIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAwWjELMAkGA1UE
-BhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAwMiA0ODE0NjMwODEwMDAzNjEZ
-MBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0xMzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjda
-MFoxCzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYz
-MDgxMDAwMzYxGTAXBgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4IC
-DwAwggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sOty3tRQgX
-stmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9MCiBtnyN6tMbaLOQdLNyz
-KNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPuI9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8
-JXrJhFwLrN1CTivngqIkicuQstDuI7pmTLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16
-XdG+RCYyKfHx9WzMfgIhC59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq
-4NYKpkDfePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3YzIoej
-wpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWTCo/1VTp2lc5ZmIoJ
-lXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1kJWumIWmbat10TWuXekG9qxf5kBdI
-jzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp/
-/TBt2dzhauH8XwIDAQABo4IBGjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw
-HQYDVR0OBBYEFBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of
-1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczovL3d3d3cuY2Vy
-dGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilodHRwOi8vY3JsLmNlcnRpZ25h
-LmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYraHR0cDovL2NybC5kaGlteW90aXMuY29tL2Nl
-cnRpZ25hcm9vdGNhLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOIt
-OoldaDgvUSILSo3L6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxP
-TGRGHVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH60BGM+RFq
-7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncBlA2c5uk5jR+mUYyZDDl3
-4bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdio2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd
-8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS
-6Cvu5zHbugRqh5jnxV/vfaci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaY
-tlu3zM63Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayhjWZS
-aX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw3kAP+HwV96LOPNde
-E4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0=
------END CERTIFICATE-----
-
-emSign Root CA - G1
-===================
------BEGIN CERTIFICATE-----
-MIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYDVQQGEwJJTjET
-MBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRl
-ZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBHMTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgx
-ODMwMDBaMGcxCzAJBgNVBAYTAklOMRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVk
-aHJhIFRlY2hub2xvZ2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIB
-IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQzf2N4aLTN
-LnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO8oG0x5ZOrRkVUkr+PHB1
-cM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aqd7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHW
-DV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhMtTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ
-6DqS0hdW5TUaQBw+jSztOd9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrH
-hQIDAQABo0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQDAgEG
-MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31xPaOfG1vR2vjTnGs2
-vZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjMwiI/aTvFthUvozXGaCocV685743Q
-NcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6dGNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q
-+Mri/Tm3R7nrft8EI6/6nAYH6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeih
-U80Bv2noWgbyRQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx
-iN66zB+Afko=
------END CERTIFICATE-----
-
-emSign ECC Root CA - G3
-=======================
------BEGIN CERTIFICATE-----
-MIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQGEwJJTjETMBEG
-A1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEg
-MB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4
-MTgzMDAwWjBrMQswCQYDVQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11
-ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g
-RzMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0WXTsuwYc
-58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xySfvalY8L1X44uT6EYGQIr
-MgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuBzhccLikenEhjQjAOBgNVHQ8BAf8EBAMC
-AQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+D
-CBeQyh+KTOgNG3qxrdWBCUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7
-jHvrZQnD+JbNR6iC8hZVdyR+EhCVBCyj
------END CERTIFICATE-----
-
-emSign Root CA - C1
-===================
------BEGIN CERTIFICATE-----
-MIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCVVMx
-EzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNp
-Z24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UE
-BhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQD
-ExNlbVNpZ24gUm9vdCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+up
-ufGZBczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZHdPIWoU/
-Xse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH3DspVpNqs8FqOp099cGX
-OFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvHGPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4V
-I5b2P/AgNBbeCsbEBEV5f6f9vtKppa+cxSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleooms
-lMuoaJuvimUnzYnu3Yy1aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+
-XJGFehiqTbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQAD
-ggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87/kOXSTKZEhVb3xEp
-/6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4kqNPEjE2NuLe/gDEo2APJ62gsIq1
-NnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrGYQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9
-wC68AivTxEDkigcxHpvOJpkT+xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQ
-BmIMMMAVSKeoWXzhriKi4gp6D/piq1JM4fHfyr6DDUI=
------END CERTIFICATE-----
-
-emSign ECC Root CA - C3
-=======================
------BEGIN CERTIFICATE-----
-MIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQGEwJVUzETMBEG
-A1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMxIDAeBgNVBAMTF2VtU2lnbiBF
-Q0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UE
-BhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQD
-ExdlbVNpZ24gRUNDIFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd
-6bciMK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4OjavtisIGJAnB9
-SMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0OBBYEFPtaSNCAIEDyqOkA
-B2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA2gA
-MGUCMQC02C8Cif22TGK6Q04ThHK1rt0c3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwU
-ZOR8loMRnLDRWmFLpg9J0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ==
------END CERTIFICATE-----
-
-Hongkong Post Root CA 3
-=======================
------BEGIN CERTIFICATE-----
-MIIFzzCCA7egAwIBAgIUCBZfikyl7ADJk0DfxMauI7gcWqQwDQYJKoZIhvcNAQELBQAwbzELMAkG
-A1UEBhMCSEsxEjAQBgNVBAgTCUhvbmcgS29uZzESMBAGA1UEBxMJSG9uZyBLb25nMRYwFAYDVQQK
-Ew1Ib25na29uZyBQb3N0MSAwHgYDVQQDExdIb25na29uZyBQb3N0IFJvb3QgQ0EgMzAeFw0xNzA2
-MDMwMjI5NDZaFw00MjA2MDMwMjI5NDZaMG8xCzAJBgNVBAYTAkhLMRIwEAYDVQQIEwlIb25nIEtv
-bmcxEjAQBgNVBAcTCUhvbmcgS29uZzEWMBQGA1UEChMNSG9uZ2tvbmcgUG9zdDEgMB4GA1UEAxMX
-SG9uZ2tvbmcgUG9zdCBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz
-iNfqzg8gTr7m1gNt7ln8wlffKWihgw4+aMdoWJwcYEuJQwy51BWy7sFOdem1p+/l6TWZ5Mwc50tf
-jTMwIDNT2aa71T4Tjukfh0mtUC1Qyhi+AViiE3CWu4mIVoBc+L0sPOFMV4i707mV78vH9toxdCim
-5lSJ9UExyuUmGs2C4HDaOym71QP1mbpV9WTRYA6ziUm4ii8F0oRFKHyPaFASePwLtVPLwpgchKOe
-sL4jpNrcyCse2m5FHomY2vkALgbpDDtw1VAliJnLzXNg99X/NWfFobxeq81KuEXryGgeDQ0URhLj
-0mRiikKYvLTGCAj4/ahMZJx2Ab0vqWwzD9g/KLg8aQFChn5pwckGyuV6RmXpwtZQQS4/t+TtbNe/
-JgERohYpSms0BpDsE9K2+2p20jzt8NYt3eEV7KObLyzJPivkaTv/ciWxNoZbx39ri1UbSsUgYT2u
-y1DhCDq+sI9jQVMwCFk8mB13umOResoQUGC/8Ne8lYePl8X+l2oBlKN8W4UdKjk60FSh0Tlxnf0h
-+bV78OLgAo9uliQlLKAeLKjEiafv7ZkGL7YKTE/bosw3Gq9HhS2KX8Q0NEwA/RiTZxPRN+ZItIsG
-xVd7GYYKecsAyVKvQv83j+GjHno9UKtjBucVtT+2RTeUN7F+8kjDf8V1/peNRY8apxpyKBpADwID
-AQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQXnc0e
-i9Y5K3DTXNSguB+wAPzFYTAdBgNVHQ4EFgQUF53NHovWOStw01zUoLgfsAD8xWEwDQYJKoZIhvcN
-AQELBQADggIBAFbVe27mIgHSQpsY1Q7XZiNc4/6gx5LS6ZStS6LG7BJ8dNVI0lkUmcDrudHr9Egw
-W62nV3OZqdPlt9EuWSRY3GguLmLYauRwCy0gUCCkMpXRAJi70/33MvJJrsZ64Ee+bs7Lo3I6LWld
-y8joRTnU+kLBEUx3XZL7av9YROXrgZ6voJmtvqkBZss4HTzfQx/0TW60uhdG/H39h4F5ag0zD/ov
-+BS5gLNdTaqX4fnkGMX41TiMJjz98iji7lpJiCzfeT2OnpA8vUFKOt1b9pq0zj8lMH8yfaIDlNDc
-eqFS3m6TjRgm/VWsvY+b0s+v54Ysyx8Jb6NvqYTUc79NoXQbTiNg8swOqn+knEwlqLJmOzj/2ZQw
-9nKEvmhVEA/GcywWaZMH/rFF7buiVWqw2rVKAiUnhde3t4ZEFolsgCs+l6mc1X5VTMbeRRAc6uk7
-nwNT7u56AQIWeNTowr5GdogTPyK7SBIdUgC0An4hGh6cJfTzPV4e0hz5sy229zdcxsshTrD3mUcY
-hcErulWuBurQB7Lcq9CClnXO0lD+mefPL5/ndtFhKvshuzHQqp9HpLIiyhY6UFfEW0NnxWViA0kB
-60PZ2Pierc+xYw5F9KBaLJstxabArahH9CdMOA0uG0k7UvToiIMrVCjU8jVStDKDYmlkDJGcn5fq
-dBb9HxEGmpv0
------END CERTIFICATE-----
diff --git a/vendor/composer/ca-bundle/src/CaBundle.php b/vendor/composer/ca-bundle/src/CaBundle.php
deleted file mode 100644
index 20bef13fd..000000000
--- a/vendor/composer/ca-bundle/src/CaBundle.php
+++ /dev/null
@@ -1,311 +0,0 @@
-
- *
- * For the full copyright and license information, please view
- * the LICENSE file that was distributed with this source code.
- */
-
-namespace Composer\CaBundle;
-
-use Psr\Log\LoggerInterface;
-use Symfony\Component\Process\PhpProcess;
-
-/**
- * @author Chris Smith
- * @author Jordi Boggiano
- */
-class CaBundle
-{
- private static $caPath;
- private static $caFileValidity = array();
- private static $useOpensslParse;
-
- /**
- * Returns the system CA bundle path, or a path to the bundled one
- *
- * This method was adapted from Sslurp.
- * https://github.com/EvanDotPro/Sslurp
- *
- * (c) Evan Coury
- *
- * For the full copyright and license information, please see below:
- *
- * Copyright (c) 2013, Evan Coury
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification,
- * are permitted provided that the following conditions are met:
- *
- * * Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * @param LoggerInterface $logger optional logger for information about which CA files were loaded
- * @return string path to a CA bundle file or directory
- */
- public static function getSystemCaRootBundlePath(LoggerInterface $logger = null)
- {
- if (self::$caPath !== null) {
- return self::$caPath;
- }
- $caBundlePaths = array();
-
-
- // If SSL_CERT_FILE env variable points to a valid certificate/bundle, use that.
- // This mimics how OpenSSL uses the SSL_CERT_FILE env variable.
- $caBundlePaths[] = getenv('SSL_CERT_FILE');
-
- // If SSL_CERT_DIR env variable points to a valid certificate/bundle, use that.
- // This mimics how OpenSSL uses the SSL_CERT_FILE env variable.
- $caBundlePaths[] = getenv('SSL_CERT_DIR');
-
- $caBundlePaths[] = ini_get('openssl.cafile');
- $caBundlePaths[] = ini_get('openssl.capath');
-
- $otherLocations = array(
- '/etc/pki/tls/certs/ca-bundle.crt', // Fedora, RHEL, CentOS (ca-certificates package)
- '/etc/ssl/certs/ca-certificates.crt', // Debian, Ubuntu, Gentoo, Arch Linux (ca-certificates package)
- '/etc/ssl/ca-bundle.pem', // SUSE, openSUSE (ca-certificates package)
- '/usr/local/share/certs/ca-root-nss.crt', // FreeBSD (ca_root_nss_package)
- '/usr/ssl/certs/ca-bundle.crt', // Cygwin
- '/opt/local/share/curl/curl-ca-bundle.crt', // OS X macports, curl-ca-bundle package
- '/usr/local/share/curl/curl-ca-bundle.crt', // Default cURL CA bunde path (without --with-ca-bundle option)
- '/usr/share/ssl/certs/ca-bundle.crt', // Really old RedHat?
- '/etc/ssl/cert.pem', // OpenBSD
- '/usr/local/etc/ssl/cert.pem', // FreeBSD 10.x
- '/usr/local/etc/openssl/cert.pem', // OS X homebrew, openssl package
- '/usr/local/etc/openssl@1.1/cert.pem', // OS X homebrew, openssl@1.1 package
- );
-
- foreach($otherLocations as $location) {
- $otherLocations[] = dirname($location);
- }
-
- $caBundlePaths = array_merge($caBundlePaths, $otherLocations);
-
- foreach ($caBundlePaths as $caBundle) {
- if (self::caFileUsable($caBundle, $logger)) {
- return self::$caPath = $caBundle;
- }
-
- if (self::caDirUsable($caBundle)) {
- return self::$caPath = $caBundle;
- }
- }
-
- return self::$caPath = static::getBundledCaBundlePath(); // Bundled CA file, last resort
- }
-
- /**
- * Returns the path to the bundled CA file
- *
- * In case you don't want to trust the user or the system, you can use this directly
- *
- * @return string path to a CA bundle file
- */
- public static function getBundledCaBundlePath()
- {
- $caBundleFile = __DIR__.'/../res/cacert.pem';
-
- // cURL does not understand 'phar://' paths
- // see https://github.com/composer/ca-bundle/issues/10
- if (0 === strpos($caBundleFile, 'phar://')) {
- file_put_contents(
- $tempCaBundleFile = tempnam(sys_get_temp_dir(), 'openssl-ca-bundle-'),
- file_get_contents($caBundleFile)
- );
-
- register_shutdown_function(function() use ($tempCaBundleFile) {
- @unlink($tempCaBundleFile);
- });
-
- $caBundleFile = $tempCaBundleFile;
- }
-
- return $caBundleFile;
- }
-
- /**
- * Validates a CA file using opensl_x509_parse only if it is safe to use
- *
- * @param string $filename
- * @param LoggerInterface $logger optional logger for information about which CA files were loaded
- *
- * @return bool
- */
- public static function validateCaFile($filename, LoggerInterface $logger = null)
- {
- static $warned = false;
-
- if (isset(self::$caFileValidity[$filename])) {
- return self::$caFileValidity[$filename];
- }
-
- $contents = file_get_contents($filename);
-
- // assume the CA is valid if php is vulnerable to
- // https://www.sektioneins.de/advisories/advisory-012013-php-openssl_x509_parse-memory-corruption-vulnerability.html
- if (!static::isOpensslParseSafe()) {
- if (!$warned && $logger) {
- $logger->warning(sprintf(
- 'Your version of PHP, %s, is affected by CVE-2013-6420 and cannot safely perform certificate validation, we strongly suggest you upgrade.',
- PHP_VERSION
- ));
- $warned = true;
- }
-
- $isValid = !empty($contents);
- } else {
- $isValid = (bool) openssl_x509_parse($contents);
- }
-
- if ($logger) {
- $logger->debug('Checked CA file '.realpath($filename).': '.($isValid ? 'valid' : 'invalid'));
- }
-
- return self::$caFileValidity[$filename] = $isValid;
- }
-
- /**
- * Test if it is safe to use the PHP function openssl_x509_parse().
- *
- * This checks if OpenSSL extensions is vulnerable to remote code execution
- * via the exploit documented as CVE-2013-6420.
- *
- * @return bool
- */
- public static function isOpensslParseSafe()
- {
- if (null !== self::$useOpensslParse) {
- return self::$useOpensslParse;
- }
-
- if (PHP_VERSION_ID >= 50600) {
- return self::$useOpensslParse = true;
- }
-
- // Vulnerable:
- // PHP 5.3.0 - PHP 5.3.27
- // PHP 5.4.0 - PHP 5.4.22
- // PHP 5.5.0 - PHP 5.5.6
- if (
- (PHP_VERSION_ID < 50400 && PHP_VERSION_ID >= 50328)
- || (PHP_VERSION_ID < 50500 && PHP_VERSION_ID >= 50423)
- || (PHP_VERSION_ID < 50600 && PHP_VERSION_ID >= 50507)
- ) {
- // This version of PHP has the fix for CVE-2013-6420 applied.
- return self::$useOpensslParse = true;
- }
-
- if (defined('PHP_WINDOWS_VERSION_BUILD')) {
- // Windows is probably insecure in this case.
- return self::$useOpensslParse = false;
- }
-
- $compareDistroVersionPrefix = function ($prefix, $fixedVersion) {
- $regex = '{^'.preg_quote($prefix).'([0-9]+)$}';
-
- if (preg_match($regex, PHP_VERSION, $m)) {
- return ((int) $m[1]) >= $fixedVersion;
- }
-
- return false;
- };
-
- // Hard coded list of PHP distributions with the fix backported.
- if (
- $compareDistroVersionPrefix('5.3.3-7+squeeze', 18) // Debian 6 (Squeeze)
- || $compareDistroVersionPrefix('5.4.4-14+deb7u', 7) // Debian 7 (Wheezy)
- || $compareDistroVersionPrefix('5.3.10-1ubuntu3.', 9) // Ubuntu 12.04 (Precise)
- ) {
- return self::$useOpensslParse = true;
- }
-
- // Symfony Process component is missing so we assume it is unsafe at this point
- if (!class_exists('Symfony\Component\Process\PhpProcess')) {
- return self::$useOpensslParse = false;
- }
-
- // This is where things get crazy, because distros backport security
- // fixes the chances are on NIX systems the fix has been applied but
- // it's not possible to verify that from the PHP version.
- //
- // To verify exec a new PHP process and run the issue testcase with
- // known safe input that replicates the bug.
-
- // Based on testcase in https://github.com/php/php-src/commit/c1224573c773b6845e83505f717fbf820fc18415
- // changes in https://github.com/php/php-src/commit/76a7fd893b7d6101300cc656058704a73254d593
- $cert = 'LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVwRENDQTR5Z0F3SUJBZ0lKQUp6dThyNnU2ZUJjTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUhETVFzd0NRWUQKVlFRR0V3SkVSVEVjTUJvR0ExVUVDQXdUVG05eVpISm9aV2x1TFZkbGMzUm1ZV3hsYmpFUU1BNEdBMVVFQnd3SApTOE9Ed3Jac2JqRVVNQklHQTFVRUNnd0xVMlZyZEdsdmJrVnBibk14SHpBZEJnTlZCQXNNRmsxaGJHbGphVzkxCmN5QkRaWEowSUZObFkzUnBiMjR4SVRBZkJnTlZCQU1NR0cxaGJHbGphVzkxY3k1elpXdDBhVzl1WldsdWN5NWsKWlRFcU1DZ0dDU3FHU0liM0RRRUpBUlliYzNSbFptRnVMbVZ6YzJWeVFITmxhM1JwYjI1bGFXNXpMbVJsTUhVWQpaREU1TnpBd01UQXhNREF3TURBd1dnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQVhEVEUwTVRFeU9ERXhNemt6TlZvd2djTXhDekFKQmdOVkJBWVRBa1JGTVJ3d0dnWURWUVFJREJOTwpiM0prY21obGFXNHRWMlZ6ZEdaaGJHVnVNUkF3RGdZRFZRUUhEQWRMdzRQQ3RteHVNUlF3RWdZRFZRUUtEQXRUClpXdDBhVzl1UldsdWN6RWZNQjBHQTFVRUN3d1dUV0ZzYVdOcGIzVnpJRU5sY25RZ1UyVmpkR2x2YmpFaE1COEcKQTFVRUF3d1liV0ZzYVdOcGIzVnpMbk5sYTNScGIyNWxhVzV6TG1SbE1Tb3dLQVlKS29aSWh2Y05BUWtCRmh0egpkR1ZtWVc0dVpYTnpaWEpBYzJWcmRHbHZibVZwYm5NdVpHVXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCCkR3QXdnZ0VLQW9JQkFRRERBZjNobDdKWTBYY0ZuaXlFSnBTU0RxbjBPcUJyNlFQNjV1c0pQUnQvOFBhRG9xQnUKd0VZVC9OYSs2ZnNnUGpDMHVLOURaZ1dnMnRIV1dvYW5TYmxBTW96NVBINlorUzRTSFJaN2UyZERJalBqZGhqaAowbUxnMlVNTzV5cDBWNzk3R2dzOWxOdDZKUmZIODFNTjJvYlhXczROdHp0TE11RDZlZ3FwcjhkRGJyMzRhT3M4CnBrZHVpNVVhd1Raa3N5NXBMUEhxNWNNaEZHbTA2djY1Q0xvMFYyUGQ5K0tBb2tQclBjTjVLTEtlYno3bUxwazYKU01lRVhPS1A0aWRFcXh5UTdPN2ZCdUhNZWRzUWh1K3ByWTNzaTNCVXlLZlF0UDVDWm5YMmJwMHdLSHhYMTJEWAoxbmZGSXQ5RGJHdkhUY3lPdU4rblpMUEJtM3ZXeG50eUlJdlZBZ01CQUFHalFqQkFNQWtHQTFVZEV3UUNNQUF3CkVRWUpZSVpJQVliNFFnRUJCQVFEQWdlQU1Bc0dBMVVkRHdRRUF3SUZvREFUQmdOVkhTVUVEREFLQmdnckJnRUYKQlFjREFqQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFHMGZaWVlDVGJkajFYWWMrMVNub2FQUit2SThDOENhRAo4KzBVWWhkbnlVNGdnYTBCQWNEclk5ZTk0ZUVBdTZacXljRjZGakxxWFhkQWJvcHBXb2NyNlQ2R0QxeDMzQ2tsClZBcnpHL0t4UW9oR0QySmVxa2hJTWxEb214SE83a2EzOStPYThpMnZXTFZ5alU4QVp2V01BcnVIYTRFRU55RzcKbFcyQWFnYUZLRkNyOVRuWFRmcmR4R1ZFYnY3S1ZRNmJkaGc1cDVTanBXSDErTXEwM3VSM1pYUEJZZHlWODMxOQpvMGxWajFLRkkyRENML2xpV2lzSlJvb2YrMWNSMzVDdGQwd1lCY3BCNlRac2xNY09QbDc2ZHdLd0pnZUpvMlFnClpzZm1jMnZDMS9xT2xOdU5xLzBUenprVkd2OEVUVDNDZ2FVK1VYZTRYT1Z2a2NjZWJKbjJkZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K';
- $script = <<<'EOT'
-
-error_reporting(-1);
-$info = openssl_x509_parse(base64_decode('%s'));
-var_dump(PHP_VERSION, $info['issuer']['emailAddress'], $info['validFrom_time_t']);
-
-EOT;
- $script = '<'."?php\n".sprintf($script, $cert);
-
- try {
- $process = new PhpProcess($script);
- $process->mustRun();
- } catch (\Exception $e) {
- // In the case of any exceptions just accept it is not possible to
- // determine the safety of openssl_x509_parse and bail out.
- return self::$useOpensslParse = false;
- }
-
- $output = preg_split('{\r?\n}', trim($process->getOutput()));
- $errorOutput = trim($process->getErrorOutput());
-
- if (
- count($output) === 3
- && $output[0] === sprintf('string(%d) "%s"', strlen(PHP_VERSION), PHP_VERSION)
- && $output[1] === 'string(27) "stefan.esser@sektioneins.de"'
- && $output[2] === 'int(-1)'
- && preg_match('{openssl_x509_parse\(\): illegal (?:ASN1 data type for|length in) timestamp in - on line \d+}', $errorOutput)
- ) {
- // This PHP has the fix backported probably by a distro security team.
- return self::$useOpensslParse = true;
- }
-
- return self::$useOpensslParse = false;
- }
-
- /**
- * Resets the static caches
- */
- public static function reset()
- {
- self::$caFileValidity = array();
- self::$caPath = null;
- self::$useOpensslParse = null;
- }
-
- private static function caFileUsable($certFile, LoggerInterface $logger = null)
- {
- return $certFile && @is_file($certFile) && @is_readable($certFile) && static::validateCaFile($certFile, $logger);
- }
-
- private static function caDirUsable($certDir)
- {
- return $certDir && @is_dir($certDir) && @is_readable($certDir) && glob($certDir . '/*');
- }
-}
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index aa51e5cf0..de702d814 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -165,64 +165,6 @@
"time"
]
},
- {
- "name": "composer/ca-bundle",
- "version": "1.2.5",
- "version_normalized": "1.2.5.0",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/ca-bundle.git",
- "reference": "62e8fc2dc550e5d6d8c9360c7721662670f58149"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/ca-bundle/zipball/62e8fc2dc550e5d6d8c9360c7721662670f58149",
- "reference": "62e8fc2dc550e5d6d8c9360c7721662670f58149",
- "shasum": ""
- },
- "require": {
- "ext-openssl": "*",
- "ext-pcre": "*",
- "php": "^5.3.2 || ^7.0 || ^8.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8",
- "psr/log": "^1.0",
- "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0"
- },
- "time": "2019-12-11T14:44:42+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Composer\\CaBundle\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
- }
- ],
- "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
- "keywords": [
- "cabundle",
- "cacert",
- "certificate",
- "ssl",
- "tls"
- ]
- },
{
"name": "consoletvs/charts",
"version": "6.5.3",
@@ -306,262 +248,6 @@
],
"description": "implementation of xdg base directory specification for php"
},
- {
- "name": "doctrine/cache",
- "version": "1.10.0",
- "version_normalized": "1.10.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/cache.git",
- "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/cache/zipball/382e7f4db9a12dc6c19431743a2b096041bcdd62",
- "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62",
- "shasum": ""
- },
- "require": {
- "php": "~7.1"
- },
- "conflict": {
- "doctrine/common": ">2.2,<2.4"
- },
- "require-dev": {
- "alcaeus/mongo-php-adapter": "^1.1",
- "doctrine/coding-standard": "^6.0",
- "mongodb/mongodb": "^1.1",
- "phpunit/phpunit": "^7.0",
- "predis/predis": "~1.0"
- },
- "suggest": {
- "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver"
- },
- "time": "2019-11-29T15:36:20+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.9.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
- "homepage": "https://www.doctrine-project.org/projects/cache.html",
- "keywords": [
- "abstraction",
- "apcu",
- "cache",
- "caching",
- "couchdb",
- "memcached",
- "php",
- "redis",
- "xcache"
- ]
- },
- {
- "name": "doctrine/dbal",
- "version": "v2.10.0",
- "version_normalized": "2.10.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/dbal.git",
- "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/0c9a646775ef549eb0a213a4f9bd4381d9b4d934",
- "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934",
- "shasum": ""
- },
- "require": {
- "doctrine/cache": "^1.0",
- "doctrine/event-manager": "^1.0",
- "ext-pdo": "*",
- "php": "^7.2"
- },
- "require-dev": {
- "doctrine/coding-standard": "^6.0",
- "jetbrains/phpstorm-stubs": "^2019.1",
- "phpstan/phpstan": "^0.11.3",
- "phpunit/phpunit": "^8.4.1",
- "symfony/console": "^2.0.5|^3.0|^4.0|^5.0"
- },
- "suggest": {
- "symfony/console": "For helpful console commands such as SQL execution and import of files."
- },
- "time": "2019-11-03T16:50:43+00:00",
- "bin": [
- "bin/doctrine-dbal"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.10.x-dev",
- "dev-develop": "3.0.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Doctrine\\DBAL\\": "lib/Doctrine/DBAL"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- }
- ],
- "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.",
- "homepage": "https://www.doctrine-project.org/projects/dbal.html",
- "keywords": [
- "abstraction",
- "database",
- "db2",
- "dbal",
- "mariadb",
- "mssql",
- "mysql",
- "oci8",
- "oracle",
- "pdo",
- "pgsql",
- "postgresql",
- "queryobject",
- "sasql",
- "sql",
- "sqlanywhere",
- "sqlite",
- "sqlserver",
- "sqlsrv"
- ]
- },
- {
- "name": "doctrine/event-manager",
- "version": "1.1.0",
- "version_normalized": "1.1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/event-manager.git",
- "reference": "629572819973f13486371cb611386eb17851e85c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c",
- "reference": "629572819973f13486371cb611386eb17851e85c",
- "shasum": ""
- },
- "require": {
- "php": "^7.1"
- },
- "conflict": {
- "doctrine/common": "<2.9@dev"
- },
- "require-dev": {
- "doctrine/coding-standard": "^6.0",
- "phpunit/phpunit": "^7.0"
- },
- "time": "2019-11-10T09:48:07+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\": "lib/Doctrine/Common"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- },
- {
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com"
- }
- ],
- "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.",
- "homepage": "https://www.doctrine-project.org/projects/event-manager.html",
- "keywords": [
- "event",
- "event dispatcher",
- "event manager",
- "event system",
- "events"
- ]
- },
{
"name": "doctrine/inflector",
"version": "1.3.1",
@@ -1478,128 +1164,6 @@
],
"description": "Highlight PHP code in terminal"
},
- {
- "name": "jaybizzle/crawler-detect",
- "version": "v1.2.90",
- "version_normalized": "1.2.90.0",
- "source": {
- "type": "git",
- "url": "https://github.com/JayBizzle/Crawler-Detect.git",
- "reference": "35f963386e6a189697fe4b14dc91fb42b17fda4b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/JayBizzle/Crawler-Detect/zipball/35f963386e6a189697fe4b14dc91fb42b17fda4b",
- "reference": "35f963386e6a189697fe4b14dc91fb42b17fda4b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8|^5.5|^6.5",
- "satooshi/php-coveralls": "1.*"
- },
- "time": "2019-12-08T20:03:27+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Jaybizzle\\CrawlerDetect\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mark Beech",
- "email": "m@rkbee.ch",
- "role": "Developer"
- }
- ],
- "description": "CrawlerDetect is a PHP class for detecting bots/crawlers/spiders via the user agent",
- "homepage": "https://github.com/JayBizzle/Crawler-Detect/",
- "keywords": [
- "crawler",
- "crawler detect",
- "crawler detector",
- "crawlerdetect",
- "php crawler detect"
- ]
- },
- {
- "name": "jenssegers/agent",
- "version": "v2.6.3",
- "version_normalized": "2.6.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/jenssegers/agent.git",
- "reference": "bcb895395e460478e101f41cdab139c48dc721ce"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/jenssegers/agent/zipball/bcb895395e460478e101f41cdab139c48dc721ce",
- "reference": "bcb895395e460478e101f41cdab139c48dc721ce",
- "shasum": ""
- },
- "require": {
- "jaybizzle/crawler-detect": "^1.2",
- "mobiledetect/mobiledetectlib": "^2.7.6",
- "php": ">=5.6"
- },
- "require-dev": {
- "php-coveralls/php-coveralls": "^2.1",
- "phpunit/phpunit": "^5.0|^6.0|^7.0"
- },
- "suggest": {
- "illuminate/support": "^4.0|^5.0"
- },
- "time": "2019-01-19T21:32:55+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- },
- "laravel": {
- "providers": [
- "Jenssegers\\Agent\\AgentServiceProvider"
- ],
- "aliases": {
- "Agent": "Jenssegers\\Agent\\Facades\\Agent"
- }
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Jenssegers\\Agent\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jens Segers",
- "homepage": "https://jenssegers.com"
- }
- ],
- "description": "Desktop/mobile user agent parser with support for Laravel, based on Mobiledetect",
- "homepage": "https://github.com/jenssegers/agent",
- "keywords": [
- "Agent",
- "browser",
- "desktop",
- "laravel",
- "mobile",
- "platform",
- "user agent",
- "useragent"
- ]
- },
{
"name": "khill/lavacharts",
"version": "3.1.12",
@@ -2240,60 +1804,6 @@
"twitter"
]
},
- {
- "name": "mobiledetect/mobiledetectlib",
- "version": "2.8.34",
- "version_normalized": "2.8.34.0",
- "source": {
- "type": "git",
- "url": "https://github.com/serbanghita/Mobile-Detect.git",
- "reference": "6f8113f57a508494ca36acbcfa2dc2d923c7ed5b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/6f8113f57a508494ca36acbcfa2dc2d923c7ed5b",
- "reference": "6f8113f57a508494ca36acbcfa2dc2d923c7ed5b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.0.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.8.35||~5.7"
- },
- "time": "2019-09-18T18:44:20+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "Mobile_Detect.php"
- ],
- "psr-0": {
- "Detection": "namespaced/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Serban Ghita",
- "email": "serbanghita@gmail.com",
- "homepage": "http://mobiledetect.net",
- "role": "Developer"
- }
- ],
- "description": "Mobile_Detect is a lightweight PHP class for detecting mobile devices. It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.",
- "homepage": "https://github.com/serbanghita/Mobile-Detect",
- "keywords": [
- "detect mobile devices",
- "mobile",
- "mobile detect",
- "mobile detector",
- "php mobile detect"
- ]
- },
{
"name": "mockery/mockery",
"version": "1.3.0",
@@ -3526,196 +3036,6 @@
"xunit"
]
},
- {
- "name": "pragmarx/datatables",
- "version": "v1.4.12",
- "version_normalized": "1.4.12.0",
- "source": {
- "type": "git",
- "url": "https://github.com/antonioribeiro/laravel4-datatables-package.git",
- "reference": "142631346d01c074248b80c8bc55fdfea255e23e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/antonioribeiro/laravel4-datatables-package/zipball/142631346d01c074248b80c8bc55fdfea255e23e",
- "reference": "142631346d01c074248b80c8bc55fdfea255e23e",
- "shasum": ""
- },
- "require": {
- "illuminate/database": ">=4.0.0",
- "illuminate/filesystem": ">=4.0.0",
- "illuminate/support": ">=4.0.0",
- "illuminate/view": ">=4.0.0",
- "php": ">=5.3.0"
- },
- "require-dev": {
- "laravel/laravel": ">=4.0.0",
- "mockery/mockery": "0.7.2",
- "phpunit/phpunit": "3.7.*"
- },
- "time": "2019-09-13T13:59:39+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "src/migrations"
- ],
- "psr-0": {
- "Bllim\\Datatables": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Bilal Gultekin",
- "email": "bilal@bilal.im"
- }
- ],
- "description": "Server-side handler of DataTables Jquery Plugin for Laravel 4",
- "keywords": [
- "datatable",
- "datatables",
- "datatables jquery plugin",
- "laravel",
- "laravel4"
- ]
- },
- {
- "name": "pragmarx/support",
- "version": "v0.9.0",
- "version_normalized": "0.9.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/antonioribeiro/support.git",
- "reference": "97d12bc8d29c35a509973f8f898f3d4d1eaf3777"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/antonioribeiro/support/zipball/97d12bc8d29c35a509973f8f898f3d4d1eaf3777",
- "reference": "97d12bc8d29c35a509973f8f898f3d4d1eaf3777",
- "shasum": ""
- },
- "require": {
- "illuminate/filesystem": "~4.0|~5.0|~6.0",
- "php": ">=5.4.0",
- "symfony/var-dumper": "~2.6|~3.0|~4.0"
- },
- "suggest": {
- "laravel/framework": "Laravel framework.",
- "symfony/yaml": "The Yaml class needs it"
- },
- "time": "2019-09-10T21:17:26+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "0.7.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "PragmaRX\\Support\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Antonio Carlos Ribeiro",
- "email": "acr@antoniocarlosribeiro.com",
- "role": "Creator"
- }
- ],
- "description": "PragmaRX components support package",
- "keywords": [
- "laravel",
- "pragmarx"
- ]
- },
- {
- "name": "pragmarx/tracker",
- "version": "v3.5.0",
- "version_normalized": "3.5.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/antonioribeiro/tracker.git",
- "reference": "76e8e7fa058c6b1c15fea4b2ffa5169ae087d6f7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/antonioribeiro/tracker/zipball/76e8e7fa058c6b1c15fea4b2ffa5169ae087d6f7",
- "reference": "76e8e7fa058c6b1c15fea4b2ffa5169ae087d6f7",
- "shasum": ""
- },
- "require": {
- "doctrine/dbal": "^2.6",
- "jaybizzle/crawler-detect": "~1.0",
- "jenssegers/agent": "~2.1",
- "laravel/framework": "~4|~5|~6",
- "php": ">=5.3.7",
- "pragmarx/datatables": "^1.4.12",
- "pragmarx/support": "~0.6|~0.7|~0.8|~0.9",
- "psr/log": "~1.0",
- "ramsey/uuid": "~3",
- "snowplow/referer-parser": "~0.1",
- "ua-parser/uap-php": "~3.4"
- },
- "require-dev": {
- "mockery/mockery": "~0.8"
- },
- "suggest": {
- "geoip/geoip": "~1.14",
- "geoip2/geoip2": "~2.0"
- },
- "time": "2019-10-01T17:58:07+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.1.x-dev"
- },
- "laravel": {
- "providers": [
- "PragmaRX\\Tracker\\Vendor\\Laravel\\ServiceProvider"
- ],
- "aliases": {
- "Tracker": "PragmaRX\\Tracker\\Vendor\\Laravel\\Facade"
- }
- }
- },
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "PragmaRX\\Tracker\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Antonio Carlos Ribeiro",
- "email": "acr@antoniocarlosribeiro.com",
- "role": "Creator & Designer"
- }
- ],
- "description": "A Laravel Visitor Tracker",
- "keywords": [
- "laravel",
- "logging",
- "mobile detection",
- "pragmarx",
- "tracker",
- "tracking",
- "user agent",
- "visitor"
- ]
- },
{
"name": "predis/predis",
"version": "v1.1.1",
@@ -4090,23 +3410,23 @@
},
{
"name": "ramsey/uuid",
- "version": "3.9.1",
- "version_normalized": "3.9.1.0",
+ "version": "3.9.2",
+ "version_normalized": "3.9.2.0",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
- "reference": "5ac2740e0c8c599d2bbe7f113a939f2b5b216c67"
+ "reference": "7779489a47d443f845271badbdcedfe4df8e06fb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/uuid/zipball/5ac2740e0c8c599d2bbe7f113a939f2b5b216c67",
- "reference": "5ac2740e0c8c599d2bbe7f113a939f2b5b216c67",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/7779489a47d443f845271badbdcedfe4df8e06fb",
+ "reference": "7779489a47d443f845271badbdcedfe4df8e06fb",
"shasum": ""
},
"require": {
"ext-json": "*",
"paragonie/random_compat": "^1 | ^2 | 9.99.99",
- "php": "^5.4 | ^7",
+ "php": "^5.4 | ^7 | ^8",
"symfony/polyfill-ctype": "^1.8"
},
"replace": {
@@ -4116,13 +3436,13 @@
"codeception/aspect-mock": "^1 | ^2",
"doctrine/annotations": "^1.2",
"goaop/framework": "1.0.0-alpha.2 | ^1 | ^2.1",
- "jakub-onderka/php-parallel-lint": "^0.9.0",
- "mockery/mockery": "^0.9.9",
+ "jakub-onderka/php-parallel-lint": "^1",
+ "mockery/mockery": "^0.9.11 | ^1",
"moontoast/math": "^1.1",
"paragonie/random-lib": "^2",
"php-mock/php-mock-phpunit": "^0.3 | ^1.1",
"phpunit/phpunit": "^4.8 | ^5.4 | ^6.5",
- "squizlabs/php_codesniffer": "^2.3"
+ "squizlabs/php_codesniffer": "^3.5"
},
"suggest": {
"ext-ctype": "Provides support for PHP Ctype functions",
@@ -4134,7 +3454,7 @@
"ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid",
"ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
},
- "time": "2019-12-01T04:55:27+00:00",
+ "time": "2019-12-17T08:18:51+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -4765,48 +4085,6 @@
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
"homepage": "https://github.com/sebastianbergmann/version"
},
- {
- "name": "snowplow/referer-parser",
- "version": "0.2.0",
- "version_normalized": "0.2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/snowplow/referer-parser.git",
- "reference": "5ce872b60999c63039723959a45928ef1196f03d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/snowplow/referer-parser/zipball/5ce872b60999c63039723959a45928ef1196f03d",
- "reference": "5ce872b60999c63039723959a45928ef1196f03d",
- "shasum": ""
- },
- "require-dev": {
- "phpunit/phpunit": "3.*",
- "symfony/yaml": "*"
- },
- "suggest": {
- "symfony/yaml": "Support for YAML configuration file"
- },
- "time": "2016-01-29T16:43:00+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-0": {
- "Snowplow\\RefererParser": "php/src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Lars Strojny",
- "email": "lars@strojny.net"
- }
- ],
- "description": "Snowplow Refer(r)er parser for PHP"
- },
{
"name": "swiftmailer/swiftmailer",
"version": "v6.2.3",
@@ -6207,17 +5485,17 @@
},
{
"name": "symfony/var-dumper",
- "version": "v4.4.1",
- "version_normalized": "4.4.1.0",
+ "version": "v4.4.2",
+ "version_normalized": "4.4.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "0a89a1dbbedd9fb2cfb2336556dec8305273c19a"
+ "reference": "be330f919bdb395d1e0c3f2bfb8948512d6bdd99"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0a89a1dbbedd9fb2cfb2336556dec8305273c19a",
- "reference": "0a89a1dbbedd9fb2cfb2336556dec8305273c19a",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/be330f919bdb395d1e0c3f2bfb8948512d6bdd99",
+ "reference": "be330f919bdb395d1e0c3f2bfb8948512d6bdd99",
"shasum": ""
},
"require": {
@@ -6240,7 +5518,7 @@
"ext-intl": "To show region name in time zone dump",
"symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script"
},
- "time": "2019-11-28T13:33:56+00:00",
+ "time": "2019-12-18T13:41:29+00:00",
"bin": [
"Resources/bin/var-dump-server"
],
@@ -6429,65 +5707,6 @@
"web"
]
},
- {
- "name": "ua-parser/uap-php",
- "version": "v3.9.2",
- "version_normalized": "3.9.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/ua-parser/uap-php.git",
- "reference": "eb9c78aeb3984e5834c4f3845e7263dbe4277935"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ua-parser/uap-php/zipball/eb9c78aeb3984e5834c4f3845e7263dbe4277935",
- "reference": "eb9c78aeb3984e5834c4f3845e7263dbe4277935",
- "shasum": ""
- },
- "require": {
- "composer/ca-bundle": "^1.1",
- "php": ">=5.3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "<8",
- "symfony/console": "^2.0 || ^3.0 || ^4.0",
- "symfony/filesystem": "^2.0 || ^3.0 || ^4.0",
- "symfony/finder": "^2.0 || ^3.0 || ^4.0",
- "symfony/yaml": "^2.0 || ^3.0 || ^4.0"
- },
- "suggest": {
- "symfony/console": "Required for CLI usage - ^2.0 || ^3.0 || ^4.0",
- "symfony/filesystem": "Required for CLI usage - 2.0 || ^3.0 || ^4.0",
- "symfony/finder": "Required for CLI usage - ^2.0 || ^3.0 || ^4.0",
- "symfony/yaml": "Required for CLI usage - ^4.0 || ^5.0"
- },
- "time": "2019-11-06T11:37:45+00:00",
- "bin": [
- "bin/uaparser"
- ],
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "UAParser\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Dave Olsen",
- "email": "dmolsen@gmail.com"
- },
- {
- "name": "Lars Strojny",
- "email": "lars@strojny.net"
- }
- ],
- "description": "A multi-language port of Browserscope's user agent parser."
- },
{
"name": "vlucas/phpdotenv",
"version": "v3.6.0",
diff --git a/vendor/doctrine/cache/LICENSE b/vendor/doctrine/cache/LICENSE
deleted file mode 100644
index 8c38cc1bc..000000000
--- a/vendor/doctrine/cache/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2006-2015 Doctrine Project
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/doctrine/cache/README.md b/vendor/doctrine/cache/README.md
deleted file mode 100644
index bf9a7fe35..000000000
--- a/vendor/doctrine/cache/README.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# Doctrine Cache
-
-[](http://travis-ci.org/doctrine/cache)
-[](https://scrutinizer-ci.com/g/doctrine/cache/?branch=master)
-[](https://scrutinizer-ci.com/g/doctrine/cache/?branch=master)
-
-[](https://packagist.org/packages/doctrine/cache)
-[](https://packagist.org/packages/doctrine/cache)
-
-Cache component extracted from the Doctrine Common project. [Documentation](https://www.doctrine-project.org/projects/doctrine-orm/en/current/reference/caching.html)
diff --git a/vendor/doctrine/cache/UPGRADE.md b/vendor/doctrine/cache/UPGRADE.md
deleted file mode 100644
index e1f8a503e..000000000
--- a/vendor/doctrine/cache/UPGRADE.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Upgrade to 1.4
-
-## Minor BC Break: `Doctrine\Common\Cache\FileCache#$extension` is now `private`.
-
-If you need to override the value of `Doctrine\Common\Cache\FileCache#$extension`, then use the
-second parameter of `Doctrine\Common\Cache\FileCache#__construct()` instead of overriding
-the property in your own implementation.
-
-## Minor BC Break: file based caches paths changed
-
-`Doctrine\Common\Cache\FileCache`, `Doctrine\Common\Cache\PhpFileCache` and
-`Doctrine\Common\Cache\FilesystemCache` are using a different cache paths structure.
-
-If you rely on warmed up caches for deployments, consider that caches generated
-with `doctrine/cache` `<1.4` are not compatible with the new directory structure,
-and will be ignored.
diff --git a/vendor/doctrine/cache/composer.json b/vendor/doctrine/cache/composer.json
deleted file mode 100644
index d72c1e0bd..000000000
--- a/vendor/doctrine/cache/composer.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "name": "doctrine/cache",
- "type": "library",
- "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
- "keywords": [
- "php",
- "cache",
- "caching",
- "abstraction",
- "redis",
- "memcached",
- "couchdb",
- "xcache",
- "apcu"
- ],
- "homepage": "https://www.doctrine-project.org/projects/cache.html",
- "license": "MIT",
- "authors": [
- {"name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com"},
- {"name": "Roman Borschel", "email": "roman@code-factory.org"},
- {"name": "Benjamin Eberlei", "email": "kontakt@beberlei.de"},
- {"name": "Jonathan Wage", "email": "jonwage@gmail.com"},
- {"name": "Johannes Schmitt", "email": "schmittjoh@gmail.com"}
- ],
- "require": {
- "php": "~7.1"
- },
- "require-dev": {
- "alcaeus/mongo-php-adapter": "^1.1",
- "mongodb/mongodb": "^1.1",
- "phpunit/phpunit": "^7.0",
- "predis/predis": "~1.0",
- "doctrine/coding-standard": "^6.0"
- },
- "suggest": {
- "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver"
- },
- "conflict": {
- "doctrine/common": ">2.2,<2.4"
- },
- "autoload": {
- "psr-4": { "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" }
- },
- "autoload-dev": {
- "psr-4": { "Doctrine\\Tests\\": "tests/Doctrine/Tests" }
- },
- "extra": {
- "branch-alias": {
- "dev-master": "1.9.x-dev"
- }
- }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ApcCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ApcCache.php
deleted file mode 100644
index 138d49a53..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ApcCache.php
+++ /dev/null
@@ -1,105 +0,0 @@
-= 50500) {
- $info['num_hits'] = $info['num_hits'] ?? $info['nhits'];
- $info['num_misses'] = $info['num_misses'] ?? $info['nmisses'];
- $info['start_time'] = $info['start_time'] ?? $info['stime'];
- }
-
- return [
- Cache::STATS_HITS => $info['num_hits'],
- Cache::STATS_MISSES => $info['num_misses'],
- Cache::STATS_UPTIME => $info['start_time'],
- Cache::STATS_MEMORY_USAGE => $info['mem_size'],
- Cache::STATS_MEMORY_AVAILABLE => $sma['avail_mem'],
- ];
- }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ApcuCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ApcuCache.php
deleted file mode 100644
index a72521361..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ApcuCache.php
+++ /dev/null
@@ -1,106 +0,0 @@
- $info['num_hits'],
- Cache::STATS_MISSES => $info['num_misses'],
- Cache::STATS_UPTIME => $info['start_time'],
- Cache::STATS_MEMORY_USAGE => $info['mem_size'],
- Cache::STATS_MEMORY_AVAILABLE => $sma['avail_mem'],
- ];
- }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ArrayCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ArrayCache.php
deleted file mode 100644
index 1beb7098f..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ArrayCache.php
+++ /dev/null
@@ -1,113 +0,0 @@
-upTime = time();
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFetch($id)
- {
- if (! $this->doContains($id)) {
- $this->missesCount += 1;
-
- return false;
- }
-
- $this->hitsCount += 1;
-
- return $this->data[$id][0];
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doContains($id)
- {
- if (! isset($this->data[$id])) {
- return false;
- }
-
- $expiration = $this->data[$id][1];
-
- if ($expiration && $expiration < time()) {
- $this->doDelete($id);
-
- return false;
- }
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doSave($id, $data, $lifeTime = 0)
- {
- $this->data[$id] = [$data, $lifeTime ? time() + $lifeTime : false];
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doDelete($id)
- {
- unset($this->data[$id]);
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFlush()
- {
- $this->data = [];
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doGetStats()
- {
- return [
- Cache::STATS_HITS => $this->hitsCount,
- Cache::STATS_MISSES => $this->missesCount,
- Cache::STATS_UPTIME => $this->upTime,
- Cache::STATS_MEMORY_USAGE => null,
- Cache::STATS_MEMORY_AVAILABLE => null,
- ];
- }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php
deleted file mode 100644
index 456974427..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php
+++ /dev/null
@@ -1,90 +0,0 @@
-hits
- * Number of keys that have been requested and found present.
- *
- * - misses
- * Number of items that have been requested and not found.
- *
- * - uptime
- * Time that the server is running.
- *
- * - memory_usage
- * Memory used by this server to store items.
- *
- * - memory_available
- * Memory allowed to use for storage.
- *
- * @return array|null An associative array with server's statistics if available, NULL otherwise.
- */
- public function getStats();
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php
deleted file mode 100644
index 43d414f3c..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php
+++ /dev/null
@@ -1,325 +0,0 @@
-namespace = (string) $namespace;
- $this->namespaceVersion = null;
- }
-
- /**
- * Retrieves the namespace that prefixes all cache ids.
- *
- * @return string
- */
- public function getNamespace()
- {
- return $this->namespace;
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetch($id)
- {
- return $this->doFetch($this->getNamespacedId($id));
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetchMultiple(array $keys)
- {
- if (empty($keys)) {
- return [];
- }
-
- // note: the array_combine() is in place to keep an association between our $keys and the $namespacedKeys
- $namespacedKeys = array_combine($keys, array_map([$this, 'getNamespacedId'], $keys));
- $items = $this->doFetchMultiple($namespacedKeys);
- $foundItems = [];
-
- // no internal array function supports this sort of mapping: needs to be iterative
- // this filters and combines keys in one pass
- foreach ($namespacedKeys as $requestedKey => $namespacedKey) {
- if (! isset($items[$namespacedKey]) && ! array_key_exists($namespacedKey, $items)) {
- continue;
- }
-
- $foundItems[$requestedKey] = $items[$namespacedKey];
- }
-
- return $foundItems;
- }
-
- /**
- * {@inheritdoc}
- */
- public function saveMultiple(array $keysAndValues, $lifetime = 0)
- {
- $namespacedKeysAndValues = [];
- foreach ($keysAndValues as $key => $value) {
- $namespacedKeysAndValues[$this->getNamespacedId($key)] = $value;
- }
-
- return $this->doSaveMultiple($namespacedKeysAndValues, $lifetime);
- }
-
- /**
- * {@inheritdoc}
- */
- public function contains($id)
- {
- return $this->doContains($this->getNamespacedId($id));
- }
-
- /**
- * {@inheritdoc}
- */
- public function save($id, $data, $lifeTime = 0)
- {
- return $this->doSave($this->getNamespacedId($id), $data, $lifeTime);
- }
-
- /**
- * {@inheritdoc}
- */
- public function deleteMultiple(array $keys)
- {
- return $this->doDeleteMultiple(array_map([$this, 'getNamespacedId'], $keys));
- }
-
- /**
- * {@inheritdoc}
- */
- public function delete($id)
- {
- return $this->doDelete($this->getNamespacedId($id));
- }
-
- /**
- * {@inheritdoc}
- */
- public function getStats()
- {
- return $this->doGetStats();
- }
-
- /**
- * {@inheritDoc}
- */
- public function flushAll()
- {
- return $this->doFlush();
- }
-
- /**
- * {@inheritDoc}
- */
- public function deleteAll()
- {
- $namespaceCacheKey = $this->getNamespaceCacheKey();
- $namespaceVersion = $this->getNamespaceVersion() + 1;
-
- if ($this->doSave($namespaceCacheKey, $namespaceVersion)) {
- $this->namespaceVersion = $namespaceVersion;
-
- return true;
- }
-
- return false;
- }
-
- /**
- * Prefixes the passed id with the configured namespace value.
- *
- * @param string $id The id to namespace.
- *
- * @return string The namespaced id.
- */
- private function getNamespacedId(string $id) : string
- {
- $namespaceVersion = $this->getNamespaceVersion();
-
- return sprintf('%s[%s][%s]', $this->namespace, $id, $namespaceVersion);
- }
-
- /**
- * Returns the namespace cache key.
- */
- private function getNamespaceCacheKey() : string
- {
- return sprintf(self::DOCTRINE_NAMESPACE_CACHEKEY, $this->namespace);
- }
-
- /**
- * Returns the namespace version.
- */
- private function getNamespaceVersion() : int
- {
- if ($this->namespaceVersion !== null) {
- return $this->namespaceVersion;
- }
-
- $namespaceCacheKey = $this->getNamespaceCacheKey();
- $this->namespaceVersion = (int) $this->doFetch($namespaceCacheKey) ?: 1;
-
- return $this->namespaceVersion;
- }
-
- /**
- * Default implementation of doFetchMultiple. Each driver that supports multi-get should owerwrite it.
- *
- * @param array $keys Array of keys to retrieve from cache
- *
- * @return array Array of values retrieved for the given keys.
- */
- protected function doFetchMultiple(array $keys)
- {
- $returnValues = [];
-
- foreach ($keys as $key) {
- $item = $this->doFetch($key);
- if ($item === false && ! $this->doContains($key)) {
- continue;
- }
-
- $returnValues[$key] = $item;
- }
-
- return $returnValues;
- }
-
- /**
- * Fetches an entry from the cache.
- *
- * @param string $id The id of the cache entry to fetch.
- *
- * @return mixed|false The cached data or FALSE, if no cache entry exists for the given id.
- */
- abstract protected function doFetch($id);
-
- /**
- * Tests if an entry exists in the cache.
- *
- * @param string $id The cache id of the entry to check for.
- *
- * @return bool TRUE if a cache entry exists for the given cache id, FALSE otherwise.
- */
- abstract protected function doContains($id);
-
- /**
- * Default implementation of doSaveMultiple. Each driver that supports multi-put should override it.
- *
- * @param array $keysAndValues Array of keys and values to save in cache
- * @param int $lifetime The lifetime. If != 0, sets a specific lifetime for these
- * cache entries (0 => infinite lifeTime).
- *
- * @return bool TRUE if the operation was successful, FALSE if it wasn't.
- */
- protected function doSaveMultiple(array $keysAndValues, $lifetime = 0)
- {
- $success = true;
-
- foreach ($keysAndValues as $key => $value) {
- if ($this->doSave($key, $value, $lifetime)) {
- continue;
- }
-
- $success = false;
- }
-
- return $success;
- }
-
- /**
- * Puts data into the cache.
- *
- * @param string $id The cache id.
- * @param string $data The cache entry/data.
- * @param int $lifeTime The lifetime. If != 0, sets a specific lifetime for this
- * cache entry (0 => infinite lifeTime).
- *
- * @return bool TRUE if the entry was successfully stored in the cache, FALSE otherwise.
- */
- abstract protected function doSave($id, $data, $lifeTime = 0);
-
- /**
- * Default implementation of doDeleteMultiple. Each driver that supports multi-delete should override it.
- *
- * @param array $keys Array of keys to delete from cache
- *
- * @return bool TRUE if the operation was successful, FALSE if it wasn't
- */
- protected function doDeleteMultiple(array $keys)
- {
- $success = true;
-
- foreach ($keys as $key) {
- if ($this->doDelete($key)) {
- continue;
- }
-
- $success = false;
- }
-
- return $success;
- }
-
- /**
- * Deletes a cache entry.
- *
- * @param string $id The cache id.
- *
- * @return bool TRUE if the cache entry was successfully deleted, FALSE otherwise.
- */
- abstract protected function doDelete($id);
-
- /**
- * Flushes all cache entries.
- *
- * @return bool TRUE if the cache entries were successfully flushed, FALSE otherwise.
- */
- abstract protected function doFlush();
-
- /**
- * Retrieves cached information from the data store.
- *
- * @return array|null An associative array with server's statistics if available, NULL otherwise.
- */
- abstract protected function doGetStats();
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ChainCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ChainCache.php
deleted file mode 100644
index e9762a2cc..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ChainCache.php
+++ /dev/null
@@ -1,187 +0,0 @@
-cacheProviders = $cacheProviders instanceof Traversable
- ? iterator_to_array($cacheProviders, false)
- : array_values($cacheProviders);
- }
-
- /**
- * {@inheritDoc}
- */
- public function setNamespace($namespace)
- {
- parent::setNamespace($namespace);
-
- foreach ($this->cacheProviders as $cacheProvider) {
- $cacheProvider->setNamespace($namespace);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- protected function doFetch($id)
- {
- foreach ($this->cacheProviders as $key => $cacheProvider) {
- if ($cacheProvider->doContains($id)) {
- $value = $cacheProvider->doFetch($id);
-
- // We populate all the previous cache layers (that are assumed to be faster)
- for ($subKey = $key - 1; $subKey >= 0; $subKey--) {
- $this->cacheProviders[$subKey]->doSave($id, $value);
- }
-
- return $value;
- }
- }
-
- return false;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFetchMultiple(array $keys)
- {
- /** @var CacheProvider[] $traversedProviders */
- $traversedProviders = [];
- $keysCount = count($keys);
- $fetchedValues = [];
-
- foreach ($this->cacheProviders as $key => $cacheProvider) {
- $fetchedValues = $cacheProvider->doFetchMultiple($keys);
-
- // We populate all the previous cache layers (that are assumed to be faster)
- if (count($fetchedValues) === $keysCount) {
- foreach ($traversedProviders as $previousCacheProvider) {
- $previousCacheProvider->doSaveMultiple($fetchedValues);
- }
-
- return $fetchedValues;
- }
-
- $traversedProviders[] = $cacheProvider;
- }
-
- return $fetchedValues;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function doContains($id)
- {
- foreach ($this->cacheProviders as $cacheProvider) {
- if ($cacheProvider->doContains($id)) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function doSave($id, $data, $lifeTime = 0)
- {
- $stored = true;
-
- foreach ($this->cacheProviders as $cacheProvider) {
- $stored = $cacheProvider->doSave($id, $data, $lifeTime) && $stored;
- }
-
- return $stored;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doSaveMultiple(array $keysAndValues, $lifetime = 0)
- {
- $stored = true;
-
- foreach ($this->cacheProviders as $cacheProvider) {
- $stored = $cacheProvider->doSaveMultiple($keysAndValues, $lifetime) && $stored;
- }
-
- return $stored;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function doDelete($id)
- {
- $deleted = true;
-
- foreach ($this->cacheProviders as $cacheProvider) {
- $deleted = $cacheProvider->doDelete($id) && $deleted;
- }
-
- return $deleted;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doDeleteMultiple(array $keys)
- {
- $deleted = true;
-
- foreach ($this->cacheProviders as $cacheProvider) {
- $deleted = $cacheProvider->doDeleteMultiple($keys) && $deleted;
- }
-
- return $deleted;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function doFlush()
- {
- $flushed = true;
-
- foreach ($this->cacheProviders as $cacheProvider) {
- $flushed = $cacheProvider->doFlush() && $flushed;
- }
-
- return $flushed;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function doGetStats()
- {
- // We return all the stats from all adapters
- $stats = [];
-
- foreach ($this->cacheProviders as $cacheProvider) {
- $stats[] = $cacheProvider->doGetStats();
- }
-
- return $stats;
- }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php
deleted file mode 100644
index b94618e46..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php
+++ /dev/null
@@ -1,21 +0,0 @@
-bucket = $bucket;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFetch($id)
- {
- $id = $this->normalizeKey($id);
-
- try {
- $document = $this->bucket->get($id);
- } catch (Exception $e) {
- return false;
- }
-
- if ($document instanceof Document && $document->value !== false) {
- return unserialize($document->value);
- }
-
- return false;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doContains($id)
- {
- $id = $this->normalizeKey($id);
-
- try {
- $document = $this->bucket->get($id);
- } catch (Exception $e) {
- return false;
- }
-
- if ($document instanceof Document) {
- return ! $document->error;
- }
-
- return false;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doSave($id, $data, $lifeTime = 0)
- {
- $id = $this->normalizeKey($id);
-
- $lifeTime = $this->normalizeExpiry($lifeTime);
-
- try {
- $encoded = serialize($data);
-
- $document = $this->bucket->upsert($id, $encoded, [
- 'expiry' => (int) $lifeTime,
- ]);
- } catch (Exception $e) {
- return false;
- }
-
- if ($document instanceof Document) {
- return ! $document->error;
- }
-
- return false;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doDelete($id)
- {
- $id = $this->normalizeKey($id);
-
- try {
- $document = $this->bucket->remove($id);
- } catch (Exception $e) {
- return $e->getCode() === self::KEY_NOT_FOUND;
- }
-
- if ($document instanceof Document) {
- return ! $document->error;
- }
-
- return false;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFlush()
- {
- $manager = $this->bucket->manager();
-
- // Flush does not return with success or failure, and must be enabled per bucket on the server.
- // Store a marker item so that we will know if it was successful.
- $this->doSave(__METHOD__, true, 60);
-
- $manager->flush();
-
- if ($this->doContains(__METHOD__)) {
- $this->doDelete(__METHOD__);
-
- return false;
- }
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doGetStats()
- {
- $manager = $this->bucket->manager();
- $stats = $manager->info();
- $nodes = $stats['nodes'];
- $node = $nodes[0];
- $interestingStats = $node['interestingStats'];
-
- return [
- Cache::STATS_HITS => $interestingStats['get_hits'],
- Cache::STATS_MISSES => $interestingStats['cmd_get'] - $interestingStats['get_hits'],
- Cache::STATS_UPTIME => $node['uptime'],
- Cache::STATS_MEMORY_USAGE => $interestingStats['mem_used'],
- Cache::STATS_MEMORY_AVAILABLE => $node['memoryFree'],
- ];
- }
-
- private function normalizeKey(string $id) : string
- {
- $normalized = substr($id, 0, self::MAX_KEY_LENGTH);
-
- if ($normalized === false) {
- return $id;
- }
-
- return $normalized;
- }
-
- /**
- * Expiry treated as a unix timestamp instead of an offset if expiry is greater than 30 days.
- *
- * @src https://developer.couchbase.com/documentation/server/4.1/developer-guide/expiry.html
- */
- private function normalizeExpiry(int $expiry) : int
- {
- if ($expiry > self::THIRTY_DAYS_IN_SECONDS) {
- return time() + $expiry;
- }
-
- return $expiry;
- }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CouchbaseCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CouchbaseCache.php
deleted file mode 100644
index 2c62c2ea8..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CouchbaseCache.php
+++ /dev/null
@@ -1,105 +0,0 @@
-couchbase = $couchbase;
- }
-
- /**
- * Gets the Couchbase instance used by the cache.
- *
- * @return Couchbase|null
- */
- public function getCouchbase()
- {
- return $this->couchbase;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFetch($id)
- {
- return $this->couchbase->get($id) ?: false;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doContains($id)
- {
- return $this->couchbase->get($id) !== null;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doSave($id, $data, $lifeTime = 0)
- {
- if ($lifeTime > 30 * 24 * 3600) {
- $lifeTime = time() + $lifeTime;
- }
-
- return $this->couchbase->set($id, $data, (int) $lifeTime);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doDelete($id)
- {
- return $this->couchbase->delete($id);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFlush()
- {
- return $this->couchbase->flush();
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doGetStats()
- {
- $stats = $this->couchbase->getStats();
- $servers = $this->couchbase->getServers();
- $server = explode(':', $servers[0]);
- $key = $server[0] . ':11210';
- $stats = $stats[$key];
-
- return [
- Cache::STATS_HITS => $stats['get_hits'],
- Cache::STATS_MISSES => $stats['get_misses'],
- Cache::STATS_UPTIME => $stats['uptime'],
- Cache::STATS_MEMORY_USAGE => $stats['bytes'],
- Cache::STATS_MEMORY_AVAILABLE => $stats['limit_maxbytes'],
- ];
- }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ExtMongoDBCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ExtMongoDBCache.php
deleted file mode 100644
index b06f86232..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ExtMongoDBCache.php
+++ /dev/null
@@ -1,198 +0,0 @@
-collection = $collection->withOptions(['typeMap' => null]);
- $this->database = new Database($collection->getManager(), $collection->getDatabaseName());
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFetch($id)
- {
- $document = $this->collection->findOne(['_id' => $id], [MongoDBCache::DATA_FIELD, MongoDBCache::EXPIRATION_FIELD]);
-
- if ($document === null) {
- return false;
- }
-
- if ($this->isExpired($document)) {
- $this->createExpirationIndex();
- $this->doDelete($id);
-
- return false;
- }
-
- return unserialize($document[MongoDBCache::DATA_FIELD]->getData());
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doContains($id)
- {
- $document = $this->collection->findOne(['_id' => $id], [MongoDBCache::EXPIRATION_FIELD]);
-
- if ($document === null) {
- return false;
- }
-
- if ($this->isExpired($document)) {
- $this->createExpirationIndex();
- $this->doDelete($id);
-
- return false;
- }
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doSave($id, $data, $lifeTime = 0)
- {
- try {
- $this->collection->updateOne(
- ['_id' => $id],
- [
- '$set' => [
- MongoDBCache::EXPIRATION_FIELD => ($lifeTime > 0 ? new UTCDateTime((time() + $lifeTime) * 1000): null),
- MongoDBCache::DATA_FIELD => new Binary(serialize($data), Binary::TYPE_GENERIC),
- ],
- ],
- ['upsert' => true]
- );
- } catch (Exception $e) {
- return false;
- }
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doDelete($id)
- {
- try {
- $this->collection->deleteOne(['_id' => $id]);
- } catch (Exception $e) {
- return false;
- }
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFlush()
- {
- try {
- // Use remove() in lieu of drop() to maintain any collection indexes
- $this->collection->deleteMany([]);
- } catch (Exception $e) {
- return false;
- }
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doGetStats()
- {
- $uptime = null;
- $memoryUsage = null;
-
- try {
- $serverStatus = $this->database->command([
- 'serverStatus' => 1,
- 'locks' => 0,
- 'metrics' => 0,
- 'recordStats' => 0,
- 'repl' => 0,
- ])->toArray()[0];
- $uptime = $serverStatus['uptime'] ?? null;
- } catch (Exception $e) {
- }
-
- try {
- $collStats = $this->database->command(['collStats' => $this->collection->getCollectionName()])->toArray()[0];
- $memoryUsage = $collStats['size'] ?? null;
- } catch (Exception $e) {
- }
-
- return [
- Cache::STATS_HITS => null,
- Cache::STATS_MISSES => null,
- Cache::STATS_UPTIME => $uptime,
- Cache::STATS_MEMORY_USAGE => $memoryUsage,
- Cache::STATS_MEMORY_AVAILABLE => null,
- ];
- }
-
- /**
- * Check if the document is expired.
- */
- private function isExpired(BSONDocument $document) : bool
- {
- return isset($document[MongoDBCache::EXPIRATION_FIELD]) &&
- $document[MongoDBCache::EXPIRATION_FIELD] instanceof UTCDateTime &&
- $document[MongoDBCache::EXPIRATION_FIELD]->toDateTime() < new DateTime();
- }
-
- private function createExpirationIndex() : void
- {
- if ($this->expirationIndexCreated) {
- return;
- }
-
- $this->collection->createIndex([MongoDBCache::EXPIRATION_FIELD => 1], ['background' => true, 'expireAfterSeconds' => 0]);
- }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FileCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FileCache.php
deleted file mode 100644
index 4b485205c..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FileCache.php
+++ /dev/null
@@ -1,281 +0,0 @@
-umask = $umask;
-
- if (! $this->createPathIfNeeded($directory)) {
- throw new InvalidArgumentException(sprintf(
- 'The directory "%s" does not exist and could not be created.',
- $directory
- ));
- }
-
- if (! is_writable($directory)) {
- throw new InvalidArgumentException(sprintf(
- 'The directory "%s" is not writable.',
- $directory
- ));
- }
-
- // YES, this needs to be *after* createPathIfNeeded()
- $this->directory = realpath($directory);
- $this->extension = (string) $extension;
-
- $this->directoryStringLength = strlen($this->directory);
- $this->extensionStringLength = strlen($this->extension);
- $this->isRunningOnWindows = defined('PHP_WINDOWS_VERSION_BUILD');
- }
-
- /**
- * Gets the cache directory.
- *
- * @return string
- */
- public function getDirectory()
- {
- return $this->directory;
- }
-
- /**
- * Gets the cache file extension.
- *
- * @return string
- */
- public function getExtension()
- {
- return $this->extension;
- }
-
- /**
- * @param string $id
- *
- * @return string
- */
- protected function getFilename($id)
- {
- $hash = hash('sha256', $id);
-
- // This ensures that the filename is unique and that there are no invalid chars in it.
- if ($id === ''
- || ((strlen($id) * 2 + $this->extensionStringLength) > 255)
- || ($this->isRunningOnWindows && ($this->directoryStringLength + 4 + strlen($id) * 2 + $this->extensionStringLength) > 258)
- ) {
- // Most filesystems have a limit of 255 chars for each path component. On Windows the the whole path is limited
- // to 260 chars (including terminating null char). Using long UNC ("\\?\" prefix) does not work with the PHP API.
- // And there is a bug in PHP (https://bugs.php.net/bug.php?id=70943) with path lengths of 259.
- // So if the id in hex representation would surpass the limit, we use the hash instead. The prefix prevents
- // collisions between the hash and bin2hex.
- $filename = '_' . $hash;
- } else {
- $filename = bin2hex($id);
- }
-
- return $this->directory
- . DIRECTORY_SEPARATOR
- . substr($hash, 0, 2)
- . DIRECTORY_SEPARATOR
- . $filename
- . $this->extension;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doDelete($id)
- {
- $filename = $this->getFilename($id);
-
- return @unlink($filename) || ! file_exists($filename);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFlush()
- {
- foreach ($this->getIterator() as $name => $file) {
- if ($file->isDir()) {
- // Remove the intermediate directories which have been created to balance the tree. It only takes effect
- // if the directory is empty. If several caches share the same directory but with different file extensions,
- // the other ones are not removed.
- @rmdir($name);
- } elseif ($this->isFilenameEndingWithExtension($name)) {
- // If an extension is set, only remove files which end with the given extension.
- // If no extension is set, we have no other choice than removing everything.
- @unlink($name);
- }
- }
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doGetStats()
- {
- $usage = 0;
- foreach ($this->getIterator() as $name => $file) {
- if ($file->isDir() || ! $this->isFilenameEndingWithExtension($name)) {
- continue;
- }
-
- $usage += $file->getSize();
- }
-
- $free = disk_free_space($this->directory);
-
- return [
- Cache::STATS_HITS => null,
- Cache::STATS_MISSES => null,
- Cache::STATS_UPTIME => null,
- Cache::STATS_MEMORY_USAGE => $usage,
- Cache::STATS_MEMORY_AVAILABLE => $free,
- ];
- }
-
- /**
- * Create path if needed.
- *
- * @return bool TRUE on success or if path already exists, FALSE if path cannot be created.
- */
- private function createPathIfNeeded(string $path) : bool
- {
- if (! is_dir($path)) {
- if (@mkdir($path, 0777 & (~$this->umask), true) === false && ! is_dir($path)) {
- return false;
- }
- }
-
- return true;
- }
-
- /**
- * Writes a string content to file in an atomic way.
- *
- * @param string $filename Path to the file where to write the data.
- * @param string $content The content to write
- *
- * @return bool TRUE on success, FALSE if path cannot be created, if path is not writable or an any other error.
- */
- protected function writeFile(string $filename, string $content) : bool
- {
- $filepath = pathinfo($filename, PATHINFO_DIRNAME);
-
- if (! $this->createPathIfNeeded($filepath)) {
- return false;
- }
-
- if (! is_writable($filepath)) {
- return false;
- }
-
- $tmpFile = tempnam($filepath, 'swap');
- @chmod($tmpFile, 0666 & (~$this->umask));
-
- if (file_put_contents($tmpFile, $content) !== false) {
- @chmod($tmpFile, 0666 & (~$this->umask));
- if (@rename($tmpFile, $filename)) {
- return true;
- }
-
- @unlink($tmpFile);
- }
-
- return false;
- }
-
- private function getIterator() : Iterator
- {
- return new RecursiveIteratorIterator(
- new RecursiveDirectoryIterator($this->directory, FilesystemIterator::SKIP_DOTS),
- RecursiveIteratorIterator::CHILD_FIRST
- );
- }
-
- /**
- * @param string $name The filename
- */
- private function isFilenameEndingWithExtension(string $name) : bool
- {
- return $this->extension === ''
- || strrpos($name, $this->extension) === (strlen($name) - $this->extensionStringLength);
- }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FilesystemCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FilesystemCache.php
deleted file mode 100644
index 8f34c9cb4..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FilesystemCache.php
+++ /dev/null
@@ -1,102 +0,0 @@
-getFilename($id);
-
- if (! is_file($filename)) {
- return false;
- }
-
- $resource = fopen($filename, 'r');
- $line = fgets($resource);
-
- if ($line !== false) {
- $lifetime = (int) $line;
- }
-
- if ($lifetime !== 0 && $lifetime < time()) {
- fclose($resource);
-
- return false;
- }
-
- while (($line = fgets($resource)) !== false) {
- $data .= $line;
- }
-
- fclose($resource);
-
- return unserialize($data);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doContains($id)
- {
- $lifetime = -1;
- $filename = $this->getFilename($id);
-
- if (! is_file($filename)) {
- return false;
- }
-
- $resource = fopen($filename, 'r');
- $line = fgets($resource);
-
- if ($line !== false) {
- $lifetime = (int) $line;
- }
-
- fclose($resource);
-
- return $lifetime === 0 || $lifetime > time();
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doSave($id, $data, $lifeTime = 0)
- {
- if ($lifeTime > 0) {
- $lifeTime = time() + $lifeTime;
- }
-
- $data = serialize($data);
- $filename = $this->getFilename($id);
-
- return $this->writeFile($filename, $lifeTime . PHP_EOL . $data);
- }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FlushableCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FlushableCache.php
deleted file mode 100644
index ee7ce984e..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FlushableCache.php
+++ /dev/null
@@ -1,18 +0,0 @@
-collection = $collection;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFetch($id)
- {
- $document = $this->collection->findOne(['_id' => $id], [MongoDBCache::DATA_FIELD, MongoDBCache::EXPIRATION_FIELD]);
-
- if ($document === null) {
- return false;
- }
-
- if ($this->isExpired($document)) {
- $this->createExpirationIndex();
- $this->doDelete($id);
-
- return false;
- }
-
- return unserialize($document[MongoDBCache::DATA_FIELD]->bin);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doContains($id)
- {
- $document = $this->collection->findOne(['_id' => $id], [MongoDBCache::EXPIRATION_FIELD]);
-
- if ($document === null) {
- return false;
- }
-
- if ($this->isExpired($document)) {
- $this->createExpirationIndex();
- $this->doDelete($id);
-
- return false;
- }
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doSave($id, $data, $lifeTime = 0)
- {
- try {
- $result = $this->collection->update(
- ['_id' => $id],
- [
- '$set' => [
- MongoDBCache::EXPIRATION_FIELD => ($lifeTime > 0 ? new MongoDate(time() + $lifeTime) : null),
- MongoDBCache::DATA_FIELD => new MongoBinData(serialize($data), MongoBinData::BYTE_ARRAY),
- ],
- ],
- ['upsert' => true, 'multiple' => false]
- );
- } catch (MongoCursorException $e) {
- return false;
- }
-
- return ($result['ok'] ?? 1) == 1;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doDelete($id)
- {
- $result = $this->collection->remove(['_id' => $id]);
-
- return ($result['ok'] ?? 1) == 1;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFlush()
- {
- // Use remove() in lieu of drop() to maintain any collection indexes
- $result = $this->collection->remove();
-
- return ($result['ok'] ?? 1) == 1;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doGetStats()
- {
- $serverStatus = $this->collection->db->command([
- 'serverStatus' => 1,
- 'locks' => 0,
- 'metrics' => 0,
- 'recordStats' => 0,
- 'repl' => 0,
- ]);
-
- $collStats = $this->collection->db->command(['collStats' => 1]);
-
- return [
- Cache::STATS_HITS => null,
- Cache::STATS_MISSES => null,
- Cache::STATS_UPTIME => $serverStatus['uptime'] ?? null,
- Cache::STATS_MEMORY_USAGE => $collStats['size'] ?? null,
- Cache::STATS_MEMORY_AVAILABLE => null,
- ];
- }
-
- /**
- * Check if the document is expired.
- *
- * @param array $document
- */
- private function isExpired(array $document) : bool
- {
- return isset($document[MongoDBCache::EXPIRATION_FIELD]) &&
- $document[MongoDBCache::EXPIRATION_FIELD] instanceof MongoDate &&
- $document[MongoDBCache::EXPIRATION_FIELD]->sec < time();
- }
-
- private function createExpirationIndex() : void
- {
- if ($this->expirationIndexCreated) {
- return;
- }
-
- $this->expirationIndexCreated = true;
- $this->collection->createIndex([MongoDBCache::EXPIRATION_FIELD => 1], ['background' => true, 'expireAfterSeconds' => 0]);
- }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcacheCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcacheCache.php
deleted file mode 100644
index 42bbd2cea..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcacheCache.php
+++ /dev/null
@@ -1,104 +0,0 @@
-memcache = $memcache;
- }
-
- /**
- * Gets the memcache instance used by the cache.
- *
- * @return Memcache|null
- */
- public function getMemcache()
- {
- return $this->memcache;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFetch($id)
- {
- return $this->memcache->get($id);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doContains($id)
- {
- $flags = null;
- $this->memcache->get($id, $flags);
-
- //if memcache has changed the value of "flags", it means the value exists
- return $flags !== null;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doSave($id, $data, $lifeTime = 0)
- {
- if ($lifeTime > 30 * 24 * 3600) {
- $lifeTime = time() + $lifeTime;
- }
-
- return $this->memcache->set($id, $data, 0, (int) $lifeTime);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doDelete($id)
- {
- // Memcache::delete() returns false if entry does not exist
- return $this->memcache->delete($id) || ! $this->doContains($id);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFlush()
- {
- return $this->memcache->flush();
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doGetStats()
- {
- $stats = $this->memcache->getStats();
-
- return [
- Cache::STATS_HITS => $stats['get_hits'],
- Cache::STATS_MISSES => $stats['get_misses'],
- Cache::STATS_UPTIME => $stats['uptime'],
- Cache::STATS_MEMORY_USAGE => $stats['bytes'],
- Cache::STATS_MEMORY_AVAILABLE => $stats['limit_maxbytes'],
- ];
- }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcachedCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcachedCache.php
deleted file mode 100644
index da966ae26..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcachedCache.php
+++ /dev/null
@@ -1,170 +0,0 @@
-memcached = $memcached;
- }
-
- /**
- * Gets the memcached instance used by the cache.
- *
- * @return Memcached|null
- */
- public function getMemcached()
- {
- return $this->memcached;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFetch($id)
- {
- return $this->memcached->get($id);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFetchMultiple(array $keys)
- {
- return $this->memcached->getMulti($keys) ?: [];
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doSaveMultiple(array $keysAndValues, $lifetime = 0)
- {
- foreach (array_keys($keysAndValues) as $id) {
- $this->validateCacheId($id);
- }
-
- if ($lifetime > 30 * 24 * 3600) {
- $lifetime = time() + $lifetime;
- }
-
- return $this->memcached->setMulti($keysAndValues, $lifetime);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doContains($id)
- {
- $this->memcached->get($id);
-
- return $this->memcached->getResultCode() === Memcached::RES_SUCCESS;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doSave($id, $data, $lifeTime = 0)
- {
- $this->validateCacheId($id);
-
- if ($lifeTime > 30 * 24 * 3600) {
- $lifeTime = time() + $lifeTime;
- }
-
- return $this->memcached->set($id, $data, (int) $lifeTime);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doDeleteMultiple(array $keys)
- {
- return $this->memcached->deleteMulti($keys)
- || $this->memcached->getResultCode() === Memcached::RES_NOTFOUND;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doDelete($id)
- {
- return $this->memcached->delete($id)
- || $this->memcached->getResultCode() === Memcached::RES_NOTFOUND;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFlush()
- {
- return $this->memcached->flush();
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doGetStats()
- {
- $stats = $this->memcached->getStats();
- $servers = $this->memcached->getServerList();
- $key = $servers[0]['host'] . ':' . $servers[0]['port'];
- $stats = $stats[$key];
-
- return [
- Cache::STATS_HITS => $stats['get_hits'],
- Cache::STATS_MISSES => $stats['get_misses'],
- Cache::STATS_UPTIME => $stats['uptime'],
- Cache::STATS_MEMORY_USAGE => $stats['bytes'],
- Cache::STATS_MEMORY_AVAILABLE => $stats['limit_maxbytes'],
- ];
- }
-
- /**
- * Validate the cache id
- *
- * @see https://github.com/memcached/memcached/blob/1.5.12/doc/protocol.txt#L41-L49
- *
- * @param string $id
- *
- * @return void
- *
- * @throws InvalidCacheId
- */
- private function validateCacheId($id)
- {
- if (strlen($id) > self::CACHE_ID_MAX_LENGTH) {
- throw InvalidCacheId::exceedsMaxLength($id, self::CACHE_ID_MAX_LENGTH);
- }
-
- if (strpos($id, ' ') !== false) {
- throw InvalidCacheId::containsUnauthorizedCharacter($id, ' ');
- }
-
- if (preg_match('/[\t\r\n]/', $id) === 1) {
- throw InvalidCacheId::containsControlCharacter($id);
- }
- }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MongoDBCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MongoDBCache.php
deleted file mode 100644
index 861e4dda3..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MongoDBCache.php
+++ /dev/null
@@ -1,112 +0,0 @@
-provider = new LegacyMongoDBCache($collection);
- } elseif ($collection instanceof Collection) {
- $this->provider = new ExtMongoDBCache($collection);
- } else {
- throw new InvalidArgumentException('Invalid collection given - expected a MongoCollection or MongoDB\Collection instance');
- }
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFetch($id)
- {
- return $this->provider->doFetch($id);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doContains($id)
- {
- return $this->provider->doContains($id);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doSave($id, $data, $lifeTime = 0)
- {
- return $this->provider->doSave($id, $data, $lifeTime);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doDelete($id)
- {
- return $this->provider->doDelete($id);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFlush()
- {
- return $this->provider->doFlush();
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doGetStats()
- {
- return $this->provider->doGetStats();
- }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MultiDeleteCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MultiDeleteCache.php
deleted file mode 100644
index d099d47b8..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MultiDeleteCache.php
+++ /dev/null
@@ -1,22 +0,0 @@
- infinite lifeTime).
- *
- * @return bool TRUE if the operation was successful, FALSE if it wasn't.
- */
- public function saveMultiple(array $keysAndValues, $lifetime = 0);
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PhpFileCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PhpFileCache.php
deleted file mode 100644
index c0619991c..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PhpFileCache.php
+++ /dev/null
@@ -1,118 +0,0 @@
-includeFileForId($id);
-
- if ($value === null) {
- return false;
- }
-
- if ($value['lifetime'] !== 0 && $value['lifetime'] < time()) {
- return false;
- }
-
- return $value['data'];
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doContains($id)
- {
- $value = $this->includeFileForId($id);
-
- if ($value === null) {
- return false;
- }
-
- return $value['lifetime'] === 0 || $value['lifetime'] > time();
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doSave($id, $data, $lifeTime = 0)
- {
- if ($lifeTime > 0) {
- $lifeTime = time() + $lifeTime;
- }
-
- $filename = $this->getFilename($id);
-
- $value = [
- 'lifetime' => $lifeTime,
- 'data' => $data,
- ];
-
- if (is_object($data) && method_exists($data, '__set_state')) {
- $value = var_export($value, true);
- $code = sprintf('writeFile($filename, $code);
- }
-
- /**
- * @return array|null
- */
- private function includeFileForId(string $id) : ?array
- {
- $fileName = $this->getFilename($id);
-
- // note: error suppression is still faster than `file_exists`, `is_file` and `is_readable`
- set_error_handler(self::$emptyErrorHandler);
-
- $value = include $fileName;
-
- restore_error_handler();
-
- if (! isset($value['lifetime'])) {
- return null;
- }
-
- return $value;
- }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PredisCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PredisCache.php
deleted file mode 100644
index 6430d52d7..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PredisCache.php
+++ /dev/null
@@ -1,143 +0,0 @@
-client = $client;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFetch($id)
- {
- $result = $this->client->get($id);
- if ($result === null) {
- return false;
- }
-
- return unserialize($result);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFetchMultiple(array $keys)
- {
- $fetchedItems = call_user_func_array([$this->client, 'mget'], $keys);
-
- return array_map('unserialize', array_filter(array_combine($keys, $fetchedItems)));
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doSaveMultiple(array $keysAndValues, $lifetime = 0)
- {
- if ($lifetime) {
- $success = true;
-
- // Keys have lifetime, use SETEX for each of them
- foreach ($keysAndValues as $key => $value) {
- $response = (string) $this->client->setex($key, $lifetime, serialize($value));
-
- if ($response == 'OK') {
- continue;
- }
-
- $success = false;
- }
-
- return $success;
- }
-
- // No lifetime, use MSET
- $response = $this->client->mset(array_map(static function ($value) {
- return serialize($value);
- }, $keysAndValues));
-
- return (string) $response == 'OK';
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doContains($id)
- {
- return (bool) $this->client->exists($id);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doSave($id, $data, $lifeTime = 0)
- {
- $data = serialize($data);
- if ($lifeTime > 0) {
- $response = $this->client->setex($id, $lifeTime, $data);
- } else {
- $response = $this->client->set($id, $data);
- }
-
- return $response === true || $response == 'OK';
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doDelete($id)
- {
- return $this->client->del($id) >= 0;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doDeleteMultiple(array $keys)
- {
- return $this->client->del($keys) >= 0;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFlush()
- {
- $response = $this->client->flushdb();
-
- return $response === true || $response == 'OK';
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doGetStats()
- {
- $info = $this->client->info();
-
- return [
- Cache::STATS_HITS => $info['Stats']['keyspace_hits'],
- Cache::STATS_MISSES => $info['Stats']['keyspace_misses'],
- Cache::STATS_UPTIME => $info['Server']['uptime_in_seconds'],
- Cache::STATS_MEMORY_USAGE => $info['Memory']['used_memory'],
- Cache::STATS_MEMORY_AVAILABLE => false,
- ];
- }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RedisCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RedisCache.php
deleted file mode 100644
index 324570583..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RedisCache.php
+++ /dev/null
@@ -1,181 +0,0 @@
-setOption(Redis::OPT_SERIALIZER, $this->getSerializerValue());
- $this->redis = $redis;
- }
-
- /**
- * Gets the redis instance used by the cache.
- *
- * @return Redis|null
- */
- public function getRedis()
- {
- return $this->redis;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFetch($id)
- {
- return $this->redis->get($id);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFetchMultiple(array $keys)
- {
- $fetchedItems = array_combine($keys, $this->redis->mget($keys));
-
- // Redis mget returns false for keys that do not exist. So we need to filter those out unless it's the real data.
- $keysToFilter = array_keys(array_filter($fetchedItems, static function ($item) : bool {
- return $item === false;
- }));
-
- if ($keysToFilter) {
- $multi = $this->redis->multi(Redis::PIPELINE);
- foreach ($keysToFilter as $key) {
- $multi->exists($key);
- }
- $existItems = array_filter($multi->exec());
- $missedItemKeys = array_diff_key($keysToFilter, $existItems);
- $fetchedItems = array_diff_key($fetchedItems, array_fill_keys($missedItemKeys, true));
- }
-
- return $fetchedItems;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doSaveMultiple(array $keysAndValues, $lifetime = 0)
- {
- if ($lifetime) {
- // Keys have lifetime, use SETEX for each of them
- $multi = $this->redis->multi(Redis::PIPELINE);
- foreach ($keysAndValues as $key => $value) {
- $multi->setex($key, $lifetime, $value);
- }
- $succeeded = array_filter($multi->exec());
-
- return count($succeeded) == count($keysAndValues);
- }
-
- // No lifetime, use MSET
- return (bool) $this->redis->mset($keysAndValues);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doContains($id)
- {
- $exists = $this->redis->exists($id);
-
- if (is_bool($exists)) {
- return $exists;
- }
-
- return $exists > 0;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doSave($id, $data, $lifeTime = 0)
- {
- if ($lifeTime > 0) {
- return $this->redis->setex($id, $lifeTime, $data);
- }
-
- return $this->redis->set($id, $data);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doDelete($id)
- {
- return $this->redis->del($id) >= 0;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doDeleteMultiple(array $keys)
- {
- return $this->redis->del($keys) >= 0;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFlush()
- {
- return $this->redis->flushDB();
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doGetStats()
- {
- $info = $this->redis->info();
-
- return [
- Cache::STATS_HITS => $info['keyspace_hits'],
- Cache::STATS_MISSES => $info['keyspace_misses'],
- Cache::STATS_UPTIME => $info['uptime_in_seconds'],
- Cache::STATS_MEMORY_USAGE => $info['used_memory'],
- Cache::STATS_MEMORY_AVAILABLE => false,
- ];
- }
-
- /**
- * Returns the serializer constant to use. If Redis is compiled with
- * igbinary support, that is used. Otherwise the default PHP serializer is
- * used.
- *
- * @return int One of the Redis::SERIALIZER_* constants
- */
- protected function getSerializerValue()
- {
- if (defined('Redis::SERIALIZER_IGBINARY') && extension_loaded('igbinary')) {
- return Redis::SERIALIZER_IGBINARY;
- }
-
- return Redis::SERIALIZER_PHP;
- }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/SQLite3Cache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/SQLite3Cache.php
deleted file mode 100644
index 56deb0774..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/SQLite3Cache.php
+++ /dev/null
@@ -1,206 +0,0 @@
-sqlite = $sqlite;
- $this->table = (string) $table;
-
- $this->ensureTableExists();
- }
-
- private function ensureTableExists() : void
- {
- $this->sqlite->exec(
- sprintf(
- 'CREATE TABLE IF NOT EXISTS %s(%s TEXT PRIMARY KEY NOT NULL, %s BLOB, %s INTEGER)',
- $this->table,
- static::ID_FIELD,
- static::DATA_FIELD,
- static::EXPIRATION_FIELD
- )
- );
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFetch($id)
- {
- $item = $this->findById($id);
-
- if (! $item) {
- return false;
- }
-
- return unserialize($item[self::DATA_FIELD]);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doContains($id)
- {
- return $this->findById($id, false) !== null;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doSave($id, $data, $lifeTime = 0)
- {
- $statement = $this->sqlite->prepare(sprintf(
- 'INSERT OR REPLACE INTO %s (%s) VALUES (:id, :data, :expire)',
- $this->table,
- implode(',', $this->getFields())
- ));
-
- $statement->bindValue(':id', $id);
- $statement->bindValue(':data', serialize($data), SQLITE3_BLOB);
- $statement->bindValue(':expire', $lifeTime > 0 ? time() + $lifeTime : null);
-
- return $statement->execute() instanceof SQLite3Result;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doDelete($id)
- {
- [$idField] = $this->getFields();
-
- $statement = $this->sqlite->prepare(sprintf(
- 'DELETE FROM %s WHERE %s = :id',
- $this->table,
- $idField
- ));
-
- $statement->bindValue(':id', $id);
-
- return $statement->execute() instanceof SQLite3Result;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFlush()
- {
- return $this->sqlite->exec(sprintf('DELETE FROM %s', $this->table));
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doGetStats()
- {
- // no-op.
- }
-
- /**
- * Find a single row by ID.
- *
- * @param mixed $id
- *
- * @return array|null
- */
- private function findById($id, bool $includeData = true) : ?array
- {
- [$idField] = $fields = $this->getFields();
-
- if (! $includeData) {
- $key = array_search(static::DATA_FIELD, $fields);
- unset($fields[$key]);
- }
-
- $statement = $this->sqlite->prepare(sprintf(
- 'SELECT %s FROM %s WHERE %s = :id LIMIT 1',
- implode(',', $fields),
- $this->table,
- $idField
- ));
-
- $statement->bindValue(':id', $id, SQLITE3_TEXT);
-
- $item = $statement->execute()->fetchArray(SQLITE3_ASSOC);
-
- if ($item === false) {
- return null;
- }
-
- if ($this->isExpired($item)) {
- $this->doDelete($id);
-
- return null;
- }
-
- return $item;
- }
-
- /**
- * Gets an array of the fields in our table.
- *
- * @return array
- */
- private function getFields() : array
- {
- return [static::ID_FIELD, static::DATA_FIELD, static::EXPIRATION_FIELD];
- }
-
- /**
- * Check if the item is expired.
- *
- * @param array $item
- */
- private function isExpired(array $item) : bool
- {
- return isset($item[static::EXPIRATION_FIELD]) &&
- $item[self::EXPIRATION_FIELD] !== null &&
- $item[self::EXPIRATION_FIELD] < time();
- }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Version.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Version.php
deleted file mode 100644
index 834b5b7d4..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Version.php
+++ /dev/null
@@ -1,8 +0,0 @@
- $info['total_hit_count'],
- Cache::STATS_MISSES => $info['total_miss_count'],
- Cache::STATS_UPTIME => $info['total_cache_uptime'],
- Cache::STATS_MEMORY_USAGE => $meminfo['memory_total'],
- Cache::STATS_MEMORY_AVAILABLE => $meminfo['memory_free'],
- ];
- }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/XcacheCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/XcacheCache.php
deleted file mode 100644
index 9b3a485ed..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/XcacheCache.php
+++ /dev/null
@@ -1,104 +0,0 @@
-doContains($id) ? unserialize(xcache_get($id)) : false;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doContains($id)
- {
- return xcache_isset($id);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doSave($id, $data, $lifeTime = 0)
- {
- return xcache_set($id, serialize($data), (int) $lifeTime);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doDelete($id)
- {
- return xcache_unset($id);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doFlush()
- {
- $this->checkAuthorization();
-
- xcache_clear_cache(XC_TYPE_VAR);
-
- return true;
- }
-
- /**
- * Checks that xcache.admin.enable_auth is Off.
- *
- * @return void
- *
- * @throws BadMethodCallException When xcache.admin.enable_auth is On.
- */
- protected function checkAuthorization()
- {
- if (ini_get('xcache.admin.enable_auth')) {
- throw new BadMethodCallException(
- 'To use all features of \Doctrine\Common\Cache\XcacheCache, '
- . 'you must set "xcache.admin.enable_auth" to "Off" in your php.ini.'
- );
- }
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doGetStats()
- {
- $this->checkAuthorization();
-
- $info = xcache_info(XC_TYPE_VAR, 0);
-
- return [
- Cache::STATS_HITS => $info['hits'],
- Cache::STATS_MISSES => $info['misses'],
- Cache::STATS_UPTIME => null,
- Cache::STATS_MEMORY_USAGE => $info['size'],
- Cache::STATS_MEMORY_AVAILABLE => $info['avail'],
- ];
- }
-}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ZendDataCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ZendDataCache.php
deleted file mode 100644
index a6b67ef8b..000000000
--- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ZendDataCache.php
+++ /dev/null
@@ -1,69 +0,0 @@
-getNamespace();
- if (empty($namespace)) {
- return zend_shm_cache_clear();
- }
-
- return zend_shm_cache_clear($namespace);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doGetStats()
- {
- return null;
- }
-}
diff --git a/vendor/doctrine/dbal/.doctrine-project.json b/vendor/doctrine/dbal/.doctrine-project.json
deleted file mode 100644
index 7b97cb451..000000000
--- a/vendor/doctrine/dbal/.doctrine-project.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "active": true,
- "name": "Database Abstraction Layer",
- "shortName": "DBAL",
- "slug": "dbal",
- "docsSlug": "doctrine-dbal",
- "versions": [
- {
- "name": "3.0",
- "branchName": "develop",
- "slug": "latest",
- "upcoming": true
- },
- {
- "name": "2.10",
- "branchName": "master",
- "slug": "2.10",
- "upcoming": true
- },
- {
- "name": "2.9",
- "branchName": "2.9",
- "slug": "2.9",
- "current": true,
- "aliases": [
- "current",
- "stable"
- ]
- },
- {
- "name": "2.8",
- "branchName": "2.8",
- "slug": "2.8",
- "maintained": false
- },
- {
- "name": "2.7",
- "branchName": "2.7",
- "slug": "2.7",
- "maintained": false
- },
- {
- "name": "2.6",
- "branchName": "2.6",
- "slug": "2.6",
- "maintained": false
- },
- {
- "name": "2.5",
- "branchName": "2.5",
- "slug": "2.5",
- "maintained": false
- }
- ]
-}
diff --git a/vendor/doctrine/dbal/LICENSE b/vendor/doctrine/dbal/LICENSE
deleted file mode 100644
index e8fdec4af..000000000
--- a/vendor/doctrine/dbal/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2006-2018 Doctrine Project
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/doctrine/dbal/README.md b/vendor/doctrine/dbal/README.md
deleted file mode 100644
index 7495d20d7..000000000
--- a/vendor/doctrine/dbal/README.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# Doctrine DBAL
-
-| [Master][Master] | [2.9][2.9] | [Develop][develop] |
-|:----------------:|:----------:|:------------------:|
-| [![Build status][Master image]][Master] | [![Build status][2.9 image]][2.9] | [![Build status][develop image]][develop] |
-| [![Build Status][ContinuousPHP image]][ContinuousPHP] | [![Build Status][ContinuousPHP 2.9 image]][ContinuousPHP] | [![Build Status][ContinuousPHP develop image]][ContinuousPHP] |
-| [![Code Coverage][Coverage image]][Scrutinizer Master] | [![Code Coverage][Coverage 2.9 image]][Scrutinizer 2.9] | [![Code Coverage][Coverage develop image]][Scrutinizer develop] |
-| [![Code Quality][Quality image]][Scrutinizer Master] | [![Code Quality][Quality 2.9 image]][Scrutinizer 2.9] | [![Code Quality][Quality develop image]][Scrutinizer develop] |
-| [![AppVeyor][AppVeyor master image]][AppVeyor master] | [![AppVeyor][AppVeyor 2.9 image]][AppVeyor 2.9] | [![AppVeyor][AppVeyor develop image]][AppVeyor develop] |
-
-Powerful database abstraction layer with many features for database schema introspection, schema management and PDO abstraction.
-
-## More resources:
-
-* [Website](http://www.doctrine-project.org/projects/dbal.html)
-* [Documentation](http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/)
-* [Issue Tracker](https://github.com/doctrine/dbal/issues)
-
- [Master image]: https://img.shields.io/travis/doctrine/dbal/master.svg?style=flat-square
- [Coverage image]: https://img.shields.io/scrutinizer/coverage/g/doctrine/dbal/master.svg?style=flat-square
- [Quality image]: https://img.shields.io/scrutinizer/g/doctrine/dbal/master.svg?style=flat-square
- [ContinuousPHP image]: https://img.shields.io/continuousphp/git-hub/doctrine/dbal/master.svg?style=flat-square
- [Master]: https://travis-ci.org/doctrine/dbal
- [Scrutinizer Master]: https://scrutinizer-ci.com/g/doctrine/dbal/
- [AppVeyor master]: https://ci.appveyor.com/project/doctrine/dbal/branch/master
- [AppVeyor master image]: https://ci.appveyor.com/api/projects/status/i88kitq8qpbm0vie/branch/master?svg=true
- [ContinuousPHP]: https://continuousphp.com/git-hub/doctrine/dbal
-
- [2.9 image]: https://img.shields.io/travis/doctrine/dbal/2.9.svg?style=flat-square
- [Coverage 2.9 image]: https://img.shields.io/scrutinizer/coverage/g/doctrine/dbal/2.9.svg?style=flat-square
- [Quality 2.9 image]: https://img.shields.io/scrutinizer/g/doctrine/dbal/2.9.svg?style=flat-square
- [ContinuousPHP 2.9 image]: https://img.shields.io/continuousphp/git-hub/doctrine/dbal/2.9.svg?style=flat-square
- [2.9]: https://github.com/doctrine/dbal/tree/2.9
- [Scrutinizer 2.9]: https://scrutinizer-ci.com/g/doctrine/dbal/?branch=2.9
- [AppVeyor 2.9]: https://ci.appveyor.com/project/doctrine/dbal/branch/2.9
- [AppVeyor 2.9 image]: https://ci.appveyor.com/api/projects/status/i88kitq8qpbm0vie/branch/2.9?svg=true
-
- [develop]: https://github.com/doctrine/dbal/tree/develop
- [develop image]: https://img.shields.io/travis/doctrine/dbal/develop.svg?style=flat-square
- [Coverage develop image]: https://img.shields.io/scrutinizer/coverage/g/doctrine/dbal/develop.svg?style=flat-square
- [Quality develop image]: https://img.shields.io/scrutinizer/g/doctrine/dbal/develop.svg?style=flat-square
- [ContinuousPHP develop image]: https://img.shields.io/continuousphp/git-hub/doctrine/dbal/develop.svg?style=flat-square
- [develop]: https://github.com/doctrine/dbal/tree/develop
- [Scrutinizer develop]: https://scrutinizer-ci.com/g/doctrine/dbal/?branch=develop
- [AppVeyor develop]: https://ci.appveyor.com/project/doctrine/dbal/branch/develop
- [AppVeyor develop image]: https://ci.appveyor.com/api/projects/status/i88kitq8qpbm0vie/branch/develop?svg=true
diff --git a/vendor/doctrine/dbal/SECURITY.md b/vendor/doctrine/dbal/SECURITY.md
deleted file mode 100644
index e18f0dd78..000000000
--- a/vendor/doctrine/dbal/SECURITY.md
+++ /dev/null
@@ -1,14 +0,0 @@
-Security
-========
-
-The Doctrine library is operating very close to your database and as such needs
-to handle and make assumptions about SQL injection vulnerabilities.
-
-It is vital that you understand how Doctrine approaches security, because
-we cannot protect you from SQL injection.
-
-Please read the documentation chapter on Security in Doctrine DBAL to
-understand the assumptions we make.
-
-- [Latest security.rst page on Github](https://github.com/doctrine/dbal/blob/master/docs/en/reference/security.rst)
-- [Security Page in rendered documentation](http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/security.html)
diff --git a/vendor/doctrine/dbal/UPGRADE.md b/vendor/doctrine/dbal/UPGRADE.md
deleted file mode 100644
index 205bf9919..000000000
--- a/vendor/doctrine/dbal/UPGRADE.md
+++ /dev/null
@@ -1,452 +0,0 @@
-# Upgrade to 2.10
-
-## Deprecated `Doctrine\DBAL\Event\ConnectionEventArgs` methods
-
-The usage of the `getDriver()`, `getDatabasePlatform()` and `getSchemaManager()` methods of the `ConnectionEventArgs` class has been deprecated. Obtain the underlying connection via `getConnection()` and call the corresponding methods on the connection instance.
-
-## Deprecated `Doctrine\DBAL\Event\SchemaColumnDefinitionEventArgs` methods
-
-The usage of the `getDatabasePlatform()` method of the `SchemaColumnDefinitionEventArgs` class has been deprecated. Obtain the underlying connection via `getConnection()` and call the corresponding method on the connection instance.
-
-## Deprecated `Doctrine\DBAL\Connection` methods
-
-The usage of the `getHost()`, `getPort()`, `getUsername()` and `getPassword()` methods of the `Connection` class has been deprecated as they leak implementation details.
-
-## Deprecated array of statements in `addSql()` of `SchemaEventArgs`-based classes.
-
-Passing multiple SQL statements as an array to `SchemaAlterTableAddColumnEventArgs::addSql()` and the same method in other `SchemaEventArgs`-based classes is deprecated. Pass each statement as an individual argument instead.
-
-## Deprecated calling `AbstractSchemaManager::tablesExist()` with a string argument.
-
-Instead of passing a string, pass a one-element array.
-
-## Deprecated calling `OracleSchemaManager::createDatabase()` without an argument or by passing NULL.
-
-In order to create a database, always pass the database name.
-
-## Deprecated unused schema manager methods.
-
-The following methods have been deprecated as unused:
-
-- `AbstractSchemaManager::_getPortableFunctionsList()`,
-- `AbstractSchemaManager::_getPortableFunctionDefinition()`,
-- `OracleSchemaManager::_getPortableFunctionDefinition()`,
-- `SqliteSchemaManager::_getPortableTableIndexDefinition()`.
-
-# Deprecations in `Doctrine\DBAL\Driver`
-
-- The usage of NULL to indicate empty `$username` or `$password` when calling `connect()` is deprecated. Use an empty string instead.
-
-## Deprecated `Doctrine\DBAL\Platforms::_getAlterTableIndexForeignKeySQL()`
-
-Method `Doctrine\DBAL\Platforms::_getAlterTableIndexForeignKeySQL()` has been deprecated as no longer used.
-
-## Deprecated `Doctrine\DBAL\Driver\OCI8\OCI8Statement::$_PARAM`
-
-Property `Doctrine\DBAL\Driver\OCI8\OCI8Statement::$_PARAM` has been deprecated as not used.
-
-## Deprecated `Doctrine\DBAL\Driver::getName()`
-
-Relying on the name of the driver is discouraged. For referencing the driver, use its class name.
-
-## Deprecated usage of user-provided `PDO` instance
-
-The usage of user-provided `PDO` instance is deprecated. The known use cases are:
-
-1. **Persistent PDO connections.** DBAL 3.0 will supported establishing persistent connections, therefore, providing a pre-created persistent PDO connection will be no longer needed.
-2. **Sharing `PDO` instance between DBAL and legacy components.** In order to share a PDO instance, initialize the connection in DBAL and access it using `Connection::getWrappedConnection()->getWrappedConnection()`.
-
-## MINOR BC BREAK: Default values are no longer handled as SQL expressions
-
-They are converted to SQL literals (e.g. escaped). Clients must now specify default values in their initial form, not in the form of an SQL literal (e.g. escaped).
-
-Before:
-
- $column->setDefault('Foo\\\\Bar\\\\Baz');
-
-After:
-
- $column->setDefault('Foo\\Bar\\Baz');
-
-## Deprecated `Type::*` constants
-
-The constants for built-in types have been moved from `Doctrine\DBAL\Types\Type` to a separate class `Doctrine\DBAL\Types\Types`.
-
-Some of the constants were renamed in the process:
-* `TARRAY`-> `ARRAY`
-* `DATE` -> `DATE_MUTABLE`
-* `DATETIME` -> `DATETIME_MUTABLE`
-* `DATETIMETZ` -> `DATETIMETZ_MUTABLE`
-* `TIME` -> `TIME_MUTABLE`
-
-## Deprecated `SQLSrvStatement::LAST_INSERT_ID_SQL` constant
-
-The `Doctrine\DBAL\Driver\SQLSrv\SQLSrvStatement::LAST_INSERT_ID_SQL` constant has been deprecated and will be made private in 3.0.
-
-## Deprecated `SQLParserUtils` constants
-
-The constants in `Doctrine\DBAL\SQLParserUtils` have been deprecated and will be made private in 3.0.
-
-## Deprecated `LoggerChain::addLogger` method
-
-The `Doctrine\DBAL\Logging\LoggerChain::addLogger` method has been deprecated. Inject list of loggers via constructor instead.
-
-# Upgrade to 2.9
-
-## Deprecated `Statement::fetchColumn()` with an invalid index
-
-Calls to `Statement::fetchColumn()` with an invalid column index currently return `NULL`. In the future, such calls will result in a exception.
-
-## Deprecated `Configuration::getFilterSchemaAssetsExpression()`, `::setFilterSchemaAssetsExpression()` and `AbstractSchemaManager::getFilterSchemaAssetsExpression()`.
-
-Regular expression-based filters are hard to extend by combining together. Instead, you may use callback-based filers via `::getSchemaAssetsFilter()` and `::getSchemaAssetsFilter()`. Callbacks can use regular expressions internally.
-
-## Deprecated `Doctrine\DBAL\Types\Type::getDefaultLength()`
-
-This method was never used by DBAL internally. It is now deprecated and will be removed in DBAL 3.0.
-
-## Deprecated `Doctrine\DBAL\Types\Type::__toString()`
-
-Relying on string representation is discouraged and will be removed in DBAL 3.0.
-
-## Deprecated `NULL` value of `$offset` in LIMIT queries
-
-The `NULL` value of the `$offset` argument in `AbstractPlatform::(do)?ModifyLimitQuery()` methods is deprecated. If explicitly used in the method call, the absence of the offset should be indicated with a `0`.
-
-## Deprecated dbal:import CLI command
-
-The `dbal:import` CLI command has been deprecated since it only works with PDO-based drivers by relying on a non-documented behavior of the extension, and it's impossible to make it work with other drivers.
-Please use other database client applications for import, e.g.:
-
- * For MySQL and MariaDB: `mysql [dbname] < data.sql`.
- * For PostgreSQL: `psql [dbname] < data.sql`.
- * For SQLite: `sqlite3 /path/to/file.db < data.sql`.
-
-# Upgrade to 2.8
-
-## Deprecated usage of DB-generated UUIDs
-
-The format of DB-generated UUIDs is inconsistent across supported platforms and therefore is not portable. Some of the platforms produce UUIDv1, some produce UUIDv4, some produce the values which are not even UUID.
-
-Unless UUIDs are used in stored procedures which DBAL doesn't support, there's no real benefit of DB-generated UUIDs comparing to the application-generated ones.
-
-Use a PHP library (e.g. [ramsey/uuid](https://packagist.org/packages/ramsey/uuid)) to generate UUIDs on the application side.
-
-## Deprecated usage of binary fields whose length exceeds the platform maximum
-
-- The usage of binary fields whose length exceeds the maximum field size on a given platform is deprecated.
- Use binary fields of a size which fits all target platforms, or use blob explicitly instead.
-
-## Removed dependency on doctrine/common
-
-The dependency on doctrine/common package has been removed.
-DBAL now depends on doctrine/cache and doctrine/event-manager instead.
-If you are using any other component from doctrine/common package,
-you will have to add an explicit dependency to your composer.json.
-
-## Corrected exception thrown by ``Doctrine\DBAL\Platforms\SQLAnywhere16Platform::getAdvancedIndexOptionsSQL()``
-
-This method now throws SPL ``UnexpectedValueException`` instead of accidentally throwing ``Doctrine\Common\Proxy\Exception\UnexpectedValueException``.
-
-# Upgrade to 2.7
-
-## Doctrine\DBAL\Platforms\AbstractPlatform::DATE_INTERVAL_UNIT_* constants deprecated
-
-``Doctrine\DBAL\Platforms\AbstractPlatform::DATE_INTERVAL_UNIT_*`` constants were moved into ``Doctrine\DBAL\Platforms\DateIntervalUnit`` class without the ``DATE_INTERVAL_UNIT_`` prefix.
-
-## Doctrine\DBAL\Platforms\AbstractPlatform::TRIM_* constants deprecated
-
-``Doctrine\DBAL\Platforms\AbstractPlatform::TRIM_*`` constants were moved into ``Doctrine\DBAL\Platforms\TrimMode`` class without the ``TRIM_`` prefix.
-
-## Doctrine\DBAL\Connection::TRANSACTION_* constants deprecated
-
-``Doctrine\DBAL\Connection::TRANSACTION_*`` were moved into ``Doctrine\DBAL\TransactionIsolationLevel`` class without the ``TRANSACTION_`` prefix.
-
-## DEPRECATION: direct usage of the PDO APIs in the DBAL API
-
-1. When calling `Doctrine\DBAL\Driver\Statement` methods, instead of `PDO::PARAM_*` constants, `Doctrine\DBAL\ParameterType` constants should be used.
-2. When calling `Doctrine\DBAL\Driver\ResultStatement` methods, instead of `PDO::FETCH_*` constants, `Doctrine\DBAL\FetchMode` constants should be used.
-3. When configuring `Doctrine\DBAL\Portability\Connection`, instead of `PDO::CASE_*` constants, `Doctrine\DBAL\ColumnCase` constants should be used.
-4. Usage of `PDO::PARAM_INPUT_OUTPUT` in `Doctrine\DBAL\Driver\Statement::bindValue()` is deprecated.
-5. Usage of `PDO::FETCH_FUNC` in `Doctrine\DBAL\Driver\ResultStatement::fetch()` is deprecated.
-6. Calls to `\PDOStatement` methods on a `\Doctrine\DBAL\Driver\PDOStatement` instance (e.g. `fetchObject()`) are deprecated.
-
-# Upgrade to 2.6
-
-## MINOR BC BREAK: `fetch()` and `fetchAll()` method signatures in `Doctrine\DBAL\Driver\ResultStatement`
-
-1. ``Doctrine\DBAL\Driver\ResultStatement::fetch()`` now has 3 arguments instead of 1, respecting
-``PDO::fetch()`` signature.
-
-Before:
-
- Doctrine\DBAL\Driver\ResultStatement::fetch($fetchMode);
-
-After:
-
- Doctrine\DBAL\Driver\ResultStatement::fetch($fetchMode, $cursorOrientation, $cursorOffset);
-
-2. ``Doctrine\DBAL\Driver\ResultStatement::fetchAll()`` now has 3 arguments instead of 1, respecting
-``PDO::fetchAll()`` signature.
-
-Before:
-
- Doctrine\DBAL\Driver\ResultStatement::fetchAll($fetchMode);
-
-After:
-
- Doctrine\DBAL\Driver\ResultStatement::fetch($fetchMode, $fetchArgument, $ctorArgs);
-
-
-## MINOR BC BREAK: URL-style DSN with percentage sign in password
-
-URL-style DSNs (e.g. ``mysql://foo@bar:localhost/db``) are now assumed to be percent-encoded
-in order to allow certain special characters in usernames, paswords and database names. If
-you are using a URL-style DSN and have a username, password or database name containing a
-percentage sign, you need to update your DSN. If your password is, say, ``foo%foo``, it
-should be encoded as ``foo%25foo``.
-
-# Upgrade to 2.5.1
-
-## MINOR BC BREAK: Doctrine\DBAL\Schema\Table
-
-When adding indexes to ``Doctrine\DBAL\Schema\Table`` via ``addIndex()`` or ``addUniqueIndex()``,
-duplicate indexes are not silently ignored/dropped anymore (based on semantics, not naming!).
-Duplicate indexes are considered indexes that pass ``isFullfilledBy()`` or ``overrules()``
-in ``Doctrine\DBAL\Schema\Index``.
-This is required to make the index renaming feature introduced in 2.5.0 work properly and avoid
-issues in the ORM schema tool / DBAL schema manager which pretends users from updating
-their schemas and migrate to DBAL 2.5.*.
-Additionally it offers more flexibility in declaring indexes for the user and potentially fixes
-related issues in the ORM.
-With this change, the responsibility to decide which index is a "duplicate" is completely deferred
-to the user.
-Please also note that adding foreign key constraints to a table via ``addForeignKeyConstraint()``,
-``addUnnamedForeignKeyConstraint()`` or ``addNamedForeignKeyConstraint()`` now first checks if an
-appropriate index is already present and avoids adding an additional auto-generated one eventually.
-
-# Upgrade to 2.5
-
-## BC BREAK: time type resets date fields to UNIX epoch
-
-When mapping `time` type field to PHP's `DateTime` instance all unused date fields are
-reset to UNIX epoch (i.e. 1970-01-01). This might break any logic which relies on comparing
-`DateTime` instances with date fields set to the current date.
-
-Use `!` format prefix (see http://php.net/manual/en/datetime.createfromformat.php) for parsing
-time strings to prevent having different date fields when comparing user input and `DateTime`
-instances as mapped by Doctrine.
-
-## BC BREAK: Doctrine\DBAL\Schema\Table
-
-The methods ``addIndex()`` and ``addUniqueIndex()`` in ``Doctrine\DBAL\Schema\Table``
-have an additional, optional parameter. If you override these methods, you should
-add this new parameter to the declaration of your overridden methods.
-
-## BC BREAK: Doctrine\DBAL\Connection
-
-The visibility of the property ``$_platform`` in ``Doctrine\DBAL\Connection``
-was changed from protected to private. If you have subclassed ``Doctrine\DBAL\Connection``
-in your application and accessed ``$_platform`` directly, you have to change the code
-portions to use ``getDatabasePlatform()`` instead to retrieve the underlying database
-platform.
-The reason for this change is the new automatic platform version detection feature,
-which lazily evaluates the appropriate platform class to use for the underlying database
-server version at runtime.
-Please also note, that calling ``getDatabasePlatform()`` now needs to establish a connection
-in order to evaluate the appropriate platform class if ``Doctrine\DBAL\Connection`` is not
-already connected. Under the following circumstances, it is not possible anymore to retrieve
-the platform instance from the connection object without having to do a real connect:
-
-1. ``Doctrine\DBAL\Connection`` was instantiated without the ``platform`` connection parameter.
-2. ``Doctrine\DBAL\Connection`` was instantiated without the ``serverVersion`` connection parameter.
-3. The underlying driver is "version aware" and can provide different platform instances
- for different versions.
-4. The underlying driver connection is "version aware" and can provide the database server
- version without having to query for it.
-
-If one of the above conditions is NOT met, there is no need for ``Doctrine\DBAL\Connection``
-to do a connect when calling ``getDatabasePlatform()``.
-
-## datetime Type uses date_create() as fallback
-
-Before 2.5 the DateTime type always required a specific format, defined in
-`$platform->getDateTimeFormatString()`, which could cause quite some troubles
-on platforms that had various microtime precision formats. Starting with 2.5
-whenever the parsing of a date fails with the predefined platform format,
-the `date_create()` function will be used to parse the date.
-
-This could cause some troubles when your date format is weird and not parsed
-correctly by `date_create`, however since databases are rather strict on dates
-there should be no problem.
-
-## Support for pdo_ibm driver removed
-
-The ``pdo_ibm`` driver is buggy and does not work well with Doctrine. Therefore it will no
-longer be supported and has been removed from the ``Doctrine\DBAL\DriverManager`` drivers
-map. It is highly encouraged to to use `ibm_db2` driver instead if you want to connect
-to an IBM DB2 database as it is much more stable and secure.
-
-If for some reason you have to utilize the ``pdo_ibm`` driver you can still use the `driverClass`
-connection parameter to explicitly specify the ``Doctrine\DBAL\Driver\PDOIbm\Driver`` class.
-However be aware that you are doing this at your own risk and it will not be guaranteed that
-Doctrine will work as expected.
-
-# Upgrade to 2.4
-
-## Doctrine\DBAL\Schema\Constraint
-
-If you have custom classes that implement the constraint interface, you have to implement
-an additional method ``getQuotedColumns`` now. This method is used to build proper constraint
-SQL for columns that need to be quoted, like keywords reserved by the specific platform used.
-The method has to return the same values as ``getColumns`` only that those column names that
-need quotation have to be returned quoted for the given platform.
-
-# Upgrade to 2.3
-
-## Oracle Session Init now sets Numeric Character
-
-Before 2.3 the Oracle Session Init did not care about the numeric character of the Session.
-This could lead to problems on non english locale systems that required a comma as a floating
-point seperator in Oracle. Since 2.3, using the Oracle Session Init on connection start the
-client session will be altered to set the numeric character to ".,":
-
- ALTER SESSION SET NLS_NUMERIC_CHARACTERS = '.,'
-
-See [DBAL-345](http://www.doctrine-project.org/jira/browse/DBAL-345) for more details.
-
-## Doctrine\DBAL\Connection and Doctrine\DBAL\Statement
-
-The query related methods including but not limited to executeQuery, exec, query, and executeUpdate
-now wrap the driver exceptions such as PDOException with DBALException to add more debugging
-information such as the executed SQL statement, and any bound parameters.
-
-If you want to retrieve the driver specific exception, you can retrieve it by calling the
-``getPrevious()`` method on DBALException.
-
-Before:
-
- catch(\PDOException $ex) {
- // ...
- }
-
-After:
-
- catch(\Doctrine\DBAL\DBALException $ex) {
- $pdoException = $ex->getPrevious();
- // ...
- }
-
-## Doctrine\DBAL\Connection#setCharsetSQL() removed
-
-This method only worked on MySQL and it is considered unsafe on MySQL to use SET NAMES UTF-8 instead
-of setting the charset directly on connection already. Replace this behavior with the
-connection charset option:
-
-Before:
-
- $conn = DriverManager::getConnection(array(..));
- $conn->setCharset('UTF8');
-
-After:
-
- $conn = DriverManager::getConnection(array('charset' => 'UTF8', ..));
-
-## Doctrine\DBAL\Schema\Table#renameColumn() removed
-
-Doctrine\DBAL\Schema\Table#renameColumn() was removed, because it drops and recreates
-the column instead. There is no fix available, because a schema diff
-cannot reliably detect if a column was renamed or one column was created
-and another one dropped.
-
-You should use explicit SQL ALTER TABLE statements to change columns names.
-
-## Schema Filter paths
-
-The Filter Schema assets expression is not wrapped in () anymore for the regexp automatically.
-
-Before:
-
- $config->setFilterSchemaAssetsExpression('foo');
-
-After:
-
- $config->setFilterSchemaAssetsExpression('(foo)');
-
-## Creating MySQL Tables now defaults to UTF-8
-
-If you are creating a new MySQL Table through the Doctrine API, charset/collate are
-now set to 'utf8'/'utf8_unicode_ci' by default. Previously the MySQL server defaults were used.
-
-# Upgrade to 2.2
-
-## Doctrine\DBAL\Connection#insert and Doctrine\DBAL\Connection#update
-
-Both methods now accept an optional last parameter $types with binding types of the values passed.
-This can potentially break child classes that have overwritten one of these methods.
-
-## Doctrine\DBAL\Connection#executeQuery
-
-Doctrine\DBAL\Connection#executeQuery() got a new last parameter "QueryCacheProfile $qcp"
-
-## Doctrine\DBAL\Driver\Statement split
-
-The Driver statement was split into a ResultStatement and the normal statement extending from it.
-This separates the configuration and the retrieval API from a statement.
-
-## MsSql Platform/SchemaManager renamed
-
-The MsSqlPlatform was renamed to SQLServerPlatform, the MsSqlSchemaManager was renamed
-to SQLServerSchemaManager.
-
-## Cleanup SQLServer Platform version mess
-
-DBAL 2.1 and before were actually only compatible to SQL Server 2008, not earlier versions.
-Still other parts of the platform did use old features instead of newly introduced datatypes
-in SQL Server 2005. Starting with DBAL 2.2 you can pick the Doctrine abstraction exactly
-matching your SQL Server version.
-
-The PDO SqlSrv driver now uses the new `SQLServer2008Platform` as default platform.
-This platform uses new features of SQL Server as of version 2008. This also includes a switch
-in the used fields for "text" and "blob" field types to:
-
- "text" => "VARCHAR(MAX)"
- "blob" => "VARBINARY(MAX)"
-
-Additionally `SQLServerPlatform` in DBAL 2.1 and before used "DATE", "TIME" and "DATETIME2" for dates.
-This types are only available since version 2008 and the introduction of an explicit
-SQLServer 2008 platform makes this dependency explicit.
-
-An `SQLServer2005Platform` was also introduced to differentiate the features between
-versions 2003, earlier and 2005.
-
-With this change the `SQLServerPlatform` now throws an exception for using limit queries
-with an offset, since SQLServer 2003 and lower do not support this feature.
-
-To use the old SQL Server Platform, because you are using SQL Server 2003 and below use
-the following configuration code:
-
- use Doctrine\DBAL\DriverManager;
- use Doctrine\DBAL\Platforms\SQLServerPlatform;
- use Doctrine\DBAL\Platforms\SQLServer2005Platform;
-
- // You are using SQL Server 2003 or earlier
- $conn = DriverManager::getConnection(array(
- 'driver' => 'pdo_sqlsrv',
- 'platform' => new SQLServerPlatform()
- // .. additional parameters
- ));
-
- // You are using SQL Server 2005
- $conn = DriverManager::getConnection(array(
- 'driver' => 'pdo_sqlsrv',
- 'platform' => new SQLServer2005Platform()
- // .. additional parameters
- ));
-
- // You are using SQL Server 2008
- $conn = DriverManager::getConnection(array(
- 'driver' => 'pdo_sqlsrv',
- // 2008 is default platform
- // .. additional parameters
- ));
diff --git a/vendor/doctrine/dbal/bin/doctrine-dbal b/vendor/doctrine/dbal/bin/doctrine-dbal
deleted file mode 100755
index 0531527dd..000000000
--- a/vendor/doctrine/dbal/bin/doctrine-dbal
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env php
-data = $data;
- if (! count($data)) {
- return;
- }
-
- $this->columnCount = count($data[0]);
- }
-
- /**
- * {@inheritdoc}
- */
- public function closeCursor()
- {
- unset($this->data);
- }
-
- /**
- * {@inheritdoc}
- */
- public function columnCount()
- {
- return $this->columnCount;
- }
-
- /**
- * {@inheritdoc}
- */
- public function setFetchMode($fetchMode, $arg2 = null, $arg3 = null)
- {
- if ($arg2 !== null || $arg3 !== null) {
- throw new InvalidArgumentException('Caching layer does not support 2nd/3rd argument to setFetchMode()');
- }
-
- $this->defaultFetchMode = $fetchMode;
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getIterator()
- {
- $data = $this->fetchAll();
-
- return new ArrayIterator($data);
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetch($fetchMode = null, $cursorOrientation = PDO::FETCH_ORI_NEXT, $cursorOffset = 0)
- {
- if (! isset($this->data[$this->num])) {
- return false;
- }
-
- $row = $this->data[$this->num++];
- $fetchMode = $fetchMode ?: $this->defaultFetchMode;
-
- if ($fetchMode === FetchMode::ASSOCIATIVE) {
- return $row;
- }
-
- if ($fetchMode === FetchMode::NUMERIC) {
- return array_values($row);
- }
-
- if ($fetchMode === FetchMode::MIXED) {
- return array_merge($row, array_values($row));
- }
-
- if ($fetchMode === FetchMode::COLUMN) {
- return reset($row);
- }
-
- throw new InvalidArgumentException('Invalid fetch-style given for fetching result.');
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetchAll($fetchMode = null, $fetchArgument = null, $ctorArgs = null)
- {
- $rows = [];
- while ($row = $this->fetch($fetchMode)) {
- $rows[] = $row;
- }
-
- return $rows;
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetchColumn($columnIndex = 0)
- {
- $row = $this->fetch(FetchMode::NUMERIC);
-
- // TODO: verify that return false is the correct behavior
- return $row[$columnIndex] ?? false;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Cache/CacheException.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Cache/CacheException.php
deleted file mode 100644
index 636c948a6..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Cache/CacheException.php
+++ /dev/null
@@ -1,24 +0,0 @@
-lifetime = $lifetime;
- $this->cacheKey = $cacheKey;
- $this->resultCacheDriver = $resultCache;
- }
-
- /**
- * @return Cache|null
- */
- public function getResultCacheDriver()
- {
- return $this->resultCacheDriver;
- }
-
- /**
- * @return int
- */
- public function getLifetime()
- {
- return $this->lifetime;
- }
-
- /**
- * @return string
- *
- * @throws CacheException
- */
- public function getCacheKey()
- {
- if ($this->cacheKey === null) {
- throw CacheException::noCacheKey();
- }
-
- return $this->cacheKey;
- }
-
- /**
- * Generates the real cache key from query, params, types and connection parameters.
- *
- * @param string $query
- * @param mixed[] $params
- * @param int[]|string[] $types
- * @param mixed[] $connectionParams
- *
- * @return string[]
- */
- public function generateCacheKeys($query, $params, $types, array $connectionParams = [])
- {
- $realCacheKey = 'query=' . $query .
- '¶ms=' . serialize($params) .
- '&types=' . serialize($types) .
- '&connectionParams=' . hash('sha256', serialize($connectionParams));
-
- // should the key be automatically generated using the inputs or is the cache key set?
- if ($this->cacheKey === null) {
- $cacheKey = sha1($realCacheKey);
- } else {
- $cacheKey = $this->cacheKey;
- }
-
- return [$cacheKey, $realCacheKey];
- }
-
- /**
- * @return \Doctrine\DBAL\Cache\QueryCacheProfile
- */
- public function setResultCacheDriver(Cache $cache)
- {
- return new QueryCacheProfile($this->lifetime, $this->cacheKey, $cache);
- }
-
- /**
- * @param string|null $cacheKey
- *
- * @return \Doctrine\DBAL\Cache\QueryCacheProfile
- */
- public function setCacheKey($cacheKey)
- {
- return new QueryCacheProfile($this->lifetime, $cacheKey, $this->resultCacheDriver);
- }
-
- /**
- * @param int $lifetime
- *
- * @return \Doctrine\DBAL\Cache\QueryCacheProfile
- */
- public function setLifetime($lifetime)
- {
- return new QueryCacheProfile($lifetime, $this->cacheKey, $this->resultCacheDriver);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Cache/ResultCacheStatement.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Cache/ResultCacheStatement.php
deleted file mode 100644
index f04c85249..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Cache/ResultCacheStatement.php
+++ /dev/null
@@ -1,212 +0,0 @@
-statement = $stmt;
- $this->resultCache = $resultCache;
- $this->cacheKey = $cacheKey;
- $this->realKey = $realKey;
- $this->lifetime = $lifetime;
- }
-
- /**
- * {@inheritdoc}
- */
- public function closeCursor()
- {
- $this->statement->closeCursor();
- if (! $this->emptied || $this->data === null) {
- return true;
- }
-
- $data = $this->resultCache->fetch($this->cacheKey);
- if (! $data) {
- $data = [];
- }
- $data[$this->realKey] = $this->data;
-
- $this->resultCache->save($this->cacheKey, $data, $this->lifetime);
- unset($this->data);
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function columnCount()
- {
- return $this->statement->columnCount();
- }
-
- /**
- * {@inheritdoc}
- */
- public function setFetchMode($fetchMode, $arg2 = null, $arg3 = null)
- {
- $this->defaultFetchMode = $fetchMode;
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getIterator()
- {
- $data = $this->fetchAll();
-
- return new ArrayIterator($data);
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetch($fetchMode = null, $cursorOrientation = PDO::FETCH_ORI_NEXT, $cursorOffset = 0)
- {
- if ($this->data === null) {
- $this->data = [];
- }
-
- $row = $this->statement->fetch(FetchMode::ASSOCIATIVE);
-
- if ($row) {
- $this->data[] = $row;
-
- $fetchMode = $fetchMode ?: $this->defaultFetchMode;
-
- if ($fetchMode === FetchMode::ASSOCIATIVE) {
- return $row;
- }
-
- if ($fetchMode === FetchMode::NUMERIC) {
- return array_values($row);
- }
-
- if ($fetchMode === FetchMode::MIXED) {
- return array_merge($row, array_values($row));
- }
-
- if ($fetchMode === FetchMode::COLUMN) {
- return reset($row);
- }
-
- throw new InvalidArgumentException('Invalid fetch-style given for caching result.');
- }
-
- $this->emptied = true;
-
- return false;
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetchAll($fetchMode = null, $fetchArgument = null, $ctorArgs = null)
- {
- $data = $this->statement->fetchAll($fetchMode, $fetchArgument, $ctorArgs);
-
- if ($fetchMode === FetchMode::COLUMN) {
- foreach ($data as $key => $value) {
- $data[$key] = [$value];
- }
- }
-
- $this->data = $data;
- $this->emptied = true;
-
- return $this->data;
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetchColumn($columnIndex = 0)
- {
- $row = $this->fetch(FetchMode::NUMERIC);
-
- // TODO: verify that return false is the correct behavior
- return $row[$columnIndex] ?? false;
- }
-
- /**
- * Returns the number of rows affected by the last DELETE, INSERT, or UPDATE statement
- * executed by the corresponding object.
- *
- * If the last SQL statement executed by the associated Statement object was a SELECT statement,
- * some databases may return the number of rows returned by that statement. However,
- * this behaviour is not guaranteed for all databases and should not be
- * relied on for portable applications.
- *
- * @return int The number of rows.
- */
- public function rowCount()
- {
- assert($this->statement instanceof Statement);
-
- return $this->statement->rowCount();
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/ColumnCase.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/ColumnCase.php
deleted file mode 100644
index 872d3ede8..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/ColumnCase.php
+++ /dev/null
@@ -1,32 +0,0 @@
-_attributes['sqlLogger'] = $logger;
- }
-
- /**
- * Gets the SQL logger that is used.
- *
- * @return SQLLogger|null
- */
- public function getSQLLogger()
- {
- return $this->_attributes['sqlLogger'] ?? null;
- }
-
- /**
- * Gets the cache driver implementation that is used for query result caching.
- *
- * @return Cache|null
- */
- public function getResultCacheImpl()
- {
- return $this->_attributes['resultCacheImpl'] ?? null;
- }
-
- /**
- * Sets the cache driver implementation that is used for query result caching.
- *
- * @return void
- */
- public function setResultCacheImpl(Cache $cacheImpl)
- {
- $this->_attributes['resultCacheImpl'] = $cacheImpl;
- }
-
- /**
- * Sets the filter schema assets expression.
- *
- * Only include tables/sequences matching the filter expression regexp in
- * schema instances generated for the active connection when calling
- * {AbstractSchemaManager#createSchema()}.
- *
- * @deprecated Use Configuration::setSchemaAssetsFilter() instead
- *
- * @param string $filterExpression
- *
- * @return void
- */
- public function setFilterSchemaAssetsExpression($filterExpression)
- {
- $this->_attributes['filterSchemaAssetsExpression'] = $filterExpression;
- if ($filterExpression) {
- $this->_attributes['filterSchemaAssetsExpressionCallable'] = $this->buildSchemaAssetsFilterFromExpression($filterExpression);
- } else {
- $this->_attributes['filterSchemaAssetsExpressionCallable'] = null;
- }
- }
-
- /**
- * Returns filter schema assets expression.
- *
- * @deprecated Use Configuration::getSchemaAssetsFilter() instead
- *
- * @return string|null
- */
- public function getFilterSchemaAssetsExpression()
- {
- return $this->_attributes['filterSchemaAssetsExpression'] ?? null;
- }
-
- /**
- * @param string $filterExpression
- */
- private function buildSchemaAssetsFilterFromExpression($filterExpression) : callable
- {
- return static function ($assetName) use ($filterExpression) {
- if ($assetName instanceof AbstractAsset) {
- $assetName = $assetName->getName();
- }
-
- return preg_match($filterExpression, $assetName);
- };
- }
-
- /**
- * Sets the callable to use to filter schema assets.
- */
- public function setSchemaAssetsFilter(?callable $callable = null) : ?callable
- {
- $this->_attributes['filterSchemaAssetsExpression'] = null;
-
- return $this->_attributes['filterSchemaAssetsExpressionCallable'] = $callable;
- }
-
- /**
- * Returns the callable to use to filter schema assets.
- */
- public function getSchemaAssetsFilter() : ?callable
- {
- return $this->_attributes['filterSchemaAssetsExpressionCallable'] ?? null;
- }
-
- /**
- * Sets the default auto-commit mode for connections.
- *
- * If a connection is in auto-commit mode, then all its SQL statements will be executed and committed as individual
- * transactions. Otherwise, its SQL statements are grouped into transactions that are terminated by a call to either
- * the method commit or the method rollback. By default, new connections are in auto-commit mode.
- *
- * @see getAutoCommit
- *
- * @param bool $autoCommit True to enable auto-commit mode; false to disable it.
- */
- public function setAutoCommit($autoCommit)
- {
- $this->_attributes['autoCommit'] = (bool) $autoCommit;
- }
-
- /**
- * Returns the default auto-commit mode for connections.
- *
- * @see setAutoCommit
- *
- * @return bool True if auto-commit mode is enabled by default for connections, false otherwise.
- */
- public function getAutoCommit()
- {
- return $this->_attributes['autoCommit'] ?? true;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php
deleted file mode 100644
index ee6c08635..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php
+++ /dev/null
@@ -1,1685 +0,0 @@
-_driver = $driver;
- $this->params = $params;
-
- if (isset($params['pdo'])) {
- $this->_conn = $params['pdo'];
- $this->isConnected = true;
- unset($this->params['pdo']);
- }
-
- if (isset($params['platform'])) {
- if (! $params['platform'] instanceof Platforms\AbstractPlatform) {
- throw DBALException::invalidPlatformType($params['platform']);
- }
-
- $this->platform = $params['platform'];
- }
-
- // Create default config and event manager if none given
- if (! $config) {
- $config = new Configuration();
- }
-
- if (! $eventManager) {
- $eventManager = new EventManager();
- }
-
- $this->_config = $config;
- $this->_eventManager = $eventManager;
-
- $this->_expr = new Query\Expression\ExpressionBuilder($this);
-
- $this->autoCommit = $config->getAutoCommit();
- }
-
- /**
- * Gets the parameters used during instantiation.
- *
- * @return mixed[]
- */
- public function getParams()
- {
- return $this->params;
- }
-
- /**
- * Gets the name of the database this Connection is connected to.
- *
- * @return string
- */
- public function getDatabase()
- {
- return $this->_driver->getDatabase($this);
- }
-
- /**
- * Gets the hostname of the currently connected database.
- *
- * @deprecated
- *
- * @return string|null
- */
- public function getHost()
- {
- return $this->params['host'] ?? null;
- }
-
- /**
- * Gets the port of the currently connected database.
- *
- * @deprecated
- *
- * @return mixed
- */
- public function getPort()
- {
- return $this->params['port'] ?? null;
- }
-
- /**
- * Gets the username used by this connection.
- *
- * @deprecated
- *
- * @return string|null
- */
- public function getUsername()
- {
- return $this->params['user'] ?? null;
- }
-
- /**
- * Gets the password used by this connection.
- *
- * @deprecated
- *
- * @return string|null
- */
- public function getPassword()
- {
- return $this->params['password'] ?? null;
- }
-
- /**
- * Gets the DBAL driver instance.
- *
- * @return Driver
- */
- public function getDriver()
- {
- return $this->_driver;
- }
-
- /**
- * Gets the Configuration used by the Connection.
- *
- * @return Configuration
- */
- public function getConfiguration()
- {
- return $this->_config;
- }
-
- /**
- * Gets the EventManager used by the Connection.
- *
- * @return EventManager
- */
- public function getEventManager()
- {
- return $this->_eventManager;
- }
-
- /**
- * Gets the DatabasePlatform for the connection.
- *
- * @return AbstractPlatform
- *
- * @throws DBALException
- */
- public function getDatabasePlatform()
- {
- if ($this->platform === null) {
- $this->detectDatabasePlatform();
- }
-
- return $this->platform;
- }
-
- /**
- * Gets the ExpressionBuilder for the connection.
- *
- * @return ExpressionBuilder
- */
- public function getExpressionBuilder()
- {
- return $this->_expr;
- }
-
- /**
- * Establishes the connection with the database.
- *
- * @return bool TRUE if the connection was successfully established, FALSE if
- * the connection is already open.
- */
- public function connect()
- {
- if ($this->isConnected) {
- return false;
- }
-
- $driverOptions = $this->params['driverOptions'] ?? [];
- $user = $this->params['user'] ?? null;
- $password = $this->params['password'] ?? null;
-
- $this->_conn = $this->_driver->connect($this->params, $user, $password, $driverOptions);
- $this->isConnected = true;
-
- $this->transactionNestingLevel = 0;
-
- if ($this->autoCommit === false) {
- $this->beginTransaction();
- }
-
- if ($this->_eventManager->hasListeners(Events::postConnect)) {
- $eventArgs = new Event\ConnectionEventArgs($this);
- $this->_eventManager->dispatchEvent(Events::postConnect, $eventArgs);
- }
-
- return true;
- }
-
- /**
- * Detects and sets the database platform.
- *
- * Evaluates custom platform class and version in order to set the correct platform.
- *
- * @throws DBALException If an invalid platform was specified for this connection.
- */
- private function detectDatabasePlatform()
- {
- $version = $this->getDatabasePlatformVersion();
-
- if ($version !== null) {
- assert($this->_driver instanceof VersionAwarePlatformDriver);
-
- $this->platform = $this->_driver->createDatabasePlatformForVersion($version);
- } else {
- $this->platform = $this->_driver->getDatabasePlatform();
- }
-
- $this->platform->setEventManager($this->_eventManager);
- }
-
- /**
- * Returns the version of the related platform if applicable.
- *
- * Returns null if either the driver is not capable to create version
- * specific platform instances, no explicit server version was specified
- * or the underlying driver connection cannot determine the platform
- * version without having to query it (performance reasons).
- *
- * @return string|null
- *
- * @throws Exception
- */
- private function getDatabasePlatformVersion()
- {
- // Driver does not support version specific platforms.
- if (! $this->_driver instanceof VersionAwarePlatformDriver) {
- return null;
- }
-
- // Explicit platform version requested (supersedes auto-detection).
- if (isset($this->params['serverVersion'])) {
- return $this->params['serverVersion'];
- }
-
- // If not connected, we need to connect now to determine the platform version.
- if ($this->_conn === null) {
- try {
- $this->connect();
- } catch (Throwable $originalException) {
- if (empty($this->params['dbname'])) {
- throw $originalException;
- }
-
- // The database to connect to might not yet exist.
- // Retry detection without database name connection parameter.
- $databaseName = $this->params['dbname'];
- $this->params['dbname'] = null;
-
- try {
- $this->connect();
- } catch (Throwable $fallbackException) {
- // Either the platform does not support database-less connections
- // or something else went wrong.
- // Reset connection parameters and rethrow the original exception.
- $this->params['dbname'] = $databaseName;
-
- throw $originalException;
- }
-
- // Reset connection parameters.
- $this->params['dbname'] = $databaseName;
- $serverVersion = $this->getServerVersion();
-
- // Close "temporary" connection to allow connecting to the real database again.
- $this->close();
-
- return $serverVersion;
- }
- }
-
- return $this->getServerVersion();
- }
-
- /**
- * Returns the database server version if the underlying driver supports it.
- *
- * @return string|null
- */
- private function getServerVersion()
- {
- $connection = $this->getWrappedConnection();
-
- // Automatic platform version detection.
- if ($connection instanceof ServerInfoAwareConnection && ! $connection->requiresQueryForServerVersion()) {
- return $connection->getServerVersion();
- }
-
- // Unable to detect platform version.
- return null;
- }
-
- /**
- * Returns the current auto-commit mode for this connection.
- *
- * @see setAutoCommit
- *
- * @return bool True if auto-commit mode is currently enabled for this connection, false otherwise.
- */
- public function isAutoCommit()
- {
- return $this->autoCommit === true;
- }
-
- /**
- * Sets auto-commit mode for this connection.
- *
- * If a connection is in auto-commit mode, then all its SQL statements will be executed and committed as individual
- * transactions. Otherwise, its SQL statements are grouped into transactions that are terminated by a call to either
- * the method commit or the method rollback. By default, new connections are in auto-commit mode.
- *
- * NOTE: If this method is called during a transaction and the auto-commit mode is changed, the transaction is
- * committed. If this method is called and the auto-commit mode is not changed, the call is a no-op.
- *
- * @see isAutoCommit
- *
- * @param bool $autoCommit True to enable auto-commit mode; false to disable it.
- */
- public function setAutoCommit($autoCommit)
- {
- $autoCommit = (bool) $autoCommit;
-
- // Mode not changed, no-op.
- if ($autoCommit === $this->autoCommit) {
- return;
- }
-
- $this->autoCommit = $autoCommit;
-
- // Commit all currently active transactions if any when switching auto-commit mode.
- if ($this->isConnected !== true || $this->transactionNestingLevel === 0) {
- return;
- }
-
- $this->commitAll();
- }
-
- /**
- * Sets the fetch mode.
- *
- * @param int $fetchMode
- *
- * @return void
- */
- public function setFetchMode($fetchMode)
- {
- $this->defaultFetchMode = $fetchMode;
- }
-
- /**
- * Prepares and executes an SQL query and returns the first row of the result
- * as an associative array.
- *
- * @param string $statement The SQL query.
- * @param mixed[] $params The query parameters.
- * @param int[]|string[] $types The query parameter types.
- *
- * @return mixed[]|false False is returned if no rows are found.
- *
- * @throws DBALException
- */
- public function fetchAssoc($statement, array $params = [], array $types = [])
- {
- return $this->executeQuery($statement, $params, $types)->fetch(FetchMode::ASSOCIATIVE);
- }
-
- /**
- * Prepares and executes an SQL query and returns the first row of the result
- * as a numerically indexed array.
- *
- * @param string $statement The SQL query to be executed.
- * @param mixed[] $params The prepared statement params.
- * @param int[]|string[] $types The query parameter types.
- *
- * @return mixed[]|false False is returned if no rows are found.
- */
- public function fetchArray($statement, array $params = [], array $types = [])
- {
- return $this->executeQuery($statement, $params, $types)->fetch(FetchMode::NUMERIC);
- }
-
- /**
- * Prepares and executes an SQL query and returns the value of a single column
- * of the first row of the result.
- *
- * @param string $statement The SQL query to be executed.
- * @param mixed[] $params The prepared statement params.
- * @param int $column The 0-indexed column number to retrieve.
- * @param int[]|string[] $types The query parameter types.
- *
- * @return mixed|false False is returned if no rows are found.
- *
- * @throws DBALException
- */
- public function fetchColumn($statement, array $params = [], $column = 0, array $types = [])
- {
- return $this->executeQuery($statement, $params, $types)->fetchColumn($column);
- }
-
- /**
- * Whether an actual connection to the database is established.
- *
- * @return bool
- */
- public function isConnected()
- {
- return $this->isConnected;
- }
-
- /**
- * Checks whether a transaction is currently active.
- *
- * @return bool TRUE if a transaction is currently active, FALSE otherwise.
- */
- public function isTransactionActive()
- {
- return $this->transactionNestingLevel > 0;
- }
-
- /**
- * Adds identifier condition to the query components
- *
- * @param mixed[] $identifier Map of key columns to their values
- * @param string[] $columns Column names
- * @param mixed[] $values Column values
- * @param string[] $conditions Key conditions
- *
- * @throws DBALException
- */
- private function addIdentifierCondition(
- array $identifier,
- array &$columns,
- array &$values,
- array &$conditions
- ) : void {
- $platform = $this->getDatabasePlatform();
-
- foreach ($identifier as $columnName => $value) {
- if ($value === null) {
- $conditions[] = $platform->getIsNullExpression($columnName);
- continue;
- }
-
- $columns[] = $columnName;
- $values[] = $value;
- $conditions[] = $columnName . ' = ?';
- }
- }
-
- /**
- * Executes an SQL DELETE statement on a table.
- *
- * Table expression and columns are not escaped and are not safe for user-input.
- *
- * @param string $tableExpression The expression of the table on which to delete.
- * @param mixed[] $identifier The deletion criteria. An associative array containing column-value pairs.
- * @param int[]|string[] $types The types of identifiers.
- *
- * @return int The number of affected rows.
- *
- * @throws DBALException
- * @throws InvalidArgumentException
- */
- public function delete($tableExpression, array $identifier, array $types = [])
- {
- if (empty($identifier)) {
- throw InvalidArgumentException::fromEmptyCriteria();
- }
-
- $columns = $values = $conditions = [];
-
- $this->addIdentifierCondition($identifier, $columns, $values, $conditions);
-
- return $this->executeUpdate(
- 'DELETE FROM ' . $tableExpression . ' WHERE ' . implode(' AND ', $conditions),
- $values,
- is_string(key($types)) ? $this->extractTypeValues($columns, $types) : $types
- );
- }
-
- /**
- * Closes the connection.
- *
- * @return void
- */
- public function close()
- {
- $this->_conn = null;
-
- $this->isConnected = false;
- }
-
- /**
- * Sets the transaction isolation level.
- *
- * @param int $level The level to set.
- *
- * @return int
- */
- public function setTransactionIsolation($level)
- {
- $this->transactionIsolationLevel = $level;
-
- return $this->executeUpdate($this->getDatabasePlatform()->getSetTransactionIsolationSQL($level));
- }
-
- /**
- * Gets the currently active transaction isolation level.
- *
- * @return int The current transaction isolation level.
- */
- public function getTransactionIsolation()
- {
- if ($this->transactionIsolationLevel === null) {
- $this->transactionIsolationLevel = $this->getDatabasePlatform()->getDefaultTransactionIsolationLevel();
- }
-
- return $this->transactionIsolationLevel;
- }
-
- /**
- * Executes an SQL UPDATE statement on a table.
- *
- * Table expression and columns are not escaped and are not safe for user-input.
- *
- * @param string $tableExpression The expression of the table to update quoted or unquoted.
- * @param mixed[] $data An associative array containing column-value pairs.
- * @param mixed[] $identifier The update criteria. An associative array containing column-value pairs.
- * @param int[]|string[] $types Types of the merged $data and $identifier arrays in that order.
- *
- * @return int The number of affected rows.
- *
- * @throws DBALException
- */
- public function update($tableExpression, array $data, array $identifier, array $types = [])
- {
- $columns = $values = $conditions = $set = [];
-
- foreach ($data as $columnName => $value) {
- $columns[] = $columnName;
- $values[] = $value;
- $set[] = $columnName . ' = ?';
- }
-
- $this->addIdentifierCondition($identifier, $columns, $values, $conditions);
-
- if (is_string(key($types))) {
- $types = $this->extractTypeValues($columns, $types);
- }
-
- $sql = 'UPDATE ' . $tableExpression . ' SET ' . implode(', ', $set)
- . ' WHERE ' . implode(' AND ', $conditions);
-
- return $this->executeUpdate($sql, $values, $types);
- }
-
- /**
- * Inserts a table row with specified data.
- *
- * Table expression and columns are not escaped and are not safe for user-input.
- *
- * @param string $tableExpression The expression of the table to insert data into, quoted or unquoted.
- * @param mixed[] $data An associative array containing column-value pairs.
- * @param int[]|string[] $types Types of the inserted data.
- *
- * @return int The number of affected rows.
- *
- * @throws DBALException
- */
- public function insert($tableExpression, array $data, array $types = [])
- {
- if (empty($data)) {
- return $this->executeUpdate('INSERT INTO ' . $tableExpression . ' () VALUES ()');
- }
-
- $columns = [];
- $values = [];
- $set = [];
-
- foreach ($data as $columnName => $value) {
- $columns[] = $columnName;
- $values[] = $value;
- $set[] = '?';
- }
-
- return $this->executeUpdate(
- 'INSERT INTO ' . $tableExpression . ' (' . implode(', ', $columns) . ')' .
- ' VALUES (' . implode(', ', $set) . ')',
- $values,
- is_string(key($types)) ? $this->extractTypeValues($columns, $types) : $types
- );
- }
-
- /**
- * Extract ordered type list from an ordered column list and type map.
- *
- * @param int[]|string[] $columnList
- * @param int[]|string[] $types
- *
- * @return int[]|string[]
- */
- private function extractTypeValues(array $columnList, array $types)
- {
- $typeValues = [];
-
- foreach ($columnList as $columnIndex => $columnName) {
- $typeValues[] = $types[$columnName] ?? ParameterType::STRING;
- }
-
- return $typeValues;
- }
-
- /**
- * Quotes a string so it can be safely used as a table or column name, even if
- * it is a reserved name.
- *
- * Delimiting style depends on the underlying database platform that is being used.
- *
- * NOTE: Just because you CAN use quoted identifiers does not mean
- * you SHOULD use them. In general, they end up causing way more
- * problems than they solve.
- *
- * @param string $str The name to be quoted.
- *
- * @return string The quoted name.
- */
- public function quoteIdentifier($str)
- {
- return $this->getDatabasePlatform()->quoteIdentifier($str);
- }
-
- /**
- * {@inheritDoc}
- */
- public function quote($input, $type = null)
- {
- $connection = $this->getWrappedConnection();
-
- [$value, $bindingType] = $this->getBindingInfo($input, $type);
-
- return $connection->quote($value, $bindingType);
- }
-
- /**
- * Prepares and executes an SQL query and returns the result as an associative array.
- *
- * @param string $sql The SQL query.
- * @param mixed[] $params The query parameters.
- * @param int[]|string[] $types The query parameter types.
- *
- * @return mixed[]
- */
- public function fetchAll($sql, array $params = [], $types = [])
- {
- return $this->executeQuery($sql, $params, $types)->fetchAll();
- }
-
- /**
- * Prepares an SQL statement.
- *
- * @param string $statement The SQL statement to prepare.
- *
- * @return DriverStatement The prepared statement.
- *
- * @throws DBALException
- */
- public function prepare($statement)
- {
- try {
- $stmt = new Statement($statement, $this);
- } catch (Throwable $ex) {
- throw DBALException::driverExceptionDuringQuery($this->_driver, $ex, $statement);
- }
-
- $stmt->setFetchMode($this->defaultFetchMode);
-
- return $stmt;
- }
-
- /**
- * Executes an, optionally parametrized, SQL query.
- *
- * If the query is parametrized, a prepared statement is used.
- * If an SQLLogger is configured, the execution is logged.
- *
- * @param string $query The SQL query to execute.
- * @param mixed[] $params The parameters to bind to the query, if any.
- * @param int[]|string[] $types The types the previous parameters are in.
- * @param QueryCacheProfile|null $qcp The query cache profile, optional.
- *
- * @return ResultStatement The executed statement.
- *
- * @throws DBALException
- */
- public function executeQuery($query, array $params = [], $types = [], ?QueryCacheProfile $qcp = null)
- {
- if ($qcp !== null) {
- return $this->executeCacheQuery($query, $params, $types, $qcp);
- }
-
- $connection = $this->getWrappedConnection();
-
- $logger = $this->_config->getSQLLogger();
- if ($logger) {
- $logger->startQuery($query, $params, $types);
- }
-
- try {
- if ($params) {
- [$query, $params, $types] = SQLParserUtils::expandListParameters($query, $params, $types);
-
- $stmt = $connection->prepare($query);
- if ($types) {
- $this->_bindTypedValues($stmt, $params, $types);
- $stmt->execute();
- } else {
- $stmt->execute($params);
- }
- } else {
- $stmt = $connection->query($query);
- }
- } catch (Throwable $ex) {
- throw DBALException::driverExceptionDuringQuery($this->_driver, $ex, $query, $this->resolveParams($params, $types));
- }
-
- $stmt->setFetchMode($this->defaultFetchMode);
-
- if ($logger) {
- $logger->stopQuery();
- }
-
- return $stmt;
- }
-
- /**
- * Executes a caching query.
- *
- * @param string $query The SQL query to execute.
- * @param mixed[] $params The parameters to bind to the query, if any.
- * @param int[]|string[] $types The types the previous parameters are in.
- * @param QueryCacheProfile $qcp The query cache profile.
- *
- * @return ResultStatement
- *
- * @throws CacheException
- */
- public function executeCacheQuery($query, $params, $types, QueryCacheProfile $qcp)
- {
- $resultCache = $qcp->getResultCacheDriver() ?? $this->_config->getResultCacheImpl();
-
- if ($resultCache === null) {
- throw CacheException::noResultDriverConfigured();
- }
-
- $connectionParams = $this->getParams();
- unset($connectionParams['platform']);
-
- [$cacheKey, $realKey] = $qcp->generateCacheKeys($query, $params, $types, $connectionParams);
-
- // fetch the row pointers entry
- $data = $resultCache->fetch($cacheKey);
-
- if ($data !== false) {
- // is the real key part of this row pointers map or is the cache only pointing to other cache keys?
- if (isset($data[$realKey])) {
- $stmt = new ArrayStatement($data[$realKey]);
- } elseif (array_key_exists($realKey, $data)) {
- $stmt = new ArrayStatement([]);
- }
- }
-
- if (! isset($stmt)) {
- $stmt = new ResultCacheStatement($this->executeQuery($query, $params, $types), $resultCache, $cacheKey, $realKey, $qcp->getLifetime());
- }
-
- $stmt->setFetchMode($this->defaultFetchMode);
-
- return $stmt;
- }
-
- /**
- * Executes an, optionally parametrized, SQL query and returns the result,
- * applying a given projection/transformation function on each row of the result.
- *
- * @param string $query The SQL query to execute.
- * @param mixed[] $params The parameters, if any.
- * @param Closure $function The transformation function that is applied on each row.
- * The function receives a single parameter, an array, that
- * represents a row of the result set.
- *
- * @return mixed[] The projected result of the query.
- */
- public function project($query, array $params, Closure $function)
- {
- $result = [];
- $stmt = $this->executeQuery($query, $params);
-
- while ($row = $stmt->fetch()) {
- $result[] = $function($row);
- }
-
- $stmt->closeCursor();
-
- return $result;
- }
-
- /**
- * Executes an SQL statement, returning a result set as a Statement object.
- *
- * @return \Doctrine\DBAL\Driver\Statement
- *
- * @throws DBALException
- */
- public function query()
- {
- $connection = $this->getWrappedConnection();
-
- $args = func_get_args();
-
- $logger = $this->_config->getSQLLogger();
- if ($logger) {
- $logger->startQuery($args[0]);
- }
-
- try {
- $statement = $connection->query(...$args);
- } catch (Throwable $ex) {
- throw DBALException::driverExceptionDuringQuery($this->_driver, $ex, $args[0]);
- }
-
- $statement->setFetchMode($this->defaultFetchMode);
-
- if ($logger) {
- $logger->stopQuery();
- }
-
- return $statement;
- }
-
- /**
- * Executes an SQL INSERT/UPDATE/DELETE query with the given parameters
- * and returns the number of affected rows.
- *
- * This method supports PDO binding types as well as DBAL mapping types.
- *
- * @param string $query The SQL query.
- * @param mixed[] $params The query parameters.
- * @param int[]|string[] $types The parameter types.
- *
- * @return int The number of affected rows.
- *
- * @throws DBALException
- */
- public function executeUpdate($query, array $params = [], array $types = [])
- {
- $connection = $this->getWrappedConnection();
-
- $logger = $this->_config->getSQLLogger();
- if ($logger) {
- $logger->startQuery($query, $params, $types);
- }
-
- try {
- if ($params) {
- [$query, $params, $types] = SQLParserUtils::expandListParameters($query, $params, $types);
-
- $stmt = $connection->prepare($query);
-
- if ($types) {
- $this->_bindTypedValues($stmt, $params, $types);
- $stmt->execute();
- } else {
- $stmt->execute($params);
- }
- $result = $stmt->rowCount();
- } else {
- $result = $connection->exec($query);
- }
- } catch (Throwable $ex) {
- throw DBALException::driverExceptionDuringQuery($this->_driver, $ex, $query, $this->resolveParams($params, $types));
- }
-
- if ($logger) {
- $logger->stopQuery();
- }
-
- return $result;
- }
-
- /**
- * Executes an SQL statement and return the number of affected rows.
- *
- * @param string $statement
- *
- * @return int The number of affected rows.
- *
- * @throws DBALException
- */
- public function exec($statement)
- {
- $connection = $this->getWrappedConnection();
-
- $logger = $this->_config->getSQLLogger();
- if ($logger) {
- $logger->startQuery($statement);
- }
-
- try {
- $result = $connection->exec($statement);
- } catch (Throwable $ex) {
- throw DBALException::driverExceptionDuringQuery($this->_driver, $ex, $statement);
- }
-
- if ($logger) {
- $logger->stopQuery();
- }
-
- return $result;
- }
-
- /**
- * Returns the current transaction nesting level.
- *
- * @return int The nesting level. A value of 0 means there's no active transaction.
- */
- public function getTransactionNestingLevel()
- {
- return $this->transactionNestingLevel;
- }
-
- /**
- * Fetches the SQLSTATE associated with the last database operation.
- *
- * @return string|null The last error code.
- */
- public function errorCode()
- {
- return $this->getWrappedConnection()->errorCode();
- }
-
- /**
- * {@inheritDoc}
- */
- public function errorInfo()
- {
- return $this->getWrappedConnection()->errorInfo();
- }
-
- /**
- * Returns the ID of the last inserted row, or the last value from a sequence object,
- * depending on the underlying driver.
- *
- * Note: This method may not return a meaningful or consistent result across different drivers,
- * because the underlying database may not even support the notion of AUTO_INCREMENT/IDENTITY
- * columns or sequences.
- *
- * @param string|null $seqName Name of the sequence object from which the ID should be returned.
- *
- * @return string A string representation of the last inserted ID.
- */
- public function lastInsertId($seqName = null)
- {
- return $this->getWrappedConnection()->lastInsertId($seqName);
- }
-
- /**
- * Executes a function in a transaction.
- *
- * The function gets passed this Connection instance as an (optional) parameter.
- *
- * If an exception occurs during execution of the function or transaction commit,
- * the transaction is rolled back and the exception re-thrown.
- *
- * @param Closure $func The function to execute transactionally.
- *
- * @return mixed The value returned by $func
- *
- * @throws Exception
- * @throws Throwable
- */
- public function transactional(Closure $func)
- {
- $this->beginTransaction();
- try {
- $res = $func($this);
- $this->commit();
-
- return $res;
- } catch (Exception $e) {
- $this->rollBack();
- throw $e;
- } catch (Throwable $e) {
- $this->rollBack();
- throw $e;
- }
- }
-
- /**
- * Sets if nested transactions should use savepoints.
- *
- * @param bool $nestTransactionsWithSavepoints
- *
- * @return void
- *
- * @throws ConnectionException
- */
- public function setNestTransactionsWithSavepoints($nestTransactionsWithSavepoints)
- {
- if ($this->transactionNestingLevel > 0) {
- throw ConnectionException::mayNotAlterNestedTransactionWithSavepointsInTransaction();
- }
-
- if (! $this->getDatabasePlatform()->supportsSavepoints()) {
- throw ConnectionException::savepointsNotSupported();
- }
-
- $this->nestTransactionsWithSavepoints = (bool) $nestTransactionsWithSavepoints;
- }
-
- /**
- * Gets if nested transactions should use savepoints.
- *
- * @return bool
- */
- public function getNestTransactionsWithSavepoints()
- {
- return $this->nestTransactionsWithSavepoints;
- }
-
- /**
- * Returns the savepoint name to use for nested transactions are false if they are not supported
- * "savepointFormat" parameter is not set
- *
- * @return mixed A string with the savepoint name or false.
- */
- protected function _getNestedTransactionSavePointName()
- {
- return 'DOCTRINE2_SAVEPOINT_' . $this->transactionNestingLevel;
- }
-
- /**
- * {@inheritDoc}
- */
- public function beginTransaction()
- {
- $connection = $this->getWrappedConnection();
-
- ++$this->transactionNestingLevel;
-
- $logger = $this->_config->getSQLLogger();
-
- if ($this->transactionNestingLevel === 1) {
- if ($logger) {
- $logger->startQuery('"START TRANSACTION"');
- }
-
- $connection->beginTransaction();
-
- if ($logger) {
- $logger->stopQuery();
- }
- } elseif ($this->nestTransactionsWithSavepoints) {
- if ($logger) {
- $logger->startQuery('"SAVEPOINT"');
- }
- $this->createSavepoint($this->_getNestedTransactionSavePointName());
- if ($logger) {
- $logger->stopQuery();
- }
- }
-
- return true;
- }
-
- /**
- * {@inheritDoc}
- *
- * @throws ConnectionException If the commit failed due to no active transaction or
- * because the transaction was marked for rollback only.
- */
- public function commit()
- {
- if ($this->transactionNestingLevel === 0) {
- throw ConnectionException::noActiveTransaction();
- }
- if ($this->isRollbackOnly) {
- throw ConnectionException::commitFailedRollbackOnly();
- }
-
- $result = true;
-
- $connection = $this->getWrappedConnection();
-
- $logger = $this->_config->getSQLLogger();
-
- if ($this->transactionNestingLevel === 1) {
- if ($logger) {
- $logger->startQuery('"COMMIT"');
- }
-
- $result = $connection->commit();
-
- if ($logger) {
- $logger->stopQuery();
- }
- } elseif ($this->nestTransactionsWithSavepoints) {
- if ($logger) {
- $logger->startQuery('"RELEASE SAVEPOINT"');
- }
- $this->releaseSavepoint($this->_getNestedTransactionSavePointName());
- if ($logger) {
- $logger->stopQuery();
- }
- }
-
- --$this->transactionNestingLevel;
-
- if ($this->autoCommit !== false || $this->transactionNestingLevel !== 0) {
- return $result;
- }
-
- $this->beginTransaction();
-
- return $result;
- }
-
- /**
- * Commits all current nesting transactions.
- */
- private function commitAll()
- {
- while ($this->transactionNestingLevel !== 0) {
- if ($this->autoCommit === false && $this->transactionNestingLevel === 1) {
- // When in no auto-commit mode, the last nesting commit immediately starts a new transaction.
- // Therefore we need to do the final commit here and then leave to avoid an infinite loop.
- $this->commit();
-
- return;
- }
-
- $this->commit();
- }
- }
-
- /**
- * Cancels any database changes done during the current transaction.
- *
- * @throws ConnectionException If the rollback operation failed.
- */
- public function rollBack()
- {
- if ($this->transactionNestingLevel === 0) {
- throw ConnectionException::noActiveTransaction();
- }
-
- $connection = $this->getWrappedConnection();
-
- $logger = $this->_config->getSQLLogger();
-
- if ($this->transactionNestingLevel === 1) {
- if ($logger) {
- $logger->startQuery('"ROLLBACK"');
- }
- $this->transactionNestingLevel = 0;
- $connection->rollBack();
- $this->isRollbackOnly = false;
- if ($logger) {
- $logger->stopQuery();
- }
-
- if ($this->autoCommit === false) {
- $this->beginTransaction();
- }
- } elseif ($this->nestTransactionsWithSavepoints) {
- if ($logger) {
- $logger->startQuery('"ROLLBACK TO SAVEPOINT"');
- }
- $this->rollbackSavepoint($this->_getNestedTransactionSavePointName());
- --$this->transactionNestingLevel;
- if ($logger) {
- $logger->stopQuery();
- }
- } else {
- $this->isRollbackOnly = true;
- --$this->transactionNestingLevel;
- }
- }
-
- /**
- * Creates a new savepoint.
- *
- * @param string $savepoint The name of the savepoint to create.
- *
- * @return void
- *
- * @throws ConnectionException
- */
- public function createSavepoint($savepoint)
- {
- if (! $this->getDatabasePlatform()->supportsSavepoints()) {
- throw ConnectionException::savepointsNotSupported();
- }
-
- $this->getWrappedConnection()->exec($this->platform->createSavePoint($savepoint));
- }
-
- /**
- * Releases the given savepoint.
- *
- * @param string $savepoint The name of the savepoint to release.
- *
- * @return void
- *
- * @throws ConnectionException
- */
- public function releaseSavepoint($savepoint)
- {
- if (! $this->getDatabasePlatform()->supportsSavepoints()) {
- throw ConnectionException::savepointsNotSupported();
- }
-
- if (! $this->platform->supportsReleaseSavepoints()) {
- return;
- }
-
- $this->getWrappedConnection()->exec($this->platform->releaseSavePoint($savepoint));
- }
-
- /**
- * Rolls back to the given savepoint.
- *
- * @param string $savepoint The name of the savepoint to rollback to.
- *
- * @return void
- *
- * @throws ConnectionException
- */
- public function rollbackSavepoint($savepoint)
- {
- if (! $this->getDatabasePlatform()->supportsSavepoints()) {
- throw ConnectionException::savepointsNotSupported();
- }
-
- $this->getWrappedConnection()->exec($this->platform->rollbackSavePoint($savepoint));
- }
-
- /**
- * Gets the wrapped driver connection.
- *
- * @return DriverConnection
- */
- public function getWrappedConnection()
- {
- $this->connect();
-
- return $this->_conn;
- }
-
- /**
- * Gets the SchemaManager that can be used to inspect or change the
- * database schema through the connection.
- *
- * @return AbstractSchemaManager
- */
- public function getSchemaManager()
- {
- if ($this->_schemaManager === null) {
- $this->_schemaManager = $this->_driver->getSchemaManager($this);
- }
-
- return $this->_schemaManager;
- }
-
- /**
- * Marks the current transaction so that the only possible
- * outcome for the transaction to be rolled back.
- *
- * @return void
- *
- * @throws ConnectionException If no transaction is active.
- */
- public function setRollbackOnly()
- {
- if ($this->transactionNestingLevel === 0) {
- throw ConnectionException::noActiveTransaction();
- }
- $this->isRollbackOnly = true;
- }
-
- /**
- * Checks whether the current transaction is marked for rollback only.
- *
- * @return bool
- *
- * @throws ConnectionException If no transaction is active.
- */
- public function isRollbackOnly()
- {
- if ($this->transactionNestingLevel === 0) {
- throw ConnectionException::noActiveTransaction();
- }
-
- return $this->isRollbackOnly;
- }
-
- /**
- * Converts a given value to its database representation according to the conversion
- * rules of a specific DBAL mapping type.
- *
- * @param mixed $value The value to convert.
- * @param string $type The name of the DBAL mapping type.
- *
- * @return mixed The converted value.
- */
- public function convertToDatabaseValue($value, $type)
- {
- return Type::getType($type)->convertToDatabaseValue($value, $this->getDatabasePlatform());
- }
-
- /**
- * Converts a given value to its PHP representation according to the conversion
- * rules of a specific DBAL mapping type.
- *
- * @param mixed $value The value to convert.
- * @param string $type The name of the DBAL mapping type.
- *
- * @return mixed The converted type.
- */
- public function convertToPHPValue($value, $type)
- {
- return Type::getType($type)->convertToPHPValue($value, $this->getDatabasePlatform());
- }
-
- /**
- * Binds a set of parameters, some or all of which are typed with a PDO binding type
- * or DBAL mapping type, to a given statement.
- *
- * @internal Duck-typing used on the $stmt parameter to support driver statements as well as
- * raw PDOStatement instances.
- *
- * @param \Doctrine\DBAL\Driver\Statement $stmt The statement to bind the values to.
- * @param mixed[] $params The map/list of named/positional parameters.
- * @param int[]|string[] $types The parameter types (PDO binding types or DBAL mapping types).
- *
- * @return void
- */
- private function _bindTypedValues($stmt, array $params, array $types)
- {
- // Check whether parameters are positional or named. Mixing is not allowed, just like in PDO.
- if (is_int(key($params))) {
- // Positional parameters
- $typeOffset = array_key_exists(0, $types) ? -1 : 0;
- $bindIndex = 1;
- foreach ($params as $value) {
- $typeIndex = $bindIndex + $typeOffset;
- if (isset($types[$typeIndex])) {
- $type = $types[$typeIndex];
- [$value, $bindingType] = $this->getBindingInfo($value, $type);
- $stmt->bindValue($bindIndex, $value, $bindingType);
- } else {
- $stmt->bindValue($bindIndex, $value);
- }
- ++$bindIndex;
- }
- } else {
- // Named parameters
- foreach ($params as $name => $value) {
- if (isset($types[$name])) {
- $type = $types[$name];
- [$value, $bindingType] = $this->getBindingInfo($value, $type);
- $stmt->bindValue($name, $value, $bindingType);
- } else {
- $stmt->bindValue($name, $value);
- }
- }
- }
- }
-
- /**
- * Gets the binding type of a given type. The given type can be a PDO or DBAL mapping type.
- *
- * @param mixed $value The value to bind.
- * @param int|string|null $type The type to bind (PDO or DBAL).
- *
- * @return mixed[] [0] => the (escaped) value, [1] => the binding type.
- */
- private function getBindingInfo($value, $type)
- {
- if (is_string($type)) {
- $type = Type::getType($type);
- }
- if ($type instanceof Type) {
- $value = $type->convertToDatabaseValue($value, $this->getDatabasePlatform());
- $bindingType = $type->getBindingType();
- } else {
- $bindingType = $type;
- }
-
- return [$value, $bindingType];
- }
-
- /**
- * Resolves the parameters to a format which can be displayed.
- *
- * @internal This is a purely internal method. If you rely on this method, you are advised to
- * copy/paste the code as this method may change, or be removed without prior notice.
- *
- * @param mixed[] $params
- * @param int[]|string[] $types
- *
- * @return mixed[]
- */
- public function resolveParams(array $params, array $types)
- {
- $resolvedParams = [];
-
- // Check whether parameters are positional or named. Mixing is not allowed, just like in PDO.
- if (is_int(key($params))) {
- // Positional parameters
- $typeOffset = array_key_exists(0, $types) ? -1 : 0;
- $bindIndex = 1;
- foreach ($params as $value) {
- $typeIndex = $bindIndex + $typeOffset;
- if (isset($types[$typeIndex])) {
- $type = $types[$typeIndex];
- [$value] = $this->getBindingInfo($value, $type);
- $resolvedParams[$bindIndex] = $value;
- } else {
- $resolvedParams[$bindIndex] = $value;
- }
- ++$bindIndex;
- }
- } else {
- // Named parameters
- foreach ($params as $name => $value) {
- if (isset($types[$name])) {
- $type = $types[$name];
- [$value] = $this->getBindingInfo($value, $type);
- $resolvedParams[$name] = $value;
- } else {
- $resolvedParams[$name] = $value;
- }
- }
- }
-
- return $resolvedParams;
- }
-
- /**
- * Creates a new instance of a SQL query builder.
- *
- * @return QueryBuilder
- */
- public function createQueryBuilder()
- {
- return new Query\QueryBuilder($this);
- }
-
- /**
- * Ping the server
- *
- * When the server is not available the method returns FALSE.
- * It is responsibility of the developer to handle this case
- * and abort the request or reconnect manually:
- *
- * @return bool
- *
- * @example
- *
- * if ($conn->ping() === false) {
- * $conn->close();
- * $conn->connect();
- * }
- *
- * It is undefined if the underlying driver attempts to reconnect
- * or disconnect when the connection is not available anymore
- * as long it returns TRUE when a reconnect succeeded and
- * FALSE when the connection was dropped.
- */
- public function ping()
- {
- $connection = $this->getWrappedConnection();
-
- if ($connection instanceof PingableConnection) {
- return $connection->ping();
- }
-
- try {
- $this->query($this->getDatabasePlatform()->getDummySelectSQL());
-
- return true;
- } catch (DBALException $e) {
- return false;
- }
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/ConnectionException.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/ConnectionException.php
deleted file mode 100644
index d3d11bc67..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/ConnectionException.php
+++ /dev/null
@@ -1,38 +0,0 @@
-executeQuery("DELETE FROM table");
- *
- * Be aware that Connection#executeQuery is a method specifically for READ
- * operations only.
- *
- * This connection is limited to slave operations using the
- * Connection#executeQuery operation only, because it wouldn't be compatible
- * with the ORM or SchemaManager code otherwise. Both use all the other
- * operations in a context where writes could happen to a slave, which makes
- * this restricted approach necessary.
- *
- * You can manually connect to the master at any time by calling:
- *
- * $conn->connect('master');
- *
- * Instantiation through the DriverManager looks like:
- *
- * @example
- *
- * $conn = DriverManager::getConnection(array(
- * 'wrapperClass' => 'Doctrine\DBAL\Connections\MasterSlaveConnection',
- * 'driver' => 'pdo_mysql',
- * 'master' => array('user' => '', 'password' => '', 'host' => '', 'dbname' => ''),
- * 'slaves' => array(
- * array('user' => 'slave1', 'password', 'host' => '', 'dbname' => ''),
- * array('user' => 'slave2', 'password', 'host' => '', 'dbname' => ''),
- * )
- * ));
- *
- * You can also pass 'driverOptions' and any other documented option to each of this drivers to pass additional information.
- */
-class MasterSlaveConnection extends Connection
-{
- /**
- * Master and slave connection (one of the randomly picked slaves).
- *
- * @var DriverConnection[]|null[]
- */
- protected $connections = ['master' => null, 'slave' => null];
-
- /**
- * You can keep the slave connection and then switch back to it
- * during the request if you know what you are doing.
- *
- * @var bool
- */
- protected $keepSlave = false;
-
- /**
- * Creates Master Slave Connection.
- *
- * @param mixed[] $params
- *
- * @throws InvalidArgumentException
- */
- public function __construct(array $params, Driver $driver, ?Configuration $config = null, ?EventManager $eventManager = null)
- {
- if (! isset($params['slaves'], $params['master'])) {
- throw new InvalidArgumentException('master or slaves configuration missing');
- }
- if (count($params['slaves']) === 0) {
- throw new InvalidArgumentException('You have to configure at least one slaves.');
- }
-
- $params['master']['driver'] = $params['driver'];
- foreach ($params['slaves'] as $slaveKey => $slave) {
- $params['slaves'][$slaveKey]['driver'] = $params['driver'];
- }
-
- $this->keepSlave = (bool) ($params['keepSlave'] ?? false);
-
- parent::__construct($params, $driver, $config, $eventManager);
- }
-
- /**
- * Checks if the connection is currently towards the master or not.
- *
- * @return bool
- */
- public function isConnectedToMaster()
- {
- return $this->_conn !== null && $this->_conn === $this->connections['master'];
- }
-
- /**
- * {@inheritDoc}
- */
- public function connect($connectionName = null)
- {
- $requestedConnectionChange = ($connectionName !== null);
- $connectionName = $connectionName ?: 'slave';
-
- if ($connectionName !== 'slave' && $connectionName !== 'master') {
- throw new InvalidArgumentException('Invalid option to connect(), only master or slave allowed.');
- }
-
- // If we have a connection open, and this is not an explicit connection
- // change request, then abort right here, because we are already done.
- // This prevents writes to the slave in case of "keepSlave" option enabled.
- if ($this->_conn !== null && ! $requestedConnectionChange) {
- return false;
- }
-
- $forceMasterAsSlave = false;
-
- if ($this->getTransactionNestingLevel() > 0) {
- $connectionName = 'master';
- $forceMasterAsSlave = true;
- }
-
- if (isset($this->connections[$connectionName])) {
- $this->_conn = $this->connections[$connectionName];
-
- if ($forceMasterAsSlave && ! $this->keepSlave) {
- $this->connections['slave'] = $this->_conn;
- }
-
- return false;
- }
-
- if ($connectionName === 'master') {
- $this->connections['master'] = $this->_conn = $this->connectTo($connectionName);
-
- // Set slave connection to master to avoid invalid reads
- if (! $this->keepSlave) {
- $this->connections['slave'] = $this->connections['master'];
- }
- } else {
- $this->connections['slave'] = $this->_conn = $this->connectTo($connectionName);
- }
-
- if ($this->_eventManager->hasListeners(Events::postConnect)) {
- $eventArgs = new ConnectionEventArgs($this);
- $this->_eventManager->dispatchEvent(Events::postConnect, $eventArgs);
- }
-
- return true;
- }
-
- /**
- * Connects to a specific connection.
- *
- * @param string $connectionName
- *
- * @return DriverConnection
- */
- protected function connectTo($connectionName)
- {
- $params = $this->getParams();
-
- $driverOptions = $params['driverOptions'] ?? [];
-
- $connectionParams = $this->chooseConnectionConfiguration($connectionName, $params);
-
- $user = $connectionParams['user'] ?? null;
- $password = $connectionParams['password'] ?? null;
-
- return $this->_driver->connect($connectionParams, $user, $password, $driverOptions);
- }
-
- /**
- * @param string $connectionName
- * @param mixed[] $params
- *
- * @return mixed
- */
- protected function chooseConnectionConfiguration($connectionName, $params)
- {
- if ($connectionName === 'master') {
- return $params['master'];
- }
-
- $config = $params['slaves'][array_rand($params['slaves'])];
-
- if (! isset($config['charset']) && isset($params['master']['charset'])) {
- $config['charset'] = $params['master']['charset'];
- }
-
- return $config;
- }
-
- /**
- * {@inheritDoc}
- */
- public function executeUpdate($query, array $params = [], array $types = [])
- {
- $this->connect('master');
-
- return parent::executeUpdate($query, $params, $types);
- }
-
- /**
- * {@inheritDoc}
- */
- public function beginTransaction()
- {
- $this->connect('master');
-
- return parent::beginTransaction();
- }
-
- /**
- * {@inheritDoc}
- */
- public function commit()
- {
- $this->connect('master');
-
- return parent::commit();
- }
-
- /**
- * {@inheritDoc}
- */
- public function rollBack()
- {
- $this->connect('master');
-
- return parent::rollBack();
- }
-
- /**
- * {@inheritDoc}
- */
- public function delete($tableName, array $identifier, array $types = [])
- {
- $this->connect('master');
-
- return parent::delete($tableName, $identifier, $types);
- }
-
- /**
- * {@inheritDoc}
- */
- public function close()
- {
- unset($this->connections['master'], $this->connections['slave']);
-
- parent::close();
-
- $this->_conn = null;
- $this->connections = ['master' => null, 'slave' => null];
- }
-
- /**
- * {@inheritDoc}
- */
- public function update($tableName, array $data, array $identifier, array $types = [])
- {
- $this->connect('master');
-
- return parent::update($tableName, $data, $identifier, $types);
- }
-
- /**
- * {@inheritDoc}
- */
- public function insert($tableName, array $data, array $types = [])
- {
- $this->connect('master');
-
- return parent::insert($tableName, $data, $types);
- }
-
- /**
- * {@inheritDoc}
- */
- public function exec($statement)
- {
- $this->connect('master');
-
- return parent::exec($statement);
- }
-
- /**
- * {@inheritDoc}
- */
- public function createSavepoint($savepoint)
- {
- $this->connect('master');
-
- parent::createSavepoint($savepoint);
- }
-
- /**
- * {@inheritDoc}
- */
- public function releaseSavepoint($savepoint)
- {
- $this->connect('master');
-
- parent::releaseSavepoint($savepoint);
- }
-
- /**
- * {@inheritDoc}
- */
- public function rollbackSavepoint($savepoint)
- {
- $this->connect('master');
-
- parent::rollbackSavepoint($savepoint);
- }
-
- /**
- * {@inheritDoc}
- */
- public function query()
- {
- $this->connect('master');
- assert($this->_conn instanceof DriverConnection);
-
- $args = func_get_args();
-
- $logger = $this->getConfiguration()->getSQLLogger();
- if ($logger) {
- $logger->startQuery($args[0]);
- }
-
- $statement = $this->_conn->query(...$args);
-
- $statement->setFetchMode($this->defaultFetchMode);
-
- if ($logger) {
- $logger->stopQuery();
- }
-
- return $statement;
- }
-
- /**
- * {@inheritDoc}
- */
- public function prepare($statement)
- {
- $this->connect('master');
-
- return parent::prepare($statement);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php
deleted file mode 100644
index 4961af2f3..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php
+++ /dev/null
@@ -1,294 +0,0 @@
-getMessage();
-
- return static::wrapException($driver, $driverEx, $msg);
- }
-
- /**
- * @return self
- */
- public static function driverException(Driver $driver, Throwable $driverEx)
- {
- return static::wrapException($driver, $driverEx, 'An exception occurred in driver: ' . $driverEx->getMessage());
- }
-
- /**
- * @return self
- */
- private static function wrapException(Driver $driver, Throwable $driverEx, $msg)
- {
- if ($driverEx instanceof DriverException) {
- return $driverEx;
- }
- if ($driver instanceof ExceptionConverterDriver && $driverEx instanceof DriverExceptionInterface) {
- return $driver->convertException($msg, $driverEx);
- }
-
- return new self($msg, 0, $driverEx);
- }
-
- /**
- * Returns a human-readable representation of an array of parameters.
- * This properly handles binary data by returning a hex representation.
- *
- * @param mixed[] $params
- *
- * @return string
- */
- private static function formatParameters(array $params)
- {
- return '[' . implode(', ', array_map(static function ($param) {
- if (is_resource($param)) {
- return (string) $param;
- }
-
- $json = @json_encode($param);
-
- if (! is_string($json) || $json === 'null' && is_string($param)) {
- // JSON encoding failed, this is not a UTF-8 string.
- return sprintf('"%s"', preg_replace('/.{2}/', '\\x$0', bin2hex($param)));
- }
-
- return $json;
- }, $params)) . ']';
- }
-
- /**
- * @param string $wrapperClass
- *
- * @return \Doctrine\DBAL\DBALException
- */
- public static function invalidWrapperClass($wrapperClass)
- {
- return new self("The given 'wrapperClass' " . $wrapperClass . ' has to be a ' .
- 'subtype of \Doctrine\DBAL\Connection.');
- }
-
- /**
- * @param string $driverClass
- *
- * @return \Doctrine\DBAL\DBALException
- */
- public static function invalidDriverClass($driverClass)
- {
- return new self("The given 'driverClass' " . $driverClass . ' has to implement the ' . Driver::class . ' interface.');
- }
-
- /**
- * @param string $tableName
- *
- * @return \Doctrine\DBAL\DBALException
- */
- public static function invalidTableName($tableName)
- {
- return new self('Invalid table name specified: ' . $tableName);
- }
-
- /**
- * @param string $tableName
- *
- * @return \Doctrine\DBAL\DBALException
- */
- public static function noColumnsSpecifiedForTable($tableName)
- {
- return new self('No columns specified for table ' . $tableName);
- }
-
- /**
- * @return \Doctrine\DBAL\DBALException
- */
- public static function limitOffsetInvalid()
- {
- return new self('Invalid Offset in Limit Query, it has to be larger than or equal to 0.');
- }
-
- /**
- * @param string $name
- *
- * @return \Doctrine\DBAL\DBALException
- */
- public static function typeExists($name)
- {
- return new self('Type ' . $name . ' already exists.');
- }
-
- /**
- * @param string $name
- *
- * @return \Doctrine\DBAL\DBALException
- */
- public static function unknownColumnType($name)
- {
- return new self('Unknown column type "' . $name . '" requested. Any Doctrine type that you use has ' .
- 'to be registered with \Doctrine\DBAL\Types\Type::addType(). You can get a list of all the ' .
- 'known types with \Doctrine\DBAL\Types\Type::getTypesMap(). If this error occurs during database ' .
- 'introspection then you might have forgotten to register all database types for a Doctrine Type. Use ' .
- 'AbstractPlatform#registerDoctrineTypeMapping() or have your custom types implement ' .
- 'Type#getMappedDatabaseTypes(). If the type name is empty you might ' .
- 'have a problem with the cache or forgot some mapping information.');
- }
-
- /**
- * @param string $name
- *
- * @return \Doctrine\DBAL\DBALException
- */
- public static function typeNotFound($name)
- {
- return new self('Type to be overwritten ' . $name . ' does not exist.');
- }
-
- public static function typeNotRegistered(Type $type) : self
- {
- return new self(sprintf('Type of the class %s@%s is not registered.', get_class($type), spl_object_hash($type)));
- }
-
- public static function typeAlreadyRegistered(Type $type) : self
- {
- return new self(
- sprintf('Type of the class %s@%s is already registered.', get_class($type), spl_object_hash($type))
- );
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver.php
deleted file mode 100644
index 57493e633..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver.php
+++ /dev/null
@@ -1,59 +0,0 @@
-getParams();
-
- return $params['dbname'];
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDatabasePlatform()
- {
- return new DB2Platform();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getSchemaManager(Connection $conn)
- {
- return new DB2SchemaManager($conn);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractDriverException.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractDriverException.php
deleted file mode 100644
index d9af92d17..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractDriverException.php
+++ /dev/null
@@ -1,54 +0,0 @@
-errorCode = $errorCode;
- $this->sqlState = $sqlState;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getErrorCode()
- {
- return $this->errorCode;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getSQLState()
- {
- return $this->sqlState;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php
deleted file mode 100644
index c46ddc63d..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php
+++ /dev/null
@@ -1,218 +0,0 @@
-getErrorCode()) {
- case '1213':
- return new Exception\DeadlockException($message, $exception);
- case '1205':
- return new Exception\LockWaitTimeoutException($message, $exception);
- case '1050':
- return new Exception\TableExistsException($message, $exception);
-
- case '1051':
- case '1146':
- return new Exception\TableNotFoundException($message, $exception);
-
- case '1216':
- case '1217':
- case '1451':
- case '1452':
- case '1701':
- return new Exception\ForeignKeyConstraintViolationException($message, $exception);
-
- case '1062':
- case '1557':
- case '1569':
- case '1586':
- return new Exception\UniqueConstraintViolationException($message, $exception);
-
- case '1054':
- case '1166':
- case '1611':
- return new Exception\InvalidFieldNameException($message, $exception);
-
- case '1052':
- case '1060':
- case '1110':
- return new Exception\NonUniqueFieldNameException($message, $exception);
-
- case '1064':
- case '1149':
- case '1287':
- case '1341':
- case '1342':
- case '1343':
- case '1344':
- case '1382':
- case '1479':
- case '1541':
- case '1554':
- case '1626':
- return new Exception\SyntaxErrorException($message, $exception);
-
- case '1044':
- case '1045':
- case '1046':
- case '1049':
- case '1095':
- case '1142':
- case '1143':
- case '1227':
- case '1370':
- case '1429':
- case '2002':
- case '2005':
- return new Exception\ConnectionException($message, $exception);
-
- case '1048':
- case '1121':
- case '1138':
- case '1171':
- case '1252':
- case '1263':
- case '1364':
- case '1566':
- return new Exception\NotNullConstraintViolationException($message, $exception);
- }
-
- return new Exception\DriverException($message, $exception);
- }
-
- /**
- * {@inheritdoc}
- *
- * @throws DBALException
- */
- public function createDatabasePlatformForVersion($version)
- {
- $mariadb = stripos($version, 'mariadb') !== false;
- if ($mariadb && version_compare($this->getMariaDbMysqlVersionNumber($version), '10.2.7', '>=')) {
- return new MariaDb1027Platform();
- }
-
- if (! $mariadb) {
- $oracleMysqlVersion = $this->getOracleMysqlVersionNumber($version);
- if (version_compare($oracleMysqlVersion, '8', '>=')) {
- return new MySQL80Platform();
- }
- if (version_compare($oracleMysqlVersion, '5.7.9', '>=')) {
- return new MySQL57Platform();
- }
- }
-
- return $this->getDatabasePlatform();
- }
-
- /**
- * Get a normalized 'version number' from the server string
- * returned by Oracle MySQL servers.
- *
- * @param string $versionString Version string returned by the driver, i.e. '5.7.10'
- *
- * @throws DBALException
- */
- private function getOracleMysqlVersionNumber(string $versionString) : string
- {
- if (! preg_match(
- '/^(?P\d+)(?:\.(?P\d+)(?:\.(?P\d+))?)?/',
- $versionString,
- $versionParts
- )) {
- throw DBALException::invalidPlatformVersionSpecified(
- $versionString,
- '..'
- );
- }
- $majorVersion = $versionParts['major'];
- $minorVersion = $versionParts['minor'] ?? 0;
- $patchVersion = $versionParts['patch'] ?? null;
-
- if ($majorVersion === '5' && $minorVersion === '7' && $patchVersion === null) {
- $patchVersion = '9';
- }
-
- return $majorVersion . '.' . $minorVersion . '.' . $patchVersion;
- }
-
- /**
- * Detect MariaDB server version, including hack for some mariadb distributions
- * that starts with the prefix '5.5.5-'
- *
- * @param string $versionString Version string as returned by mariadb server, i.e. '5.5.5-Mariadb-10.0.8-xenial'
- *
- * @throws DBALException
- */
- private function getMariaDbMysqlVersionNumber(string $versionString) : string
- {
- if (! preg_match(
- '/^(?:5\.5\.5-)?(mariadb-)?(?P\d+)\.(?P\d+)\.(?P\d+)/i',
- $versionString,
- $versionParts
- )) {
- throw DBALException::invalidPlatformVersionSpecified(
- $versionString,
- '^(?:5\.5\.5-)?(mariadb-)?..'
- );
- }
-
- return $versionParts['major'] . '.' . $versionParts['minor'] . '.' . $versionParts['patch'];
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDatabase(Connection $conn)
- {
- $params = $conn->getParams();
-
- return $params['dbname'] ?? $conn->query('SELECT DATABASE()')->fetchColumn();
- }
-
- /**
- * {@inheritdoc}
- *
- * @return MySqlPlatform
- */
- public function getDatabasePlatform()
- {
- return new MySqlPlatform();
- }
-
- /**
- * {@inheritdoc}
- *
- * @return MySqlSchemaManager
- */
- public function getSchemaManager(Connection $conn)
- {
- return new MySqlSchemaManager($conn);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractOracleDriver.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractOracleDriver.php
deleted file mode 100644
index dcbaaf097..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractOracleDriver.php
+++ /dev/null
@@ -1,97 +0,0 @@
-getErrorCode()) {
- case '1':
- case '2299':
- case '38911':
- return new Exception\UniqueConstraintViolationException($message, $exception);
-
- case '904':
- return new Exception\InvalidFieldNameException($message, $exception);
-
- case '918':
- case '960':
- return new Exception\NonUniqueFieldNameException($message, $exception);
-
- case '923':
- return new Exception\SyntaxErrorException($message, $exception);
-
- case '942':
- return new Exception\TableNotFoundException($message, $exception);
-
- case '955':
- return new Exception\TableExistsException($message, $exception);
-
- case '1017':
- case '12545':
- return new Exception\ConnectionException($message, $exception);
-
- case '1400':
- return new Exception\NotNullConstraintViolationException($message, $exception);
-
- case '2266':
- case '2291':
- case '2292':
- return new Exception\ForeignKeyConstraintViolationException($message, $exception);
- }
-
- return new Exception\DriverException($message, $exception);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDatabase(Connection $conn)
- {
- $params = $conn->getParams();
-
- return $params['user'];
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDatabasePlatform()
- {
- return new OraclePlatform();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getSchemaManager(Connection $conn)
- {
- return new OracleSchemaManager($conn);
- }
-
- /**
- * Returns an appropriate Easy Connect String for the given parameters.
- *
- * @param mixed[] $params The connection parameters to return the Easy Connect String for.
- *
- * @return string
- */
- protected function getEasyConnectString(array $params)
- {
- return (string) EasyConnectString::fromConnectionParameters($params);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractOracleDriver/EasyConnectString.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractOracleDriver/EasyConnectString.php
deleted file mode 100644
index 01f648b3b..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractOracleDriver/EasyConnectString.php
+++ /dev/null
@@ -1,121 +0,0 @@
-string = $string;
- }
-
- public function __toString() : string
- {
- return $this->string;
- }
-
- /**
- * Creates the object from an array representation
- *
- * @param mixed[] $params
- */
- public static function fromArray(array $params) : self
- {
- return new self(self::renderParams($params));
- }
-
- /**
- * Creates the object from the given DBAL connection parameters.
- *
- * @param mixed[] $params
- */
- public static function fromConnectionParameters(array $params) : self
- {
- if (! empty($params['connectstring'])) {
- return new self($params['connectstring']);
- }
-
- if (empty($params['host'])) {
- return new self($params['dbname'] ?? '');
- }
-
- $connectData = [];
-
- if (isset($params['servicename']) || isset($params['dbname'])) {
- $serviceKey = 'SID';
-
- if (! empty($params['service'])) {
- $serviceKey = 'SERVICE_NAME';
- }
-
- $serviceName = $params['servicename'] ?? $params['dbname'];
-
- $connectData[$serviceKey] = $serviceName;
- }
-
- if (! empty($params['instancename'])) {
- $connectData['INSTANCE_NAME'] = $params['instancename'];
- }
-
- if (! empty($params['pooled'])) {
- $connectData['SERVER'] = 'POOLED';
- }
-
- return self::fromArray([
- 'DESCRIPTION' => [
- 'ADDRESS' => [
- 'PROTOCOL' => 'TCP',
- 'HOST' => $params['host'],
- 'PORT' => $params['port'] ?? 1521,
- ],
- 'CONNECT_DATA' => $connectData,
- ],
- ]);
- }
-
- /**
- * @param mixed[] $params
- */
- private static function renderParams(array $params) : string
- {
- $chunks = [];
-
- foreach ($params as $key => $value) {
- $string = self::renderValue($value);
-
- if ($string === '') {
- continue;
- }
-
- $chunks[] = sprintf('(%s=%s)', $key, $string);
- }
-
- return implode('', $chunks);
- }
-
- /**
- * @param mixed $value
- */
- private static function renderValue($value) : string
- {
- if (is_array($value)) {
- return self::renderParams($value);
- }
-
- return (string) $value;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractPostgreSQLDriver.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractPostgreSQLDriver.php
deleted file mode 100644
index 916d92498..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractPostgreSQLDriver.php
+++ /dev/null
@@ -1,138 +0,0 @@
-getSQLState()) {
- case '40001':
- case '40P01':
- return new Exception\DeadlockException($message, $exception);
- case '0A000':
- // Foreign key constraint violations during a TRUNCATE operation
- // are considered "feature not supported" in PostgreSQL.
- if (strpos($exception->getMessage(), 'truncate') !== false) {
- return new Exception\ForeignKeyConstraintViolationException($message, $exception);
- }
-
- break;
- case '23502':
- return new Exception\NotNullConstraintViolationException($message, $exception);
-
- case '23503':
- return new Exception\ForeignKeyConstraintViolationException($message, $exception);
-
- case '23505':
- return new Exception\UniqueConstraintViolationException($message, $exception);
-
- case '42601':
- return new Exception\SyntaxErrorException($message, $exception);
-
- case '42702':
- return new Exception\NonUniqueFieldNameException($message, $exception);
-
- case '42703':
- return new Exception\InvalidFieldNameException($message, $exception);
-
- case '42P01':
- return new Exception\TableNotFoundException($message, $exception);
-
- case '42P07':
- return new Exception\TableExistsException($message, $exception);
-
- case '7':
- // In some case (mainly connection errors) the PDO exception does not provide a SQLSTATE via its code.
- // The exception code is always set to 7 here.
- // We have to match against the SQLSTATE in the error message in these cases.
- if (strpos($exception->getMessage(), 'SQLSTATE[08006]') !== false) {
- return new Exception\ConnectionException($message, $exception);
- }
-
- break;
- }
-
- return new Exception\DriverException($message, $exception);
- }
-
- /**
- * {@inheritdoc}
- */
- public function createDatabasePlatformForVersion($version)
- {
- if (! preg_match('/^(?P\d+)(?:\.(?P\d+)(?:\.(?P\d+))?)?/', $version, $versionParts)) {
- throw DBALException::invalidPlatformVersionSpecified(
- $version,
- '..'
- );
- }
-
- $majorVersion = $versionParts['major'];
- $minorVersion = $versionParts['minor'] ?? 0;
- $patchVersion = $versionParts['patch'] ?? 0;
- $version = $majorVersion . '.' . $minorVersion . '.' . $patchVersion;
-
- switch (true) {
- case version_compare($version, '10.0', '>='):
- return new PostgreSQL100Platform();
- case version_compare($version, '9.4', '>='):
- return new PostgreSQL94Platform();
- case version_compare($version, '9.2', '>='):
- return new PostgreSQL92Platform();
- case version_compare($version, '9.1', '>='):
- return new PostgreSQL91Platform();
- default:
- return new PostgreSqlPlatform();
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDatabase(Connection $conn)
- {
- $params = $conn->getParams();
-
- return $params['dbname'] ?? $conn->query('SELECT CURRENT_DATABASE()')->fetchColumn();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDatabasePlatform()
- {
- return new PostgreSqlPlatform();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getSchemaManager(Connection $conn)
- {
- return new PostgreSqlSchemaManager($conn);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractSQLAnywhereDriver.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractSQLAnywhereDriver.php
deleted file mode 100644
index 88f26ce7d..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractSQLAnywhereDriver.php
+++ /dev/null
@@ -1,127 +0,0 @@
-getErrorCode()) {
- case '-306':
- case '-307':
- case '-684':
- return new Exception\DeadlockException($message, $exception);
- case '-210':
- case '-1175':
- case '-1281':
- return new Exception\LockWaitTimeoutException($message, $exception);
- case '-100':
- case '-103':
- case '-832':
- return new Exception\ConnectionException($message, $exception);
- case '-143':
- return new Exception\InvalidFieldNameException($message, $exception);
- case '-193':
- case '-196':
- return new Exception\UniqueConstraintViolationException($message, $exception);
- case '-194':
- case '-198':
- return new Exception\ForeignKeyConstraintViolationException($message, $exception);
- case '-144':
- return new Exception\NonUniqueFieldNameException($message, $exception);
- case '-184':
- case '-195':
- return new Exception\NotNullConstraintViolationException($message, $exception);
- case '-131':
- return new Exception\SyntaxErrorException($message, $exception);
- case '-110':
- return new Exception\TableExistsException($message, $exception);
- case '-141':
- case '-1041':
- return new Exception\TableNotFoundException($message, $exception);
- }
-
- return new Exception\DriverException($message, $exception);
- }
-
- /**
- * {@inheritdoc}
- */
- public function createDatabasePlatformForVersion($version)
- {
- if (! preg_match(
- '/^(?P\d+)(?:\.(?P\d+)(?:\.(?P\d+)(?:\.(?P\d+))?)?)?/',
- $version,
- $versionParts
- )) {
- throw DBALException::invalidPlatformVersionSpecified(
- $version,
- '...'
- );
- }
-
- $majorVersion = $versionParts['major'];
- $minorVersion = $versionParts['minor'] ?? 0;
- $patchVersion = $versionParts['patch'] ?? 0;
- $buildVersion = $versionParts['build'] ?? 0;
- $version = $majorVersion . '.' . $minorVersion . '.' . $patchVersion . '.' . $buildVersion;
-
- switch (true) {
- case version_compare($version, '16', '>='):
- return new SQLAnywhere16Platform();
- case version_compare($version, '12', '>='):
- return new SQLAnywhere12Platform();
- case version_compare($version, '11', '>='):
- return new SQLAnywhere11Platform();
- default:
- return new SQLAnywherePlatform();
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDatabase(Connection $conn)
- {
- $params = $conn->getParams();
-
- return $params['dbname'] ?? $conn->query('SELECT DB_NAME()')->fetchColumn();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDatabasePlatform()
- {
- return new SQLAnywhere12Platform();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getSchemaManager(Connection $conn)
- {
- return new SQLAnywhereSchemaManager($conn);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractSQLServerDriver.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractSQLServerDriver.php
deleted file mode 100644
index 421d82b39..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractSQLServerDriver.php
+++ /dev/null
@@ -1,81 +0,0 @@
-\d+)(?:\.(?P\d+)(?:\.(?P\d+)(?:\.(?P\d+))?)?)?/',
- $version,
- $versionParts
- )) {
- throw DBALException::invalidPlatformVersionSpecified(
- $version,
- '...'
- );
- }
-
- $majorVersion = $versionParts['major'];
- $minorVersion = $versionParts['minor'] ?? 0;
- $patchVersion = $versionParts['patch'] ?? 0;
- $buildVersion = $versionParts['build'] ?? 0;
- $version = $majorVersion . '.' . $minorVersion . '.' . $patchVersion . '.' . $buildVersion;
-
- switch (true) {
- case version_compare($version, '11.00.2100', '>='):
- return new SQLServer2012Platform();
- case version_compare($version, '10.00.1600', '>='):
- return new SQLServer2008Platform();
- case version_compare($version, '9.00.1399', '>='):
- return new SQLServer2005Platform();
- default:
- return new SQLServerPlatform();
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDatabase(Connection $conn)
- {
- $params = $conn->getParams();
-
- return $params['dbname'] ?? $conn->query('SELECT DB_NAME()')->fetchColumn();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDatabasePlatform()
- {
- return new SQLServer2008Platform();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getSchemaManager(Connection $conn)
- {
- return new SQLServerSchemaManager($conn);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractSQLiteDriver.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractSQLiteDriver.php
deleted file mode 100644
index 582f7cae2..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractSQLiteDriver.php
+++ /dev/null
@@ -1,98 +0,0 @@
-getMessage(), 'database is locked') !== false) {
- return new Exception\LockWaitTimeoutException($message, $exception);
- }
-
- if (strpos($exception->getMessage(), 'must be unique') !== false ||
- strpos($exception->getMessage(), 'is not unique') !== false ||
- strpos($exception->getMessage(), 'are not unique') !== false ||
- strpos($exception->getMessage(), 'UNIQUE constraint failed') !== false
- ) {
- return new Exception\UniqueConstraintViolationException($message, $exception);
- }
-
- if (strpos($exception->getMessage(), 'may not be NULL') !== false ||
- strpos($exception->getMessage(), 'NOT NULL constraint failed') !== false
- ) {
- return new Exception\NotNullConstraintViolationException($message, $exception);
- }
-
- if (strpos($exception->getMessage(), 'no such table:') !== false) {
- return new Exception\TableNotFoundException($message, $exception);
- }
-
- if (strpos($exception->getMessage(), 'already exists') !== false) {
- return new Exception\TableExistsException($message, $exception);
- }
-
- if (strpos($exception->getMessage(), 'has no column named') !== false) {
- return new Exception\InvalidFieldNameException($message, $exception);
- }
-
- if (strpos($exception->getMessage(), 'ambiguous column name') !== false) {
- return new Exception\NonUniqueFieldNameException($message, $exception);
- }
-
- if (strpos($exception->getMessage(), 'syntax error') !== false) {
- return new Exception\SyntaxErrorException($message, $exception);
- }
-
- if (strpos($exception->getMessage(), 'attempt to write a readonly database') !== false) {
- return new Exception\ReadOnlyException($message, $exception);
- }
-
- if (strpos($exception->getMessage(), 'unable to open database file') !== false) {
- return new Exception\ConnectionException($message, $exception);
- }
-
- return new Exception\DriverException($message, $exception);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDatabase(Connection $conn)
- {
- $params = $conn->getParams();
-
- return $params['path'] ?? null;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDatabasePlatform()
- {
- return new SqlitePlatform();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getSchemaManager(Connection $conn)
- {
- return new SqliteSchemaManager($conn);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/Connection.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/Connection.php
deleted file mode 100644
index 1574581c2..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/Connection.php
+++ /dev/null
@@ -1,93 +0,0 @@
-constructPdoDsn($params),
- $username,
- $password,
- $driverOptions
- );
- }
-
- /**
- * {@inheritdoc}
- */
- public function createDatabasePlatformForVersion($version)
- {
- return $this->getDatabasePlatform();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDatabasePlatform()
- {
- return new DrizzlePlatform();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getSchemaManager(\Doctrine\DBAL\Connection $conn)
- {
- return new DrizzleSchemaManager($conn);
- }
-
- /**
- * {@inheritdoc}
- *
- * @deprecated
- */
- public function getName()
- {
- return 'drizzle_pdo_mysql';
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/ExceptionConverterDriver.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/ExceptionConverterDriver.php
deleted file mode 100644
index 9b79e240c..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/ExceptionConverterDriver.php
+++ /dev/null
@@ -1,22 +0,0 @@
-conn = $conn;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getServerVersion()
- {
- /** @var stdClass $serverInfo */
- $serverInfo = db2_server_info($this->conn);
-
- return $serverInfo->DBMS_VER;
- }
-
- /**
- * {@inheritdoc}
- */
- public function requiresQueryForServerVersion()
- {
- return false;
- }
-
- /**
- * {@inheritdoc}
- */
- public function prepare($sql)
- {
- $stmt = @db2_prepare($this->conn, $sql);
- if (! $stmt) {
- throw new DB2Exception(db2_stmt_errormsg());
- }
-
- return new DB2Statement($stmt);
- }
-
- /**
- * {@inheritdoc}
- */
- public function query()
- {
- $args = func_get_args();
- $sql = $args[0];
- $stmt = $this->prepare($sql);
- $stmt->execute();
-
- return $stmt;
- }
-
- /**
- * {@inheritdoc}
- */
- public function quote($input, $type = ParameterType::STRING)
- {
- $input = db2_escape_string($input);
-
- if ($type === ParameterType::INTEGER) {
- return $input;
- }
-
- return "'" . $input . "'";
- }
-
- /**
- * {@inheritdoc}
- */
- public function exec($statement)
- {
- $stmt = @db2_exec($this->conn, $statement);
-
- if ($stmt === false) {
- throw new DB2Exception(db2_stmt_errormsg());
- }
-
- return db2_num_rows($stmt);
- }
-
- /**
- * {@inheritdoc}
- */
- public function lastInsertId($name = null)
- {
- return db2_last_insert_id($this->conn);
- }
-
- /**
- * {@inheritdoc}
- */
- public function beginTransaction()
- {
- db2_autocommit($this->conn, DB2_AUTOCOMMIT_OFF);
- }
-
- /**
- * {@inheritdoc}
- */
- public function commit()
- {
- if (! db2_commit($this->conn)) {
- throw new DB2Exception(db2_conn_errormsg($this->conn));
- }
- db2_autocommit($this->conn, DB2_AUTOCOMMIT_ON);
- }
-
- /**
- * {@inheritdoc}
- */
- public function rollBack()
- {
- if (! db2_rollback($this->conn)) {
- throw new DB2Exception(db2_conn_errormsg($this->conn));
- }
- db2_autocommit($this->conn, DB2_AUTOCOMMIT_ON);
- }
-
- /**
- * {@inheritdoc}
- */
- public function errorCode()
- {
- return db2_conn_error($this->conn);
- }
-
- /**
- * {@inheritdoc}
- */
- public function errorInfo()
- {
- return [
- 0 => db2_conn_errormsg($this->conn),
- 1 => $this->errorCode(),
- ];
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/IBMDB2/DB2Driver.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/IBMDB2/DB2Driver.php
deleted file mode 100644
index fe79fe6bd..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/IBMDB2/DB2Driver.php
+++ /dev/null
@@ -1,49 +0,0 @@
-stmt = $stmt;
- }
-
- /**
- * {@inheritdoc}
- */
- public function bindValue($param, $value, $type = ParameterType::STRING)
- {
- return $this->bindParam($param, $value, $type);
- }
-
- /**
- * {@inheritdoc}
- */
- public function bindParam($column, &$variable, $type = ParameterType::STRING, $length = null)
- {
- switch ($type) {
- case ParameterType::INTEGER:
- $this->bind($column, $variable, DB2_PARAM_IN, DB2_LONG);
- break;
-
- case ParameterType::LARGE_OBJECT:
- if (isset($this->lobs[$column])) {
- [, $handle] = $this->lobs[$column];
- fclose($handle);
- }
-
- $handle = $this->createTemporaryFile();
- $path = stream_get_meta_data($handle)['uri'];
-
- $this->bind($column, $path, DB2_PARAM_FILE, DB2_BINARY);
-
- $this->lobs[$column] = [&$variable, $handle];
- break;
-
- default:
- $this->bind($column, $variable, DB2_PARAM_IN, DB2_CHAR);
- break;
- }
-
- return true;
- }
-
- /**
- * @param int $position Parameter position
- * @param mixed $variable
- *
- * @throws DB2Exception
- */
- private function bind($position, &$variable, int $parameterType, int $dataType) : void
- {
- $this->bindParam[$position] =& $variable;
-
- if (! db2_bind_param($this->stmt, $position, 'variable', $parameterType, $dataType)) {
- throw new DB2Exception(db2_stmt_errormsg());
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function closeCursor()
- {
- $this->bindParam = [];
-
- if (! db2_free_result($this->stmt)) {
- return false;
- }
-
- $this->result = false;
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function columnCount()
- {
- return db2_num_fields($this->stmt) ?: 0;
- }
-
- /**
- * {@inheritdoc}
- */
- public function errorCode()
- {
- return db2_stmt_error();
- }
-
- /**
- * {@inheritdoc}
- */
- public function errorInfo()
- {
- return [
- db2_stmt_errormsg(),
- db2_stmt_error(),
- ];
- }
-
- /**
- * {@inheritdoc}
- */
- public function execute($params = null)
- {
- if ($params === null) {
- ksort($this->bindParam);
-
- $params = [];
-
- foreach ($this->bindParam as $column => $value) {
- $params[] = $value;
- }
- }
-
- foreach ($this->lobs as [$source, $target]) {
- if (is_resource($source)) {
- $this->copyStreamToStream($source, $target);
-
- continue;
- }
-
- $this->writeStringToStream($source, $target);
- }
-
- $retval = db2_execute($this->stmt, $params);
-
- foreach ($this->lobs as [, $handle]) {
- fclose($handle);
- }
-
- $this->lobs = [];
-
- if ($retval === false) {
- throw new DB2Exception(db2_stmt_errormsg());
- }
-
- $this->result = true;
-
- return $retval;
- }
-
- /**
- * {@inheritdoc}
- */
- public function setFetchMode($fetchMode, $arg2 = null, $arg3 = null)
- {
- $this->defaultFetchMode = $fetchMode;
- $this->defaultFetchClass = $arg2 ?: $this->defaultFetchClass;
- $this->defaultFetchClassCtorArgs = $arg3 ? (array) $arg3 : $this->defaultFetchClassCtorArgs;
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getIterator()
- {
- return new StatementIterator($this);
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetch($fetchMode = null, $cursorOrientation = PDO::FETCH_ORI_NEXT, $cursorOffset = 0)
- {
- // do not try fetching from the statement if it's not expected to contain result
- // in order to prevent exceptional situation
- if (! $this->result) {
- return false;
- }
-
- $fetchMode = $fetchMode ?: $this->defaultFetchMode;
- switch ($fetchMode) {
- case FetchMode::COLUMN:
- return $this->fetchColumn();
-
- case FetchMode::MIXED:
- return db2_fetch_both($this->stmt);
-
- case FetchMode::ASSOCIATIVE:
- return db2_fetch_assoc($this->stmt);
-
- case FetchMode::CUSTOM_OBJECT:
- $className = $this->defaultFetchClass;
- $ctorArgs = $this->defaultFetchClassCtorArgs;
-
- if (func_num_args() >= 2) {
- $args = func_get_args();
- $className = $args[1];
- $ctorArgs = $args[2] ?? [];
- }
-
- $result = db2_fetch_object($this->stmt);
-
- if ($result instanceof stdClass) {
- $result = $this->castObject($result, $className, $ctorArgs);
- }
-
- return $result;
-
- case FetchMode::NUMERIC:
- return db2_fetch_array($this->stmt);
-
- case FetchMode::STANDARD_OBJECT:
- return db2_fetch_object($this->stmt);
-
- default:
- throw new DB2Exception('Given Fetch-Style ' . $fetchMode . ' is not supported.');
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetchAll($fetchMode = null, $fetchArgument = null, $ctorArgs = null)
- {
- $rows = [];
-
- switch ($fetchMode) {
- case FetchMode::CUSTOM_OBJECT:
- while (($row = $this->fetch(...func_get_args())) !== false) {
- $rows[] = $row;
- }
- break;
- case FetchMode::COLUMN:
- while (($row = $this->fetchColumn()) !== false) {
- $rows[] = $row;
- }
- break;
- default:
- while (($row = $this->fetch($fetchMode)) !== false) {
- $rows[] = $row;
- }
- }
-
- return $rows;
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetchColumn($columnIndex = 0)
- {
- $row = $this->fetch(FetchMode::NUMERIC);
-
- if ($row === false) {
- return false;
- }
-
- return $row[$columnIndex] ?? null;
- }
-
- /**
- * {@inheritdoc}
- */
- public function rowCount()
- {
- return @db2_num_rows($this->stmt) ? : 0;
- }
-
- /**
- * Casts a stdClass object to the given class name mapping its' properties.
- *
- * @param stdClass $sourceObject Object to cast from.
- * @param string|object $destinationClass Name of the class or class instance to cast to.
- * @param mixed[] $ctorArgs Arguments to use for constructing the destination class instance.
- *
- * @return object
- *
- * @throws DB2Exception
- */
- private function castObject(stdClass $sourceObject, $destinationClass, array $ctorArgs = [])
- {
- if (! is_string($destinationClass)) {
- if (! is_object($destinationClass)) {
- throw new DB2Exception(sprintf(
- 'Destination class has to be of type string or object, %s given.',
- gettype($destinationClass)
- ));
- }
- } else {
- $destinationClass = new ReflectionClass($destinationClass);
- $destinationClass = $destinationClass->newInstanceArgs($ctorArgs);
- }
-
- $sourceReflection = new ReflectionObject($sourceObject);
- $destinationClassReflection = new ReflectionObject($destinationClass);
- /** @var ReflectionProperty[] $destinationProperties */
- $destinationProperties = array_change_key_case($destinationClassReflection->getProperties(), CASE_LOWER);
-
- foreach ($sourceReflection->getProperties() as $sourceProperty) {
- $sourceProperty->setAccessible(true);
-
- $name = $sourceProperty->getName();
- $value = $sourceProperty->getValue($sourceObject);
-
- // Try to find a case-matching property.
- if ($destinationClassReflection->hasProperty($name)) {
- $destinationProperty = $destinationClassReflection->getProperty($name);
-
- $destinationProperty->setAccessible(true);
- $destinationProperty->setValue($destinationClass, $value);
-
- continue;
- }
-
- $name = strtolower($name);
-
- // Try to find a property without matching case.
- // Fallback for the driver returning either all uppercase or all lowercase column names.
- if (isset($destinationProperties[$name])) {
- $destinationProperty = $destinationProperties[$name];
-
- $destinationProperty->setAccessible(true);
- $destinationProperty->setValue($destinationClass, $value);
-
- continue;
- }
-
- $destinationClass->$name = $value;
- }
-
- return $destinationClass;
- }
-
- /**
- * @return resource
- *
- * @throws DB2Exception
- */
- private function createTemporaryFile()
- {
- $handle = @tmpfile();
-
- if ($handle === false) {
- throw new DB2Exception('Could not create temporary file: ' . error_get_last()['message']);
- }
-
- return $handle;
- }
-
- /**
- * @param resource $source
- * @param resource $target
- *
- * @throws DB2Exception
- */
- private function copyStreamToStream($source, $target) : void
- {
- if (@stream_copy_to_stream($source, $target) === false) {
- throw new DB2Exception('Could not copy source stream to temporary file: ' . error_get_last()['message']);
- }
- }
-
- /**
- * @param resource $target
- *
- * @throws DB2Exception
- */
- private function writeStringToStream(string $string, $target) : void
- {
- if (@fwrite($target, $string) === false) {
- throw new DB2Exception('Could not write string to temporary file: ' . error_get_last()['message']);
- }
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/Mysqli/Driver.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/Mysqli/Driver.php
deleted file mode 100644
index 1166e8d4c..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/Mysqli/Driver.php
+++ /dev/null
@@ -1,29 +0,0 @@
-conn = mysqli_init();
-
- $this->setSecureConnection($params);
- $this->setDriverOptions($driverOptions);
-
- set_error_handler(static function () {
- });
- try {
- if (! $this->conn->real_connect($params['host'], $username, $password, $dbname, $port, $socket, $flags)) {
- throw new MysqliException($this->conn->connect_error, $this->conn->sqlstate ?? 'HY000', $this->conn->connect_errno);
- }
- } finally {
- restore_error_handler();
- }
-
- if (! isset($params['charset'])) {
- return;
- }
-
- $this->conn->set_charset($params['charset']);
- }
-
- /**
- * Retrieves mysqli native resource handle.
- *
- * Could be used if part of your application is not using DBAL.
- *
- * @return mysqli
- */
- public function getWrappedResourceHandle()
- {
- return $this->conn;
- }
-
- /**
- * {@inheritdoc}
- *
- * The server version detection includes a special case for MariaDB
- * to support '5.5.5-' prefixed versions introduced in Maria 10+
- *
- * @link https://jira.mariadb.org/browse/MDEV-4088
- */
- public function getServerVersion()
- {
- $serverInfos = $this->conn->get_server_info();
- if (stripos($serverInfos, 'mariadb') !== false) {
- return $serverInfos;
- }
-
- $majorVersion = floor($this->conn->server_version / 10000);
- $minorVersion = floor(($this->conn->server_version - $majorVersion * 10000) / 100);
- $patchVersion = floor($this->conn->server_version - $majorVersion * 10000 - $minorVersion * 100);
-
- return $majorVersion . '.' . $minorVersion . '.' . $patchVersion;
- }
-
- /**
- * {@inheritdoc}
- */
- public function requiresQueryForServerVersion()
- {
- return false;
- }
-
- /**
- * {@inheritdoc}
- */
- public function prepare($prepareString)
- {
- return new MysqliStatement($this->conn, $prepareString);
- }
-
- /**
- * {@inheritdoc}
- */
- public function query()
- {
- $args = func_get_args();
- $sql = $args[0];
- $stmt = $this->prepare($sql);
- $stmt->execute();
-
- return $stmt;
- }
-
- /**
- * {@inheritdoc}
- */
- public function quote($input, $type = ParameterType::STRING)
- {
- return "'" . $this->conn->escape_string($input) . "'";
- }
-
- /**
- * {@inheritdoc}
- */
- public function exec($statement)
- {
- if ($this->conn->query($statement) === false) {
- throw new MysqliException($this->conn->error, $this->conn->sqlstate, $this->conn->errno);
- }
-
- return $this->conn->affected_rows;
- }
-
- /**
- * {@inheritdoc}
- */
- public function lastInsertId($name = null)
- {
- return $this->conn->insert_id;
- }
-
- /**
- * {@inheritdoc}
- */
- public function beginTransaction()
- {
- $this->conn->query('START TRANSACTION');
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function commit()
- {
- return $this->conn->commit();
- }
-
- /**
- * {@inheritdoc}non-PHPdoc)
- */
- public function rollBack()
- {
- return $this->conn->rollback();
- }
-
- /**
- * {@inheritdoc}
- */
- public function errorCode()
- {
- return $this->conn->errno;
- }
-
- /**
- * {@inheritdoc}
- */
- public function errorInfo()
- {
- return $this->conn->error;
- }
-
- /**
- * Apply the driver options to the connection.
- *
- * @param mixed[] $driverOptions
- *
- * @throws MysqliException When one of of the options is not supported.
- * @throws MysqliException When applying doesn't work - e.g. due to incorrect value.
- */
- private function setDriverOptions(array $driverOptions = [])
- {
- $supportedDriverOptions = [
- MYSQLI_OPT_CONNECT_TIMEOUT,
- MYSQLI_OPT_LOCAL_INFILE,
- MYSQLI_INIT_COMMAND,
- MYSQLI_READ_DEFAULT_FILE,
- MYSQLI_READ_DEFAULT_GROUP,
- ];
-
- if (defined('MYSQLI_SERVER_PUBLIC_KEY')) {
- $supportedDriverOptions[] = MYSQLI_SERVER_PUBLIC_KEY;
- }
-
- $exceptionMsg = "%s option '%s' with value '%s'";
-
- foreach ($driverOptions as $option => $value) {
- if ($option === static::OPTION_FLAGS) {
- continue;
- }
-
- if (! in_array($option, $supportedDriverOptions, true)) {
- throw new MysqliException(
- sprintf($exceptionMsg, 'Unsupported', $option, $value)
- );
- }
-
- if (@mysqli_options($this->conn, $option, $value)) {
- continue;
- }
-
- $msg = sprintf($exceptionMsg, 'Failed to set', $option, $value);
- $msg .= sprintf(', error: %s (%d)', mysqli_error($this->conn), mysqli_errno($this->conn));
-
- throw new MysqliException(
- $msg,
- $this->conn->sqlstate,
- $this->conn->errno
- );
- }
- }
-
- /**
- * Pings the server and re-connects when `mysqli.reconnect = 1`
- *
- * @return bool
- */
- public function ping()
- {
- return $this->conn->ping();
- }
-
- /**
- * Establish a secure connection
- *
- * @param mixed[] $params
- *
- * @throws MysqliException
- */
- private function setSecureConnection(array $params)
- {
- if (! isset($params['ssl_key']) &&
- ! isset($params['ssl_cert']) &&
- ! isset($params['ssl_ca']) &&
- ! isset($params['ssl_capath']) &&
- ! isset($params['ssl_cipher'])
- ) {
- return;
- }
-
- $this->conn->ssl_set(
- $params['ssl_key'] ?? null,
- $params['ssl_cert'] ?? null,
- $params['ssl_ca'] ?? null,
- $params['ssl_capath'] ?? null,
- $params['ssl_cipher'] ?? null
- );
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/Mysqli/MysqliException.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/Mysqli/MysqliException.php
deleted file mode 100644
index 1fa0c900f..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/Mysqli/MysqliException.php
+++ /dev/null
@@ -1,12 +0,0 @@
- 's',
- ParameterType::BINARY => 's',
- ParameterType::BOOLEAN => 'i',
- ParameterType::NULL => 's',
- ParameterType::INTEGER => 'i',
- ParameterType::LARGE_OBJECT => 'b',
- ];
-
- /** @var mysqli */
- protected $_conn;
-
- /** @var mysqli_stmt */
- protected $_stmt;
-
- /** @var string[]|false|null */
- protected $_columnNames;
-
- /** @var mixed[] */
- protected $_rowBindedValues = [];
-
- /** @var mixed[] */
- protected $_bindedValues;
-
- /** @var string */
- protected $types;
-
- /**
- * Contains ref values for bindValue().
- *
- * @var mixed[]
- */
- protected $_values = [];
-
- /** @var int */
- protected $_defaultFetchMode = FetchMode::MIXED;
-
- /**
- * Indicates whether the statement is in the state when fetching results is possible
- *
- * @var bool
- */
- private $result = false;
-
- /**
- * @param string $prepareString
- *
- * @throws MysqliException
- */
- public function __construct(mysqli $conn, $prepareString)
- {
- $this->_conn = $conn;
-
- $stmt = $conn->prepare($prepareString);
-
- if ($stmt === false) {
- throw new MysqliException($this->_conn->error, $this->_conn->sqlstate, $this->_conn->errno);
- }
-
- $this->_stmt = $stmt;
-
- $paramCount = $this->_stmt->param_count;
- if (0 >= $paramCount) {
- return;
- }
-
- $this->types = str_repeat('s', $paramCount);
- $this->_bindedValues = array_fill(1, $paramCount, null);
- }
-
- /**
- * {@inheritdoc}
- */
- public function bindParam($column, &$variable, $type = ParameterType::STRING, $length = null)
- {
- assert(is_int($column));
-
- if (! isset(self::$_paramTypeMap[$type])) {
- throw new MysqliException(sprintf("Unknown type: '%s'", $type));
- }
-
- $this->_bindedValues[$column] =& $variable;
- $this->types[$column - 1] = self::$_paramTypeMap[$type];
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function bindValue($param, $value, $type = ParameterType::STRING)
- {
- assert(is_int($param));
-
- if (! isset(self::$_paramTypeMap[$type])) {
- throw new MysqliException(sprintf("Unknown type: '%s'", $type));
- }
-
- $this->_values[$param] = $value;
- $this->_bindedValues[$param] =& $this->_values[$param];
- $this->types[$param - 1] = self::$_paramTypeMap[$type];
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function execute($params = null)
- {
- if ($this->_bindedValues !== null) {
- if ($params !== null) {
- if (! $this->bindUntypedValues($params)) {
- throw new MysqliException($this->_stmt->error, $this->_stmt->errno);
- }
- } else {
- $this->bindTypedParameters();
- }
- }
-
- if (! $this->_stmt->execute()) {
- throw new MysqliException($this->_stmt->error, $this->_stmt->sqlstate, $this->_stmt->errno);
- }
-
- if ($this->_columnNames === null) {
- $meta = $this->_stmt->result_metadata();
- if ($meta !== false) {
- $fields = $meta->fetch_fields();
- assert(is_array($fields));
-
- $columnNames = [];
- foreach ($fields as $col) {
- $columnNames[] = $col->name;
- }
-
- $meta->free();
-
- $this->_columnNames = $columnNames;
- } else {
- $this->_columnNames = false;
- }
- }
-
- if ($this->_columnNames !== false) {
- // Store result of every execution which has it. Otherwise it will be impossible
- // to execute a new statement in case if the previous one has non-fetched rows
- // @link http://dev.mysql.com/doc/refman/5.7/en/commands-out-of-sync.html
- $this->_stmt->store_result();
-
- // Bind row values _after_ storing the result. Otherwise, if mysqli is compiled with libmysql,
- // it will have to allocate as much memory as it may be needed for the given column type
- // (e.g. for a LONGBLOB field it's 4 gigabytes)
- // @link https://bugs.php.net/bug.php?id=51386#1270673122
- //
- // Make sure that the values are bound after each execution. Otherwise, if closeCursor() has been
- // previously called on the statement, the values are unbound making the statement unusable.
- //
- // It's also important that row values are bound after _each_ call to store_result(). Otherwise,
- // if mysqli is compiled with libmysql, subsequently fetched string values will get truncated
- // to the length of the ones fetched during the previous execution.
- $this->_rowBindedValues = array_fill(0, count($this->_columnNames), null);
-
- $refs = [];
- foreach ($this->_rowBindedValues as $key => &$value) {
- $refs[$key] =& $value;
- }
-
- if (! $this->_stmt->bind_result(...$refs)) {
- throw new MysqliException($this->_stmt->error, $this->_stmt->sqlstate, $this->_stmt->errno);
- }
- }
-
- $this->result = true;
-
- return true;
- }
-
- /**
- * Binds parameters with known types previously bound to the statement
- */
- private function bindTypedParameters()
- {
- $streams = $values = [];
- $types = $this->types;
-
- foreach ($this->_bindedValues as $parameter => $value) {
- if (! isset($types[$parameter - 1])) {
- $types[$parameter - 1] = static::$_paramTypeMap[ParameterType::STRING];
- }
-
- if ($types[$parameter - 1] === static::$_paramTypeMap[ParameterType::LARGE_OBJECT]) {
- if (is_resource($value)) {
- if (get_resource_type($value) !== 'stream') {
- throw new InvalidArgumentException('Resources passed with the LARGE_OBJECT parameter type must be stream resources.');
- }
- $streams[$parameter] = $value;
- $values[$parameter] = null;
- continue;
- }
-
- $types[$parameter - 1] = static::$_paramTypeMap[ParameterType::STRING];
- }
-
- $values[$parameter] = $value;
- }
-
- if (! $this->_stmt->bind_param($types, ...$values)) {
- throw new MysqliException($this->_stmt->error, $this->_stmt->sqlstate, $this->_stmt->errno);
- }
-
- $this->sendLongData($streams);
- }
-
- /**
- * Handle $this->_longData after regular query parameters have been bound
- *
- * @throws MysqliException
- */
- private function sendLongData($streams)
- {
- foreach ($streams as $paramNr => $stream) {
- while (! feof($stream)) {
- $chunk = fread($stream, 8192);
-
- if ($chunk === false) {
- throw new MysqliException("Failed reading the stream resource for parameter offset ${paramNr}.");
- }
-
- if (! $this->_stmt->send_long_data($paramNr - 1, $chunk)) {
- throw new MysqliException($this->_stmt->error, $this->_stmt->sqlstate, $this->_stmt->errno);
- }
- }
- }
- }
-
- /**
- * Binds a array of values to bound parameters.
- *
- * @param mixed[] $values
- *
- * @return bool
- */
- private function bindUntypedValues(array $values)
- {
- $params = [];
- $types = str_repeat('s', count($values));
-
- foreach ($values as &$v) {
- $params[] =& $v;
- }
-
- return $this->_stmt->bind_param($types, ...$params);
- }
-
- /**
- * @return mixed[]|false|null
- */
- private function _fetch()
- {
- $ret = $this->_stmt->fetch();
-
- if ($ret === true) {
- $values = [];
- foreach ($this->_rowBindedValues as $v) {
- $values[] = $v;
- }
-
- return $values;
- }
-
- return $ret;
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetch($fetchMode = null, $cursorOrientation = PDO::FETCH_ORI_NEXT, $cursorOffset = 0)
- {
- // do not try fetching from the statement if it's not expected to contain result
- // in order to prevent exceptional situation
- if (! $this->result) {
- return false;
- }
-
- $fetchMode = $fetchMode ?: $this->_defaultFetchMode;
-
- if ($fetchMode === FetchMode::COLUMN) {
- return $this->fetchColumn();
- }
-
- $values = $this->_fetch();
-
- if ($values === null) {
- return false;
- }
-
- if ($values === false) {
- throw new MysqliException($this->_stmt->error, $this->_stmt->sqlstate, $this->_stmt->errno);
- }
-
- if ($fetchMode === FetchMode::NUMERIC) {
- return $values;
- }
-
- assert(is_array($this->_columnNames));
- $assoc = array_combine($this->_columnNames, $values);
- assert(is_array($assoc));
-
- switch ($fetchMode) {
- case FetchMode::ASSOCIATIVE:
- return $assoc;
-
- case FetchMode::MIXED:
- return $assoc + $values;
-
- case FetchMode::STANDARD_OBJECT:
- return (object) $assoc;
-
- default:
- throw new MysqliException(sprintf("Unknown fetch type '%s'", $fetchMode));
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetchAll($fetchMode = null, $fetchArgument = null, $ctorArgs = null)
- {
- $fetchMode = $fetchMode ?: $this->_defaultFetchMode;
-
- $rows = [];
-
- if ($fetchMode === FetchMode::COLUMN) {
- while (($row = $this->fetchColumn()) !== false) {
- $rows[] = $row;
- }
- } else {
- while (($row = $this->fetch($fetchMode)) !== false) {
- $rows[] = $row;
- }
- }
-
- return $rows;
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetchColumn($columnIndex = 0)
- {
- $row = $this->fetch(FetchMode::NUMERIC);
-
- if ($row === false) {
- return false;
- }
-
- return $row[$columnIndex] ?? null;
- }
-
- /**
- * {@inheritdoc}
- */
- public function errorCode()
- {
- return $this->_stmt->errno;
- }
-
- /**
- * {@inheritdoc}
- */
- public function errorInfo()
- {
- return $this->_stmt->error;
- }
-
- /**
- * {@inheritdoc}
- */
- public function closeCursor()
- {
- $this->_stmt->free_result();
- $this->result = false;
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function rowCount()
- {
- if ($this->_columnNames === false) {
- return $this->_stmt->affected_rows;
- }
-
- return $this->_stmt->num_rows;
- }
-
- /**
- * {@inheritdoc}
- */
- public function columnCount()
- {
- return $this->_stmt->field_count;
- }
-
- /**
- * {@inheritdoc}
- */
- public function setFetchMode($fetchMode, $arg2 = null, $arg3 = null)
- {
- $this->_defaultFetchMode = $fetchMode;
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getIterator()
- {
- return new StatementIterator($this);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/OCI8/Driver.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/OCI8/Driver.php
deleted file mode 100644
index edda32d6a..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/OCI8/Driver.php
+++ /dev/null
@@ -1,54 +0,0 @@
-_constructDsn($params),
- $params['charset'] ?? '',
- $params['sessionMode'] ?? OCI_DEFAULT,
- $params['persistent'] ?? false
- );
- } catch (OCI8Exception $e) {
- throw DBALException::driverException($this, $e);
- }
- }
-
- /**
- * Constructs the Oracle DSN.
- *
- * @param mixed[] $params
- *
- * @return string The DSN.
- */
- protected function _constructDsn(array $params)
- {
- return $this->getEasyConnectString($params);
- }
-
- /**
- * {@inheritdoc}
- *
- * @deprecated
- */
- public function getName()
- {
- return 'oci8';
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/OCI8/OCI8Connection.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/OCI8/OCI8Connection.php
deleted file mode 100644
index c1857936f..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/OCI8/OCI8Connection.php
+++ /dev/null
@@ -1,241 +0,0 @@
-dbh = $dbh;
- }
-
- /**
- * {@inheritdoc}
- *
- * @throws UnexpectedValueException If the version string returned by the database server
- * does not contain a parsable version number.
- */
- public function getServerVersion()
- {
- $version = oci_server_version($this->dbh);
-
- if ($version === false) {
- throw OCI8Exception::fromErrorInfo(oci_error($this->dbh));
- }
-
- if (! preg_match('/\s+(\d+\.\d+\.\d+\.\d+\.\d+)\s+/', $version, $matches)) {
- throw new UnexpectedValueException(
- sprintf(
- 'Unexpected database version string "%s". Cannot parse an appropriate version number from it. ' .
- 'Please report this database version string to the Doctrine team.',
- $version
- )
- );
- }
-
- return $matches[1];
- }
-
- /**
- * {@inheritdoc}
- */
- public function requiresQueryForServerVersion()
- {
- return false;
- }
-
- /**
- * {@inheritdoc}
- */
- public function prepare($prepareString)
- {
- return new OCI8Statement($this->dbh, $prepareString, $this);
- }
-
- /**
- * {@inheritdoc}
- */
- public function query()
- {
- $args = func_get_args();
- $sql = $args[0];
- //$fetchMode = $args[1];
- $stmt = $this->prepare($sql);
- $stmt->execute();
-
- return $stmt;
- }
-
- /**
- * {@inheritdoc}
- */
- public function quote($value, $type = ParameterType::STRING)
- {
- if (is_int($value) || is_float($value)) {
- return $value;
- }
- $value = str_replace("'", "''", $value);
-
- return "'" . addcslashes($value, "\000\n\r\\\032") . "'";
- }
-
- /**
- * {@inheritdoc}
- */
- public function exec($statement)
- {
- $stmt = $this->prepare($statement);
- $stmt->execute();
-
- return $stmt->rowCount();
- }
-
- /**
- * {@inheritdoc}
- */
- public function lastInsertId($name = null)
- {
- if ($name === null) {
- return false;
- }
-
- $sql = 'SELECT ' . $name . '.CURRVAL FROM DUAL';
- $stmt = $this->query($sql);
- $result = $stmt->fetchColumn();
-
- if ($result === false) {
- throw new OCI8Exception('lastInsertId failed: Query was executed but no result was returned.');
- }
-
- return (int) $result;
- }
-
- /**
- * Returns the current execution mode.
- *
- * @return int
- */
- public function getExecuteMode()
- {
- return $this->executeMode;
- }
-
- /**
- * {@inheritdoc}
- */
- public function beginTransaction()
- {
- $this->executeMode = OCI_NO_AUTO_COMMIT;
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function commit()
- {
- if (! oci_commit($this->dbh)) {
- throw OCI8Exception::fromErrorInfo($this->errorInfo());
- }
- $this->executeMode = OCI_COMMIT_ON_SUCCESS;
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function rollBack()
- {
- if (! oci_rollback($this->dbh)) {
- throw OCI8Exception::fromErrorInfo($this->errorInfo());
- }
- $this->executeMode = OCI_COMMIT_ON_SUCCESS;
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function errorCode()
- {
- $error = oci_error($this->dbh);
- if ($error !== false) {
- $error = $error['code'];
- }
-
- return $error;
- }
-
- /**
- * {@inheritdoc}
- */
- public function errorInfo()
- {
- $error = oci_error($this->dbh);
-
- if ($error === false) {
- return [];
- }
-
- return $error;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/OCI8/OCI8Exception.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/OCI8/OCI8Exception.php
deleted file mode 100644
index af3a9d1a7..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/OCI8/OCI8Exception.php
+++ /dev/null
@@ -1,22 +0,0 @@
- OCI_BOTH,
- FetchMode::ASSOCIATIVE => OCI_ASSOC,
- FetchMode::NUMERIC => OCI_NUM,
- FetchMode::COLUMN => OCI_NUM,
- ];
-
- /** @var int */
- protected $_defaultFetchMode = FetchMode::MIXED;
-
- /** @var string[] */
- protected $_paramMap = [];
-
- /**
- * Holds references to bound parameter values.
- *
- * This is a new requirement for PHP7's oci8 extension that prevents bound values from being garbage collected.
- *
- * @var mixed[]
- */
- private $boundValues = [];
-
- /**
- * Indicates whether the statement is in the state when fetching results is possible
- *
- * @var bool
- */
- private $result = false;
-
- /**
- * Creates a new OCI8Statement that uses the given connection handle and SQL statement.
- *
- * @param resource $dbh The connection handle.
- * @param string $query The SQL query.
- */
- public function __construct($dbh, $query, OCI8Connection $conn)
- {
- [$query, $paramMap] = self::convertPositionalToNamedPlaceholders($query);
-
- $stmt = oci_parse($dbh, $query);
- assert(is_resource($stmt));
-
- $this->_sth = $stmt;
- $this->_dbh = $dbh;
- $this->_paramMap = $paramMap;
- $this->_conn = $conn;
- }
-
- /**
- * Converts positional (?) into named placeholders (:param).
- *
- * Oracle does not support positional parameters, hence this method converts all
- * positional parameters into artificially named parameters. Note that this conversion
- * is not perfect. All question marks (?) in the original statement are treated as
- * placeholders and converted to a named parameter.
- *
- * The algorithm uses a state machine with two possible states: InLiteral and NotInLiteral.
- * Question marks inside literal strings are therefore handled correctly by this method.
- * This comes at a cost, the whole sql statement has to be looped over.
- *
- * @param string $statement The SQL statement to convert.
- *
- * @return mixed[] [0] => the statement value (string), [1] => the paramMap value (array).
- *
- * @throws OCI8Exception
- *
- * @todo extract into utility class in Doctrine\DBAL\Util namespace
- * @todo review and test for lost spaces. we experienced missing spaces with oci8 in some sql statements.
- */
- public static function convertPositionalToNamedPlaceholders($statement)
- {
- $fragmentOffset = $tokenOffset = 0;
- $fragments = $paramMap = [];
- $currentLiteralDelimiter = null;
-
- do {
- if (! $currentLiteralDelimiter) {
- $result = self::findPlaceholderOrOpeningQuote(
- $statement,
- $tokenOffset,
- $fragmentOffset,
- $fragments,
- $currentLiteralDelimiter,
- $paramMap
- );
- } else {
- $result = self::findClosingQuote($statement, $tokenOffset, $currentLiteralDelimiter);
- }
- } while ($result);
-
- if ($currentLiteralDelimiter) {
- throw new OCI8Exception(sprintf(
- 'The statement contains non-terminated string literal starting at offset %d',
- $tokenOffset - 1
- ));
- }
-
- $fragments[] = substr($statement, $fragmentOffset);
- $statement = implode('', $fragments);
-
- return [$statement, $paramMap];
- }
-
- /**
- * Finds next placeholder or opening quote.
- *
- * @param string $statement The SQL statement to parse
- * @param string $tokenOffset The offset to start searching from
- * @param int $fragmentOffset The offset to build the next fragment from
- * @param string[] $fragments Fragments of the original statement not containing placeholders
- * @param string|null $currentLiteralDelimiter The delimiter of the current string literal
- * or NULL if not currently in a literal
- * @param array $paramMap Mapping of the original parameter positions to their named replacements
- *
- * @return bool Whether the token was found
- */
- private static function findPlaceholderOrOpeningQuote(
- $statement,
- &$tokenOffset,
- &$fragmentOffset,
- &$fragments,
- &$currentLiteralDelimiter,
- &$paramMap
- ) {
- $token = self::findToken($statement, $tokenOffset, '/[?\'"]/');
-
- if (! $token) {
- return false;
- }
-
- if ($token === '?') {
- $position = count($paramMap) + 1;
- $param = ':param' . $position;
- $fragments[] = substr($statement, $fragmentOffset, $tokenOffset - $fragmentOffset);
- $fragments[] = $param;
- $paramMap[$position] = $param;
- $tokenOffset += 1;
- $fragmentOffset = $tokenOffset;
-
- return true;
- }
-
- $currentLiteralDelimiter = $token;
- ++$tokenOffset;
-
- return true;
- }
-
- /**
- * Finds closing quote
- *
- * @param string $statement The SQL statement to parse
- * @param string $tokenOffset The offset to start searching from
- * @param string $currentLiteralDelimiter The delimiter of the current string literal
- *
- * @return bool Whether the token was found
- */
- private static function findClosingQuote(
- $statement,
- &$tokenOffset,
- &$currentLiteralDelimiter
- ) {
- $token = self::findToken(
- $statement,
- $tokenOffset,
- '/' . preg_quote($currentLiteralDelimiter, '/') . '/'
- );
-
- if (! $token) {
- return false;
- }
-
- $currentLiteralDelimiter = false;
- ++$tokenOffset;
-
- return true;
- }
-
- /**
- * Finds the token described by regex starting from the given offset. Updates the offset with the position
- * where the token was found.
- *
- * @param string $statement The SQL statement to parse
- * @param int $offset The offset to start searching from
- * @param string $regex The regex containing token pattern
- *
- * @return string|null Token or NULL if not found
- */
- private static function findToken($statement, &$offset, $regex)
- {
- if (preg_match($regex, $statement, $matches, PREG_OFFSET_CAPTURE, $offset)) {
- $offset = $matches[0][1];
-
- return $matches[0][0];
- }
-
- return null;
- }
-
- /**
- * {@inheritdoc}
- */
- public function bindValue($param, $value, $type = ParameterType::STRING)
- {
- return $this->bindParam($param, $value, $type, null);
- }
-
- /**
- * {@inheritdoc}
- */
- public function bindParam($column, &$variable, $type = ParameterType::STRING, $length = null)
- {
- $column = $this->_paramMap[$column];
-
- if ($type === ParameterType::LARGE_OBJECT) {
- $lob = oci_new_descriptor($this->_dbh, OCI_D_LOB);
-
- $class = 'OCI-Lob';
- assert($lob instanceof $class);
-
- $lob->writeTemporary($variable, OCI_TEMP_BLOB);
-
- $variable =& $lob;
- }
-
- $this->boundValues[$column] =& $variable;
-
- return oci_bind_by_name(
- $this->_sth,
- $column,
- $variable,
- $length ?? -1,
- $this->convertParameterType($type)
- );
- }
-
- /**
- * Converts DBAL parameter type to oci8 parameter type
- */
- private function convertParameterType(int $type) : int
- {
- switch ($type) {
- case ParameterType::BINARY:
- return OCI_B_BIN;
-
- case ParameterType::LARGE_OBJECT:
- return OCI_B_BLOB;
-
- default:
- return SQLT_CHR;
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function closeCursor()
- {
- // not having the result means there's nothing to close
- if (! $this->result) {
- return true;
- }
-
- oci_cancel($this->_sth);
-
- $this->result = false;
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function columnCount()
- {
- return oci_num_fields($this->_sth) ?: 0;
- }
-
- /**
- * {@inheritdoc}
- */
- public function errorCode()
- {
- $error = oci_error($this->_sth);
- if ($error !== false) {
- $error = $error['code'];
- }
-
- return $error;
- }
-
- /**
- * {@inheritdoc}
- */
- public function errorInfo()
- {
- $error = oci_error($this->_sth);
-
- if ($error === false) {
- return [];
- }
-
- return $error;
- }
-
- /**
- * {@inheritdoc}
- */
- public function execute($params = null)
- {
- if ($params) {
- $hasZeroIndex = array_key_exists(0, $params);
-
- foreach ($params as $key => $val) {
- if ($hasZeroIndex && is_int($key)) {
- $this->bindValue($key + 1, $val);
- } else {
- $this->bindValue($key, $val);
- }
- }
- }
-
- $ret = @oci_execute($this->_sth, $this->_conn->getExecuteMode());
- if (! $ret) {
- throw OCI8Exception::fromErrorInfo($this->errorInfo());
- }
-
- $this->result = true;
-
- return $ret;
- }
-
- /**
- * {@inheritdoc}
- */
- public function setFetchMode($fetchMode, $arg2 = null, $arg3 = null)
- {
- $this->_defaultFetchMode = $fetchMode;
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getIterator()
- {
- return new StatementIterator($this);
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetch($fetchMode = null, $cursorOrientation = PDO::FETCH_ORI_NEXT, $cursorOffset = 0)
- {
- // do not try fetching from the statement if it's not expected to contain result
- // in order to prevent exceptional situation
- if (! $this->result) {
- return false;
- }
-
- $fetchMode = $fetchMode ?: $this->_defaultFetchMode;
-
- if ($fetchMode === FetchMode::COLUMN) {
- return $this->fetchColumn();
- }
-
- if ($fetchMode === FetchMode::STANDARD_OBJECT) {
- return oci_fetch_object($this->_sth);
- }
-
- if (! isset(self::$fetchModeMap[$fetchMode])) {
- throw new InvalidArgumentException('Invalid fetch style: ' . $fetchMode);
- }
-
- return oci_fetch_array(
- $this->_sth,
- self::$fetchModeMap[$fetchMode] | OCI_RETURN_NULLS | OCI_RETURN_LOBS
- );
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetchAll($fetchMode = null, $fetchArgument = null, $ctorArgs = null)
- {
- $fetchMode = $fetchMode ?: $this->_defaultFetchMode;
-
- $result = [];
-
- if ($fetchMode === FetchMode::STANDARD_OBJECT) {
- while ($row = $this->fetch($fetchMode)) {
- $result[] = $row;
- }
-
- return $result;
- }
-
- if (! isset(self::$fetchModeMap[$fetchMode])) {
- throw new InvalidArgumentException('Invalid fetch style: ' . $fetchMode);
- }
-
- if (self::$fetchModeMap[$fetchMode] === OCI_BOTH) {
- while ($row = $this->fetch($fetchMode)) {
- $result[] = $row;
- }
- } else {
- $fetchStructure = OCI_FETCHSTATEMENT_BY_ROW;
-
- if ($fetchMode === FetchMode::COLUMN) {
- $fetchStructure = OCI_FETCHSTATEMENT_BY_COLUMN;
- }
-
- // do not try fetching from the statement if it's not expected to contain result
- // in order to prevent exceptional situation
- if (! $this->result) {
- return [];
- }
-
- oci_fetch_all(
- $this->_sth,
- $result,
- 0,
- -1,
- self::$fetchModeMap[$fetchMode] | OCI_RETURN_NULLS | $fetchStructure | OCI_RETURN_LOBS
- );
-
- if ($fetchMode === FetchMode::COLUMN) {
- $result = $result[0];
- }
- }
-
- return $result;
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetchColumn($columnIndex = 0)
- {
- // do not try fetching from the statement if it's not expected to contain result
- // in order to prevent exceptional situation
- if (! $this->result) {
- return false;
- }
-
- $row = oci_fetch_array($this->_sth, OCI_NUM | OCI_RETURN_NULLS | OCI_RETURN_LOBS);
-
- if ($row === false) {
- return false;
- }
-
- return $row[$columnIndex] ?? null;
- }
-
- /**
- * {@inheritdoc}
- */
- public function rowCount()
- {
- return oci_num_rows($this->_sth) ?: 0;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php
deleted file mode 100644
index 336542ea5..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php
+++ /dev/null
@@ -1,115 +0,0 @@
-setAttribute(PDO::ATTR_STATEMENT_CLASS, [PDOStatement::class, []]);
- $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
- } catch (\PDOException $exception) {
- throw new PDOException($exception);
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function exec($statement)
- {
- try {
- return parent::exec($statement);
- } catch (\PDOException $exception) {
- throw new PDOException($exception);
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function getServerVersion()
- {
- return PDO::getAttribute(PDO::ATTR_SERVER_VERSION);
- }
-
- /**
- * {@inheritdoc}
- */
- public function prepare($prepareString, $driverOptions = [])
- {
- try {
- return parent::prepare($prepareString, $driverOptions);
- } catch (\PDOException $exception) {
- throw new PDOException($exception);
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function query()
- {
- $args = func_get_args();
-
- try {
- $stmt = parent::query(...$args);
- assert($stmt instanceof \PDOStatement);
-
- return $stmt;
- } catch (\PDOException $exception) {
- throw new PDOException($exception);
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function quote($input, $type = ParameterType::STRING)
- {
- return parent::quote($input, $type);
- }
-
- /**
- * {@inheritdoc}
- */
- public function lastInsertId($name = null)
- {
- try {
- if ($name === null) {
- return parent::lastInsertId();
- }
-
- return parent::lastInsertId($name);
- } catch (\PDOException $exception) {
- throw new PDOException($exception);
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function requiresQueryForServerVersion()
- {
- return false;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOException.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOException.php
deleted file mode 100644
index 277d7a625..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOException.php
+++ /dev/null
@@ -1,52 +0,0 @@
-getMessage(), 0, $exception);
-
- $this->code = $exception->getCode();
- $this->errorInfo = $exception->errorInfo;
- $this->errorCode = $exception->errorInfo[1] ?? $exception->getCode();
- $this->sqlState = $exception->errorInfo[0] ?? $exception->getCode();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getErrorCode()
- {
- return $this->errorCode;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getSQLState()
- {
- return $this->sqlState;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOIbm/Driver.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOIbm/Driver.php
deleted file mode 100644
index 12fb14ef5..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOIbm/Driver.php
+++ /dev/null
@@ -1,59 +0,0 @@
-_constructPdoDsn($params),
- $username,
- $password,
- $driverOptions
- );
- }
-
- /**
- * Constructs the IBM PDO DSN.
- *
- * @param mixed[] $params
- *
- * @return string The DSN.
- */
- private function _constructPdoDsn(array $params)
- {
- $dsn = 'ibm:';
- if (isset($params['host'])) {
- $dsn .= 'HOSTNAME=' . $params['host'] . ';';
- }
- if (isset($params['port'])) {
- $dsn .= 'PORT=' . $params['port'] . ';';
- }
- $dsn .= 'PROTOCOL=TCPIP;';
- if (isset($params['dbname'])) {
- $dsn .= 'DATABASE=' . $params['dbname'] . ';';
- }
-
- return $dsn;
- }
-
- /**
- * {@inheritdoc}
- *
- * @deprecated
- */
- public function getName()
- {
- return 'pdo_ibm';
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php
deleted file mode 100644
index dcd4ff518..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php
+++ /dev/null
@@ -1,72 +0,0 @@
-constructPdoDsn($params),
- $username,
- $password,
- $driverOptions
- );
- } catch (PDOException $e) {
- throw DBALException::driverException($this, $e);
- }
-
- return $conn;
- }
-
- /**
- * Constructs the MySql PDO DSN.
- *
- * @param mixed[] $params
- *
- * @return string The DSN.
- */
- protected function constructPdoDsn(array $params)
- {
- $dsn = 'mysql:';
- if (isset($params['host']) && $params['host'] !== '') {
- $dsn .= 'host=' . $params['host'] . ';';
- }
- if (isset($params['port'])) {
- $dsn .= 'port=' . $params['port'] . ';';
- }
- if (isset($params['dbname'])) {
- $dsn .= 'dbname=' . $params['dbname'] . ';';
- }
- if (isset($params['unix_socket'])) {
- $dsn .= 'unix_socket=' . $params['unix_socket'] . ';';
- }
- if (isset($params['charset'])) {
- $dsn .= 'charset=' . $params['charset'] . ';';
- }
-
- return $dsn;
- }
-
- /**
- * {@inheritdoc}
- *
- * @deprecated
- */
- public function getName()
- {
- return 'pdo_mysql';
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOOracle/Driver.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOOracle/Driver.php
deleted file mode 100644
index f1239eafb..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOOracle/Driver.php
+++ /dev/null
@@ -1,62 +0,0 @@
-constructPdoDsn($params),
- $username,
- $password,
- $driverOptions
- );
- } catch (PDOException $e) {
- throw DBALException::driverException($this, $e);
- }
- }
-
- /**
- * Constructs the Oracle PDO DSN.
- *
- * @param mixed[] $params
- *
- * @return string The DSN.
- */
- private function constructPdoDsn(array $params)
- {
- $dsn = 'oci:dbname=' . $this->getEasyConnectString($params);
-
- if (isset($params['charset'])) {
- $dsn .= ';charset=' . $params['charset'];
- }
-
- return $dsn;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return 'pdo_oracle';
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOPgSql/Driver.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOPgSql/Driver.php
deleted file mode 100644
index f25cd5cde..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOPgSql/Driver.php
+++ /dev/null
@@ -1,118 +0,0 @@
-_constructPdoDsn($params),
- $username,
- $password,
- $driverOptions
- );
-
- if (defined('PDO::PGSQL_ATTR_DISABLE_PREPARES')
- && (! isset($driverOptions[PDO::PGSQL_ATTR_DISABLE_PREPARES])
- || $driverOptions[PDO::PGSQL_ATTR_DISABLE_PREPARES] === true
- )
- ) {
- $pdo->setAttribute(PDO::PGSQL_ATTR_DISABLE_PREPARES, true);
- }
-
- /* defining client_encoding via SET NAMES to avoid inconsistent DSN support
- * - the 'client_encoding' connection param only works with postgres >= 9.1
- * - passing client_encoding via the 'options' param breaks pgbouncer support
- */
- if (isset($params['charset'])) {
- $pdo->exec('SET NAMES \'' . $params['charset'] . '\'');
- }
-
- return $pdo;
- } catch (PDOException $e) {
- throw DBALException::driverException($this, $e);
- }
- }
-
- /**
- * Constructs the Postgres PDO DSN.
- *
- * @param mixed[] $params
- *
- * @return string The DSN.
- */
- private function _constructPdoDsn(array $params)
- {
- $dsn = 'pgsql:';
-
- if (isset($params['host']) && $params['host'] !== '') {
- $dsn .= 'host=' . $params['host'] . ';';
- }
-
- if (isset($params['port']) && $params['port'] !== '') {
- $dsn .= 'port=' . $params['port'] . ';';
- }
-
- if (isset($params['dbname'])) {
- $dsn .= 'dbname=' . $params['dbname'] . ';';
- } elseif (isset($params['default_dbname'])) {
- $dsn .= 'dbname=' . $params['default_dbname'] . ';';
- } else {
- // Used for temporary connections to allow operations like dropping the database currently connected to.
- // Connecting without an explicit database does not work, therefore "postgres" database is used
- // as it is mostly present in every server setup.
- $dsn .= 'dbname=postgres;';
- }
-
- if (isset($params['sslmode'])) {
- $dsn .= 'sslmode=' . $params['sslmode'] . ';';
- }
-
- if (isset($params['sslrootcert'])) {
- $dsn .= 'sslrootcert=' . $params['sslrootcert'] . ';';
- }
-
- if (isset($params['sslcert'])) {
- $dsn .= 'sslcert=' . $params['sslcert'] . ';';
- }
-
- if (isset($params['sslkey'])) {
- $dsn .= 'sslkey=' . $params['sslkey'] . ';';
- }
-
- if (isset($params['sslcrl'])) {
- $dsn .= 'sslcrl=' . $params['sslcrl'] . ';';
- }
-
- if (isset($params['application_name'])) {
- $dsn .= 'application_name=' . $params['application_name'] . ';';
- }
-
- return $dsn;
- }
-
- /**
- * {@inheritdoc}
- *
- * @deprecated
- */
- public function getName()
- {
- return 'pdo_pgsql';
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOSqlite/Driver.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOSqlite/Driver.php
deleted file mode 100644
index d08c6a2c8..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOSqlite/Driver.php
+++ /dev/null
@@ -1,83 +0,0 @@
- ['callback' => [SqlitePlatform::class, 'udfSqrt'], 'numArgs' => 1],
- 'mod' => ['callback' => [SqlitePlatform::class, 'udfMod'], 'numArgs' => 2],
- 'locate' => ['callback' => [SqlitePlatform::class, 'udfLocate'], 'numArgs' => -1],
- ];
-
- /**
- * {@inheritdoc}
- */
- public function connect(array $params, $username = null, $password = null, array $driverOptions = [])
- {
- if (isset($driverOptions['userDefinedFunctions'])) {
- $this->_userDefinedFunctions = array_merge(
- $this->_userDefinedFunctions,
- $driverOptions['userDefinedFunctions']
- );
- unset($driverOptions['userDefinedFunctions']);
- }
-
- try {
- $pdo = new PDOConnection(
- $this->_constructPdoDsn($params),
- $username,
- $password,
- $driverOptions
- );
- } catch (PDOException $ex) {
- throw DBALException::driverException($this, $ex);
- }
-
- foreach ($this->_userDefinedFunctions as $fn => $data) {
- $pdo->sqliteCreateFunction($fn, $data['callback'], $data['numArgs']);
- }
-
- return $pdo;
- }
-
- /**
- * Constructs the Sqlite PDO DSN.
- *
- * @param mixed[] $params
- *
- * @return string The DSN.
- */
- protected function _constructPdoDsn(array $params)
- {
- $dsn = 'sqlite:';
- if (isset($params['path'])) {
- $dsn .= $params['path'];
- } elseif (isset($params['memory'])) {
- $dsn .= ':memory:';
- }
-
- return $dsn;
- }
-
- /**
- * {@inheritdoc}
- *
- * @deprecated
- */
- public function getName()
- {
- return 'pdo_sqlite';
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOSqlsrv/Connection.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOSqlsrv/Connection.php
deleted file mode 100644
index bd3894477..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOSqlsrv/Connection.php
+++ /dev/null
@@ -1,54 +0,0 @@
-setAttribute(PDO::ATTR_STATEMENT_CLASS, [Statement::class, []]);
- }
-
- /**
- * {@inheritDoc}
- */
- public function lastInsertId($name = null)
- {
- if ($name === null) {
- return parent::lastInsertId($name);
- }
-
- $stmt = $this->prepare('SELECT CONVERT(VARCHAR(MAX), current_value) FROM sys.sequences WHERE name = ?');
- $stmt->execute([$name]);
-
- return $stmt->fetchColumn();
- }
-
- /**
- * {@inheritDoc}
- */
- public function quote($value, $type = ParameterType::STRING)
- {
- $val = parent::quote($value, $type);
-
- // Fix for a driver version terminating all values with null byte
- if (strpos($val, "\0") !== false) {
- $val = substr($val, 0, -1);
- }
-
- return $val;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOSqlsrv/Driver.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOSqlsrv/Driver.php
deleted file mode 100644
index 6d6c4844d..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOSqlsrv/Driver.php
+++ /dev/null
@@ -1,93 +0,0 @@
- $value) {
- if (is_int($option)) {
- $pdoOptions[$option] = $value;
- } else {
- $dsnOptions[$option] = $value;
- }
- }
-
- return new Connection(
- $this->_constructPdoDsn($params, $dsnOptions),
- $username,
- $password,
- $pdoOptions
- );
- }
-
- /**
- * Constructs the Sqlsrv PDO DSN.
- *
- * @param mixed[] $params
- * @param string[] $connectionOptions
- *
- * @return string The DSN.
- */
- private function _constructPdoDsn(array $params, array $connectionOptions)
- {
- $dsn = 'sqlsrv:server=';
-
- if (isset($params['host'])) {
- $dsn .= $params['host'];
- }
-
- if (isset($params['port']) && ! empty($params['port'])) {
- $dsn .= ',' . $params['port'];
- }
-
- if (isset($params['dbname'])) {
- $connectionOptions['Database'] = $params['dbname'];
- }
-
- if (isset($params['MultipleActiveResultSets'])) {
- $connectionOptions['MultipleActiveResultSets'] = $params['MultipleActiveResultSets'] ? 'true' : 'false';
- }
-
- return $dsn . $this->getConnectionOptionsDsn($connectionOptions);
- }
-
- /**
- * Converts a connection options array to the DSN
- *
- * @param string[] $connectionOptions
- */
- private function getConnectionOptionsDsn(array $connectionOptions) : string
- {
- $connectionOptionsDsn = '';
-
- foreach ($connectionOptions as $paramName => $paramValue) {
- $connectionOptionsDsn .= sprintf(';%s=%s', $paramName, $paramValue);
- }
-
- return $connectionOptionsDsn;
- }
-
- /**
- * {@inheritdoc}
- *
- * @deprecated
- */
- public function getName()
- {
- return 'pdo_sqlsrv';
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOSqlsrv/Statement.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOSqlsrv/Statement.php
deleted file mode 100644
index 6803bb14e..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOSqlsrv/Statement.php
+++ /dev/null
@@ -1,35 +0,0 @@
-bindParam($param, $value, $type);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php
deleted file mode 100644
index 5be4f2c04..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php
+++ /dev/null
@@ -1,228 +0,0 @@
- PDO::PARAM_NULL,
- ParameterType::INTEGER => PDO::PARAM_INT,
- ParameterType::STRING => PDO::PARAM_STR,
- ParameterType::BINARY => PDO::PARAM_LOB,
- ParameterType::LARGE_OBJECT => PDO::PARAM_LOB,
- ParameterType::BOOLEAN => PDO::PARAM_BOOL,
- ];
-
- private const FETCH_MODE_MAP = [
- FetchMode::ASSOCIATIVE => PDO::FETCH_ASSOC,
- FetchMode::NUMERIC => PDO::FETCH_NUM,
- FetchMode::MIXED => PDO::FETCH_BOTH,
- FetchMode::STANDARD_OBJECT => PDO::FETCH_OBJ,
- FetchMode::COLUMN => PDO::FETCH_COLUMN,
- FetchMode::CUSTOM_OBJECT => PDO::FETCH_CLASS,
- ];
-
- /**
- * Protected constructor.
- */
- protected function __construct()
- {
- }
-
- /**
- * {@inheritdoc}
- */
- public function setFetchMode($fetchMode, $arg2 = null, $arg3 = null)
- {
- $fetchMode = $this->convertFetchMode($fetchMode);
-
- // This thin wrapper is necessary to shield against the weird signature
- // of PDOStatement::setFetchMode(): even if the second and third
- // parameters are optional, PHP will not let us remove it from this
- // declaration.
- try {
- if ($arg2 === null && $arg3 === null) {
- return parent::setFetchMode($fetchMode);
- }
-
- if ($arg3 === null) {
- return parent::setFetchMode($fetchMode, $arg2);
- }
-
- return parent::setFetchMode($fetchMode, $arg2, $arg3);
- } catch (\PDOException $exception) {
- throw new PDOException($exception);
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function bindValue($param, $value, $type = ParameterType::STRING)
- {
- $type = $this->convertParamType($type);
-
- try {
- return parent::bindValue($param, $value, $type);
- } catch (\PDOException $exception) {
- throw new PDOException($exception);
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function bindParam($column, &$variable, $type = ParameterType::STRING, $length = null, $driverOptions = null)
- {
- $type = $this->convertParamType($type);
-
- try {
- return parent::bindParam($column, $variable, $type, ...array_slice(func_get_args(), 3));
- } catch (\PDOException $exception) {
- throw new PDOException($exception);
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function closeCursor()
- {
- try {
- return parent::closeCursor();
- } catch (\PDOException $exception) {
- // Exceptions not allowed by the interface.
- // In case driver implementations do not adhere to the interface, silence exceptions here.
- return true;
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function execute($params = null)
- {
- try {
- return parent::execute($params);
- } catch (\PDOException $exception) {
- throw new PDOException($exception);
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetch($fetchMode = null, $cursorOrientation = PDO::FETCH_ORI_NEXT, $cursorOffset = 0)
- {
- $args = func_get_args();
-
- if (isset($args[0])) {
- $args[0] = $this->convertFetchMode($args[0]);
- }
-
- try {
- return parent::fetch(...$args);
- } catch (\PDOException $exception) {
- throw new PDOException($exception);
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetchAll($fetchMode = null, $fetchArgument = null, $ctorArgs = null)
- {
- $args = func_get_args();
-
- if (isset($args[0])) {
- $args[0] = $this->convertFetchMode($args[0]);
- }
-
- if ($fetchMode === null && $fetchArgument === null && $ctorArgs === null) {
- $args = [];
- } elseif ($fetchArgument === null && $ctorArgs === null) {
- $args = [$fetchMode];
- } elseif ($ctorArgs === null) {
- $args = [$fetchMode, $fetchArgument];
- } else {
- $args = [$fetchMode, $fetchArgument, $ctorArgs];
- }
-
- try {
- $data = parent::fetchAll(...$args);
- assert(is_array($data));
-
- return $data;
- } catch (\PDOException $exception) {
- throw new PDOException($exception);
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetchColumn($columnIndex = 0)
- {
- try {
- return parent::fetchColumn($columnIndex);
- } catch (\PDOException $exception) {
- throw new PDOException($exception);
- }
- }
-
- /**
- * Converts DBAL parameter type to PDO parameter type
- *
- * @param int $type Parameter type
- */
- private function convertParamType(int $type) : int
- {
- if (! isset(self::PARAM_TYPE_MAP[$type])) {
- // TODO: next major: throw an exception
- @trigger_error(sprintf(
- 'Using a PDO parameter type (%d given) is deprecated and will cause an error in Doctrine 3.0',
- $type
- ), E_USER_DEPRECATED);
-
- return $type;
- }
-
- return self::PARAM_TYPE_MAP[$type];
- }
-
- /**
- * Converts DBAL fetch mode to PDO fetch mode
- *
- * @param int $fetchMode Fetch mode
- */
- private function convertFetchMode(int $fetchMode) : int
- {
- if (! isset(self::FETCH_MODE_MAP[$fetchMode])) {
- // TODO: next major: throw an exception
- @trigger_error(sprintf(
- 'Using a PDO fetch mode or their combination (%d given)' .
- ' is deprecated and will cause an error in Doctrine 3.0',
- $fetchMode
- ), E_USER_DEPRECATED);
-
- return $fetchMode;
- }
-
- return self::FETCH_MODE_MAP[$fetchMode];
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PingableConnection.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PingableConnection.php
deleted file mode 100644
index 06bfb9a7f..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PingableConnection.php
+++ /dev/null
@@ -1,17 +0,0 @@
-buildDsn(
- $params['host'] ?? null,
- $params['port'] ?? null,
- $params['server'] ?? null,
- $params['dbname'] ?? null,
- $username,
- $password,
- $driverOptions
- ),
- $params['persistent'] ?? false
- );
- } catch (SQLAnywhereException $e) {
- throw DBALException::driverException($this, $e);
- }
- }
-
- /**
- * {@inheritdoc}
- *
- * @deprecated
- */
- public function getName()
- {
- return 'sqlanywhere';
- }
-
- /**
- * Build the connection string for given connection parameters and driver options.
- *
- * @param string $host Host address to connect to.
- * @param int $port Port to use for the connection (default to SQL Anywhere standard port 2638).
- * @param string $server Database server name on the host to connect to.
- * SQL Anywhere allows multiple database server instances on the same host,
- * therefore specifying the server instance name to use is mandatory.
- * @param string $dbname Name of the database on the server instance to connect to.
- * @param string $username User name to use for connection authentication.
- * @param string $password Password to use for connection authentication.
- * @param mixed[] $driverOptions Additional parameters to use for the connection.
- *
- * @return string
- */
- private function buildDsn($host, $port, $server, $dbname, $username = null, $password = null, array $driverOptions = [])
- {
- $host = $host ?: 'localhost';
- $port = $port ?: 2638;
-
- if (! empty($server)) {
- $server = ';ServerName=' . $server;
- }
-
- return 'HOST=' . $host . ':' . $port .
- $server .
- ';DBN=' . $dbname .
- ';UID=' . $username .
- ';PWD=' . $password .
- ';' . implode(
- ';',
- array_map(static function ($key, $value) {
- return $key . '=' . $value;
- }, array_keys($driverOptions), $driverOptions)
- );
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLAnywhere/SQLAnywhereConnection.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLAnywhere/SQLAnywhereConnection.php
deleted file mode 100644
index d47782003..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLAnywhere/SQLAnywhereConnection.php
+++ /dev/null
@@ -1,215 +0,0 @@
-connection = $persistent ? @sasql_pconnect($dsn) : @sasql_connect($dsn);
-
- if (! is_resource($this->connection)) {
- throw SQLAnywhereException::fromSQLAnywhereError();
- }
-
- // Disable PHP warnings on error.
- if (! sasql_set_option($this->connection, 'verbose_errors', false)) {
- throw SQLAnywhereException::fromSQLAnywhereError($this->connection);
- }
-
- // Enable auto committing by default.
- if (! sasql_set_option($this->connection, 'auto_commit', 'on')) {
- throw SQLAnywhereException::fromSQLAnywhereError($this->connection);
- }
- }
-
- /**
- * {@inheritdoc}
- *
- * @throws SQLAnywhereException
- */
- public function beginTransaction()
- {
- if (! sasql_set_option($this->connection, 'auto_commit', 'off')) {
- throw SQLAnywhereException::fromSQLAnywhereError($this->connection);
- }
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- *
- * @throws SQLAnywhereException
- */
- public function commit()
- {
- if (! sasql_commit($this->connection)) {
- throw SQLAnywhereException::fromSQLAnywhereError($this->connection);
- }
-
- $this->endTransaction();
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function errorCode()
- {
- return sasql_errorcode($this->connection);
- }
-
- /**
- * {@inheritdoc}
- */
- public function errorInfo()
- {
- return sasql_error($this->connection);
- }
-
- /**
- * {@inheritdoc}
- */
- public function exec($statement)
- {
- if (sasql_real_query($this->connection, $statement) === false) {
- throw SQLAnywhereException::fromSQLAnywhereError($this->connection);
- }
-
- return sasql_affected_rows($this->connection);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getServerVersion()
- {
- $version = $this->query("SELECT PROPERTY('ProductVersion')")->fetchColumn();
-
- assert(is_string($version));
-
- return $version;
- }
-
- /**
- * {@inheritdoc}
- */
- public function lastInsertId($name = null)
- {
- if ($name === null) {
- return sasql_insert_id($this->connection);
- }
-
- return $this->query('SELECT ' . $name . '.CURRVAL')->fetchColumn();
- }
-
- /**
- * {@inheritdoc}
- */
- public function prepare($prepareString)
- {
- return new SQLAnywhereStatement($this->connection, $prepareString);
- }
-
- /**
- * {@inheritdoc}
- */
- public function query()
- {
- $args = func_get_args();
- $stmt = $this->prepare($args[0]);
-
- $stmt->execute();
-
- return $stmt;
- }
-
- /**
- * {@inheritdoc}
- */
- public function quote($input, $type = ParameterType::STRING)
- {
- if (is_int($input) || is_float($input)) {
- return $input;
- }
-
- return "'" . sasql_escape_string($this->connection, $input) . "'";
- }
-
- /**
- * {@inheritdoc}
- */
- public function requiresQueryForServerVersion()
- {
- return true;
- }
-
- /**
- * {@inheritdoc}
- *
- * @throws SQLAnywhereException
- */
- public function rollBack()
- {
- if (! sasql_rollback($this->connection)) {
- throw SQLAnywhereException::fromSQLAnywhereError($this->connection);
- }
-
- $this->endTransaction();
-
- return true;
- }
-
- /**
- * Ends transactional mode and enables auto commit again.
- *
- * @return bool Whether or not ending transactional mode succeeded.
- *
- * @throws SQLAnywhereException
- */
- private function endTransaction()
- {
- if (! sasql_set_option($this->connection, 'auto_commit', 'on')) {
- throw SQLAnywhereException::fromSQLAnywhereError($this->connection);
- }
-
- return true;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLAnywhere/SQLAnywhereException.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLAnywhere/SQLAnywhereException.php
deleted file mode 100644
index 0f8bc3e57..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLAnywhere/SQLAnywhereException.php
+++ /dev/null
@@ -1,71 +0,0 @@
-conn = $conn;
- $this->stmt = sasql_prepare($conn, $sql);
-
- if (! is_resource($this->stmt)) {
- throw SQLAnywhereException::fromSQLAnywhereError($conn);
- }
- }
-
- /**
- * {@inheritdoc}
- *
- * @throws SQLAnywhereException
- */
- public function bindParam($column, &$variable, $type = ParameterType::STRING, $length = null)
- {
- switch ($type) {
- case ParameterType::INTEGER:
- case ParameterType::BOOLEAN:
- $type = 'i';
- break;
-
- case ParameterType::LARGE_OBJECT:
- $type = 'b';
- break;
-
- case ParameterType::NULL:
- case ParameterType::STRING:
- case ParameterType::BINARY:
- $type = 's';
- break;
-
- default:
- throw new SQLAnywhereException('Unknown type: ' . $type);
- }
-
- $this->boundValues[$column] =& $variable;
-
- if (! sasql_stmt_bind_param_ex($this->stmt, $column - 1, $variable, $type, $variable === null)) {
- throw SQLAnywhereException::fromSQLAnywhereError($this->conn, $this->stmt);
- }
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function bindValue($param, $value, $type = ParameterType::STRING)
- {
- return $this->bindParam($param, $value, $type);
- }
-
- /**
- * {@inheritdoc}
- *
- * @throws SQLAnywhereException
- */
- public function closeCursor()
- {
- if (! sasql_stmt_reset($this->stmt)) {
- throw SQLAnywhereException::fromSQLAnywhereError($this->conn, $this->stmt);
- }
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function columnCount()
- {
- return sasql_stmt_field_count($this->stmt);
- }
-
- /**
- * {@inheritdoc}
- */
- public function errorCode()
- {
- return sasql_stmt_errno($this->stmt);
- }
-
- /**
- * {@inheritdoc}
- */
- public function errorInfo()
- {
- return sasql_stmt_error($this->stmt);
- }
-
- /**
- * {@inheritdoc}
- *
- * @throws SQLAnywhereException
- */
- public function execute($params = null)
- {
- if (is_array($params)) {
- $hasZeroIndex = array_key_exists(0, $params);
-
- foreach ($params as $key => $val) {
- if ($hasZeroIndex && is_int($key)) {
- $this->bindValue($key + 1, $val);
- } else {
- $this->bindValue($key, $val);
- }
- }
- }
-
- if (! sasql_stmt_execute($this->stmt)) {
- throw SQLAnywhereException::fromSQLAnywhereError($this->conn, $this->stmt);
- }
-
- $this->result = sasql_stmt_result_metadata($this->stmt);
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- *
- * @throws SQLAnywhereException
- */
- public function fetch($fetchMode = null, $cursorOrientation = PDO::FETCH_ORI_NEXT, $cursorOffset = 0)
- {
- if (! is_resource($this->result)) {
- return false;
- }
-
- $fetchMode = $fetchMode ?: $this->defaultFetchMode;
-
- switch ($fetchMode) {
- case FetchMode::COLUMN:
- return $this->fetchColumn();
-
- case FetchMode::ASSOCIATIVE:
- return sasql_fetch_assoc($this->result);
-
- case FetchMode::MIXED:
- return sasql_fetch_array($this->result, SASQL_BOTH);
-
- case FetchMode::CUSTOM_OBJECT:
- $className = $this->defaultFetchClass;
- $ctorArgs = $this->defaultFetchClassCtorArgs;
-
- if (func_num_args() >= 2) {
- $args = func_get_args();
- $className = $args[1];
- $ctorArgs = $args[2] ?? [];
- }
-
- $result = sasql_fetch_object($this->result);
-
- if ($result instanceof stdClass) {
- $result = $this->castObject($result, $className, $ctorArgs);
- }
-
- return $result;
-
- case FetchMode::NUMERIC:
- return sasql_fetch_row($this->result);
-
- case FetchMode::STANDARD_OBJECT:
- return sasql_fetch_object($this->result);
-
- default:
- throw new SQLAnywhereException('Fetch mode is not supported: ' . $fetchMode);
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetchAll($fetchMode = null, $fetchArgument = null, $ctorArgs = null)
- {
- $rows = [];
-
- switch ($fetchMode) {
- case FetchMode::CUSTOM_OBJECT:
- while (($row = $this->fetch(...func_get_args())) !== false) {
- $rows[] = $row;
- }
- break;
-
- case FetchMode::COLUMN:
- while (($row = $this->fetchColumn()) !== false) {
- $rows[] = $row;
- }
- break;
-
- default:
- while (($row = $this->fetch($fetchMode)) !== false) {
- $rows[] = $row;
- }
- }
-
- return $rows;
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetchColumn($columnIndex = 0)
- {
- $row = $this->fetch(FetchMode::NUMERIC);
-
- if ($row === false) {
- return false;
- }
-
- return $row[$columnIndex] ?? null;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getIterator()
- {
- return new StatementIterator($this);
- }
-
- /**
- * {@inheritdoc}
- */
- public function rowCount()
- {
- return sasql_stmt_affected_rows($this->stmt);
- }
-
- /**
- * {@inheritdoc}
- */
- public function setFetchMode($fetchMode, $arg2 = null, $arg3 = null)
- {
- $this->defaultFetchMode = $fetchMode;
- $this->defaultFetchClass = $arg2 ?: $this->defaultFetchClass;
- $this->defaultFetchClassCtorArgs = $arg3 ? (array) $arg3 : $this->defaultFetchClassCtorArgs;
- }
-
- /**
- * Casts a stdClass object to the given class name mapping its' properties.
- *
- * @param stdClass $sourceObject Object to cast from.
- * @param string|object $destinationClass Name of the class or class instance to cast to.
- * @param mixed[] $ctorArgs Arguments to use for constructing the destination class instance.
- *
- * @return object
- *
- * @throws SQLAnywhereException
- */
- private function castObject(stdClass $sourceObject, $destinationClass, array $ctorArgs = [])
- {
- if (! is_string($destinationClass)) {
- if (! is_object($destinationClass)) {
- throw new SQLAnywhereException(sprintf(
- 'Destination class has to be of type string or object, %s given.',
- gettype($destinationClass)
- ));
- }
- } else {
- $destinationClass = new ReflectionClass($destinationClass);
- $destinationClass = $destinationClass->newInstanceArgs($ctorArgs);
- }
-
- $sourceReflection = new ReflectionObject($sourceObject);
- $destinationClassReflection = new ReflectionObject($destinationClass);
-
- foreach ($sourceReflection->getProperties() as $sourceProperty) {
- $sourceProperty->setAccessible(true);
-
- $name = $sourceProperty->getName();
- $value = $sourceProperty->getValue($sourceObject);
-
- if ($destinationClassReflection->hasProperty($name)) {
- $destinationProperty = $destinationClassReflection->getProperty($name);
-
- $destinationProperty->setAccessible(true);
- $destinationProperty->setValue($destinationClass, $value);
- } else {
- $destinationClass->$name = $value;
- }
- }
-
- return $destinationClass;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLSrv/Driver.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLSrv/Driver.php
deleted file mode 100644
index 848ab5eef..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLSrv/Driver.php
+++ /dev/null
@@ -1,58 +0,0 @@
-id = $id;
- }
-
- /**
- * @return int
- */
- public function getId()
- {
- return $this->id;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvConnection.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvConnection.php
deleted file mode 100644
index 35ad913ff..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvConnection.php
+++ /dev/null
@@ -1,197 +0,0 @@
-conn = $conn;
- $this->lastInsertId = new LastInsertId();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getServerVersion()
- {
- $serverInfo = sqlsrv_server_info($this->conn);
-
- return $serverInfo['SQLServerVersion'];
- }
-
- /**
- * {@inheritdoc}
- */
- public function requiresQueryForServerVersion()
- {
- return false;
- }
-
- /**
- * {@inheritDoc}
- */
- public function prepare($sql)
- {
- return new SQLSrvStatement($this->conn, $sql, $this->lastInsertId);
- }
-
- /**
- * {@inheritDoc}
- */
- public function query()
- {
- $args = func_get_args();
- $sql = $args[0];
- $stmt = $this->prepare($sql);
- $stmt->execute();
-
- return $stmt;
- }
-
- /**
- * {@inheritDoc}
- */
- public function quote($value, $type = ParameterType::STRING)
- {
- if (is_int($value)) {
- return $value;
- }
-
- if (is_float($value)) {
- return sprintf('%F', $value);
- }
-
- return "'" . str_replace("'", "''", $value) . "'";
- }
-
- /**
- * {@inheritDoc}
- */
- public function exec($statement)
- {
- $stmt = sqlsrv_query($this->conn, $statement);
-
- if ($stmt === false) {
- throw SQLSrvException::fromSqlSrvErrors();
- }
-
- $rowsAffected = sqlsrv_rows_affected($stmt);
-
- if ($rowsAffected === false) {
- throw SQLSrvException::fromSqlSrvErrors();
- }
-
- return $rowsAffected;
- }
-
- /**
- * {@inheritDoc}
- */
- public function lastInsertId($name = null)
- {
- if ($name !== null) {
- $stmt = $this->prepare('SELECT CONVERT(VARCHAR(MAX), current_value) FROM sys.sequences WHERE name = ?');
- $stmt->execute([$name]);
- } else {
- $stmt = $this->query('SELECT @@IDENTITY');
- }
-
- return $stmt->fetchColumn();
- }
-
- /**
- * {@inheritDoc}
- */
- public function beginTransaction()
- {
- if (! sqlsrv_begin_transaction($this->conn)) {
- throw SQLSrvException::fromSqlSrvErrors();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public function commit()
- {
- if (! sqlsrv_commit($this->conn)) {
- throw SQLSrvException::fromSqlSrvErrors();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public function rollBack()
- {
- if (! sqlsrv_rollback($this->conn)) {
- throw SQLSrvException::fromSqlSrvErrors();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public function errorCode()
- {
- $errors = sqlsrv_errors(SQLSRV_ERR_ERRORS);
- if ($errors) {
- return $errors[0]['code'];
- }
-
- return false;
- }
-
- /**
- * {@inheritDoc}
- */
- public function errorInfo()
- {
- return (array) sqlsrv_errors(SQLSRV_ERR_ERRORS);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvException.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvException.php
deleted file mode 100644
index 1c1e8c472..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvException.php
+++ /dev/null
@@ -1,43 +0,0 @@
- SQLSRV_FETCH_BOTH,
- FetchMode::ASSOCIATIVE => SQLSRV_FETCH_ASSOC,
- FetchMode::NUMERIC => SQLSRV_FETCH_NUMERIC,
- ];
-
- /**
- * The name of the default class to instantiate when fetching class instances.
- *
- * @var string
- */
- private $defaultFetchClass = '\stdClass';
-
- /**
- * The constructor arguments for the default class to instantiate when fetching class instances.
- *
- * @var mixed[]
- */
- private $defaultFetchClassCtorArgs = [];
-
- /**
- * The fetch style.
- *
- * @var int
- */
- private $defaultFetchMode = FetchMode::MIXED;
-
- /**
- * The last insert ID.
- *
- * @var LastInsertId|null
- */
- private $lastInsertId;
-
- /**
- * Indicates whether the statement is in the state when fetching results is possible
- *
- * @var bool
- */
- private $result = false;
-
- /**
- * Append to any INSERT query to retrieve the last insert id.
- *
- * @deprecated This constant has been deprecated and will be made private in 3.0
- */
- public const LAST_INSERT_ID_SQL = ';SELECT SCOPE_IDENTITY() AS LastInsertId;';
-
- /**
- * @param resource $conn
- * @param string $sql
- */
- public function __construct($conn, $sql, ?LastInsertId $lastInsertId = null)
- {
- $this->conn = $conn;
- $this->sql = $sql;
-
- if (stripos($sql, 'INSERT INTO ') !== 0) {
- return;
- }
-
- $this->sql .= self::LAST_INSERT_ID_SQL;
- $this->lastInsertId = $lastInsertId;
- }
-
- /**
- * {@inheritdoc}
- */
- public function bindValue($param, $value, $type = ParameterType::STRING)
- {
- if (! is_numeric($param)) {
- throw new SQLSrvException(
- 'sqlsrv does not support named parameters to queries, use question mark (?) placeholders instead.'
- );
- }
-
- $this->variables[$param] = $value;
- $this->types[$param] = $type;
- }
-
- /**
- * {@inheritdoc}
- */
- public function bindParam($column, &$variable, $type = ParameterType::STRING, $length = null)
- {
- if (! is_numeric($column)) {
- throw new SQLSrvException('sqlsrv does not support named parameters to queries, use question mark (?) placeholders instead.');
- }
-
- $this->variables[$column] =& $variable;
- $this->types[$column] = $type;
-
- // unset the statement resource if it exists as the new one will need to be bound to the new variable
- $this->stmt = null;
- }
-
- /**
- * {@inheritdoc}
- */
- public function closeCursor()
- {
- // not having the result means there's nothing to close
- if ($this->stmt === null || ! $this->result) {
- return true;
- }
-
- // emulate it by fetching and discarding rows, similarly to what PDO does in this case
- // @link http://php.net/manual/en/pdostatement.closecursor.php
- // @link https://github.com/php/php-src/blob/php-7.0.11/ext/pdo/pdo_stmt.c#L2075
- // deliberately do not consider multiple result sets, since doctrine/dbal doesn't support them
- while (sqlsrv_fetch($this->stmt)) {
- }
-
- $this->result = false;
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function columnCount()
- {
- if ($this->stmt === null) {
- return 0;
- }
-
- return sqlsrv_num_fields($this->stmt) ?: 0;
- }
-
- /**
- * {@inheritdoc}
- */
- public function errorCode()
- {
- $errors = sqlsrv_errors(SQLSRV_ERR_ERRORS);
- if ($errors) {
- return $errors[0]['code'];
- }
-
- return false;
- }
-
- /**
- * {@inheritdoc}
- */
- public function errorInfo()
- {
- return (array) sqlsrv_errors(SQLSRV_ERR_ERRORS);
- }
-
- /**
- * {@inheritdoc}
- */
- public function execute($params = null)
- {
- if ($params) {
- $hasZeroIndex = array_key_exists(0, $params);
-
- foreach ($params as $key => $val) {
- if ($hasZeroIndex && is_int($key)) {
- $this->bindValue($key + 1, $val);
- } else {
- $this->bindValue($key, $val);
- }
- }
- }
-
- if (! $this->stmt) {
- $this->stmt = $this->prepare();
- }
-
- if (! sqlsrv_execute($this->stmt)) {
- throw SQLSrvException::fromSqlSrvErrors();
- }
-
- if ($this->lastInsertId) {
- sqlsrv_next_result($this->stmt);
- sqlsrv_fetch($this->stmt);
- $this->lastInsertId->setId(sqlsrv_get_field($this->stmt, 0));
- }
-
- $this->result = true;
- }
-
- /**
- * Prepares SQL Server statement resource
- *
- * @return resource
- *
- * @throws SQLSrvException
- */
- private function prepare()
- {
- $params = [];
-
- foreach ($this->variables as $column => &$variable) {
- switch ($this->types[$column]) {
- case ParameterType::LARGE_OBJECT:
- $params[$column - 1] = [
- &$variable,
- SQLSRV_PARAM_IN,
- SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_BINARY),
- SQLSRV_SQLTYPE_VARBINARY('max'),
- ];
- break;
-
- case ParameterType::BINARY:
- $params[$column - 1] = [
- &$variable,
- SQLSRV_PARAM_IN,
- SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_BINARY),
- ];
- break;
-
- default:
- $params[$column - 1] =& $variable;
- break;
- }
- }
-
- $stmt = sqlsrv_prepare($this->conn, $this->sql, $params);
-
- if (! $stmt) {
- throw SQLSrvException::fromSqlSrvErrors();
- }
-
- return $stmt;
- }
-
- /**
- * {@inheritdoc}
- */
- public function setFetchMode($fetchMode, $arg2 = null, $arg3 = null)
- {
- $this->defaultFetchMode = $fetchMode;
- $this->defaultFetchClass = $arg2 ?: $this->defaultFetchClass;
- $this->defaultFetchClassCtorArgs = $arg3 ? (array) $arg3 : $this->defaultFetchClassCtorArgs;
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getIterator()
- {
- return new StatementIterator($this);
- }
-
- /**
- * {@inheritdoc}
- *
- * @throws SQLSrvException
- */
- public function fetch($fetchMode = null, $cursorOrientation = PDO::FETCH_ORI_NEXT, $cursorOffset = 0)
- {
- // do not try fetching from the statement if it's not expected to contain result
- // in order to prevent exceptional situation
- if ($this->stmt === null || ! $this->result) {
- return false;
- }
-
- $args = func_get_args();
- $fetchMode = $fetchMode ?: $this->defaultFetchMode;
-
- if ($fetchMode === FetchMode::COLUMN) {
- return $this->fetchColumn();
- }
-
- if (isset(self::$fetchMap[$fetchMode])) {
- return sqlsrv_fetch_array($this->stmt, self::$fetchMap[$fetchMode]) ?: false;
- }
-
- if (in_array($fetchMode, [FetchMode::STANDARD_OBJECT, FetchMode::CUSTOM_OBJECT], true)) {
- $className = $this->defaultFetchClass;
- $ctorArgs = $this->defaultFetchClassCtorArgs;
-
- if (count($args) >= 2) {
- $className = $args[1];
- $ctorArgs = $args[2] ?? [];
- }
-
- return sqlsrv_fetch_object($this->stmt, $className, $ctorArgs) ?: false;
- }
-
- throw new SQLSrvException('Fetch mode is not supported!');
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetchAll($fetchMode = null, $fetchArgument = null, $ctorArgs = null)
- {
- $rows = [];
-
- switch ($fetchMode) {
- case FetchMode::CUSTOM_OBJECT:
- while (($row = $this->fetch(...func_get_args())) !== false) {
- $rows[] = $row;
- }
- break;
-
- case FetchMode::COLUMN:
- while (($row = $this->fetchColumn()) !== false) {
- $rows[] = $row;
- }
- break;
-
- default:
- while (($row = $this->fetch($fetchMode)) !== false) {
- $rows[] = $row;
- }
- }
-
- return $rows;
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetchColumn($columnIndex = 0)
- {
- $row = $this->fetch(FetchMode::NUMERIC);
-
- if ($row === false) {
- return false;
- }
-
- return $row[$columnIndex] ?? null;
- }
-
- /**
- * {@inheritdoc}
- */
- public function rowCount()
- {
- if ($this->stmt === null) {
- return 0;
- }
-
- return sqlsrv_rows_affected($this->stmt) ?: 0;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/ServerInfoAwareConnection.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/ServerInfoAwareConnection.php
deleted file mode 100644
index c97a60fa3..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/ServerInfoAwareConnection.php
+++ /dev/null
@@ -1,23 +0,0 @@
-bindValue(),
- * the variable is bound as a reference and will only be evaluated at the time
- * that PDOStatement->execute() is called.
- *
- * As mentioned above, the named parameters are not natively supported by the mysqli driver, use executeQuery(),
- * fetchAll(), fetchArray(), fetchColumn(), fetchAssoc() methods to have the named parameter emulated by doctrine.
- *
- * Most parameters are input parameters, that is, parameters that are
- * used in a read-only fashion to build up the query. Some drivers support the invocation
- * of stored procedures that return data as output parameters, and some also as input/output
- * parameters that both send in data and are updated to receive it.
- *
- * @param mixed $column Parameter identifier. For a prepared statement using named placeholders,
- * this will be a parameter name of the form :name. For a prepared statement using
- * question mark placeholders, this will be the 1-indexed position of the parameter.
- * @param mixed $variable Name of the PHP variable to bind to the SQL statement parameter.
- * @param int $type Explicit data type for the parameter using the {@link \Doctrine\DBAL\ParameterType}
- * constants. To return an INOUT parameter from a stored procedure, use the bitwise
- * OR operator to set the PDO::PARAM_INPUT_OUTPUT bits for the data_type parameter.
- * @param int|null $length You must specify maxlength when using an OUT bind
- * so that PHP allocates enough memory to hold the returned value.
- *
- * @return bool TRUE on success or FALSE on failure.
- */
- public function bindParam($column, &$variable, $type = ParameterType::STRING, $length = null);
-
- /**
- * Fetches the SQLSTATE associated with the last operation on the statement handle.
- *
- * @see Doctrine_Adapter_Interface::errorCode()
- *
- * @return string|int|bool The error code string.
- */
- public function errorCode();
-
- /**
- * Fetches extended error information associated with the last operation on the statement handle.
- *
- * @return mixed[] The error info array.
- */
- public function errorInfo();
-
- /**
- * Executes a prepared statement
- *
- * If the prepared statement included parameter markers, you must either:
- * call PDOStatement->bindParam() to bind PHP variables to the parameter markers:
- * bound variables pass their value as input and receive the output value,
- * if any, of their associated parameter markers or pass an array of input-only
- * parameter values.
- *
- * @param mixed[]|null $params An array of values with as many elements as there are
- * bound parameters in the SQL statement being executed.
- *
- * @return bool TRUE on success or FALSE on failure.
- */
- public function execute($params = null);
-
- /**
- * Returns the number of rows affected by the last DELETE, INSERT, or UPDATE statement
- * executed by the corresponding object.
- *
- * If the last SQL statement executed by the associated Statement object was a SELECT statement,
- * some databases may return the number of rows returned by that statement. However,
- * this behaviour is not guaranteed for all databases and should not be
- * relied on for portable applications.
- *
- * @return int The number of rows.
- */
- public function rowCount();
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/StatementIterator.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/StatementIterator.php
deleted file mode 100644
index 6b3307da2..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/StatementIterator.php
+++ /dev/null
@@ -1,26 +0,0 @@
-statement = $statement;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getIterator()
- {
- while (($result = $this->statement->fetch()) !== false) {
- yield $result;
- }
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/DriverManager.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/DriverManager.php
deleted file mode 100644
index 6888d73b0..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/DriverManager.php
+++ /dev/null
@@ -1,442 +0,0 @@
- PDOMySQLDriver::class,
- 'pdo_sqlite' => PDOSQLiteDriver::class,
- 'pdo_pgsql' => PDOPgSQLDriver::class,
- 'pdo_oci' => PDOOCIDriver::class,
- 'oci8' => OCI8Driver::class,
- 'ibm_db2' => DB2Driver::class,
- 'pdo_sqlsrv' => PDOSQLSrvDriver::class,
- 'mysqli' => MySQLiDriver::class,
- 'drizzle_pdo_mysql' => DrizzlePDOMySQLDriver::class,
- 'sqlanywhere' => SQLAnywhereDriver::class,
- 'sqlsrv' => SQLSrvDriver::class,
- ];
-
- /**
- * List of URL schemes from a database URL and their mappings to driver.
- *
- * @var string[]
- */
- private static $driverSchemeAliases = [
- 'db2' => 'ibm_db2',
- 'mssql' => 'pdo_sqlsrv',
- 'mysql' => 'pdo_mysql',
- 'mysql2' => 'pdo_mysql', // Amazon RDS, for some weird reason
- 'postgres' => 'pdo_pgsql',
- 'postgresql' => 'pdo_pgsql',
- 'pgsql' => 'pdo_pgsql',
- 'sqlite' => 'pdo_sqlite',
- 'sqlite3' => 'pdo_sqlite',
- ];
-
- /**
- * Private constructor. This class cannot be instantiated.
- */
- private function __construct()
- {
- }
-
- /**
- * Creates a connection object based on the specified parameters.
- * This method returns a Doctrine\DBAL\Connection which wraps the underlying
- * driver connection.
- *
- * $params must contain at least one of the following.
- *
- * Either 'driver' with one of the following values:
- *
- * pdo_mysql
- * pdo_sqlite
- * pdo_pgsql
- * pdo_oci (unstable)
- * pdo_sqlsrv
- * pdo_sqlsrv
- * mysqli
- * sqlanywhere
- * sqlsrv
- * ibm_db2 (unstable)
- * drizzle_pdo_mysql
- *
- * OR 'driverClass' that contains the full class name (with namespace) of the
- * driver class to instantiate.
- *
- * Other (optional) parameters:
- *
- * user (string):
- * The username to use when connecting.
- *
- * password (string):
- * The password to use when connecting.
- *
- * driverOptions (array):
- * Any additional driver-specific options for the driver. These are just passed
- * through to the driver.
- *
- * pdo:
- * You can pass an existing PDO instance through this parameter. The PDO
- * instance will be wrapped in a Doctrine\DBAL\Connection.
- *
- * wrapperClass:
- * You may specify a custom wrapper class through the 'wrapperClass'
- * parameter but this class MUST inherit from Doctrine\DBAL\Connection.
- *
- * driverClass:
- * The driver class to use.
- *
- * @param mixed[] $params The parameters.
- * @param Configuration|null $config The configuration to use.
- * @param EventManager|null $eventManager The event manager to use.
- *
- * @throws DBALException
- */
- public static function getConnection(
- array $params,
- ?Configuration $config = null,
- ?EventManager $eventManager = null
- ) : Connection {
- // create default config and event manager, if not set
- if (! $config) {
- $config = new Configuration();
- }
- if (! $eventManager) {
- $eventManager = new EventManager();
- }
-
- $params = self::parseDatabaseUrl($params);
-
- // URL support for MasterSlaveConnection
- if (isset($params['master'])) {
- $params['master'] = self::parseDatabaseUrl($params['master']);
- }
-
- if (isset($params['slaves'])) {
- foreach ($params['slaves'] as $key => $slaveParams) {
- $params['slaves'][$key] = self::parseDatabaseUrl($slaveParams);
- }
- }
-
- // URL support for PoolingShardConnection
- if (isset($params['global'])) {
- $params['global'] = self::parseDatabaseUrl($params['global']);
- }
-
- if (isset($params['shards'])) {
- foreach ($params['shards'] as $key => $shardParams) {
- $params['shards'][$key] = self::parseDatabaseUrl($shardParams);
- }
- }
-
- // check for existing pdo object
- if (isset($params['pdo']) && ! $params['pdo'] instanceof PDO) {
- throw DBALException::invalidPdoInstance();
- }
-
- if (isset($params['pdo'])) {
- $params['pdo']->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
- $params['driver'] = 'pdo_' . $params['pdo']->getAttribute(PDO::ATTR_DRIVER_NAME);
- } else {
- self::_checkParams($params);
- }
-
- $className = $params['driverClass'] ?? self::$_driverMap[$params['driver']];
-
- $driver = new $className();
-
- $wrapperClass = Connection::class;
- if (isset($params['wrapperClass'])) {
- if (! is_subclass_of($params['wrapperClass'], $wrapperClass)) {
- throw DBALException::invalidWrapperClass($params['wrapperClass']);
- }
-
- $wrapperClass = $params['wrapperClass'];
- }
-
- return new $wrapperClass($params, $driver, $config, $eventManager);
- }
-
- /**
- * Returns the list of supported drivers.
- *
- * @return string[]
- */
- public static function getAvailableDrivers() : array
- {
- return array_keys(self::$_driverMap);
- }
-
- /**
- * Checks the list of parameters.
- *
- * @param mixed[] $params The list of parameters.
- *
- * @throws DBALException
- */
- private static function _checkParams(array $params) : void
- {
- // check existence of mandatory parameters
-
- // driver
- if (! isset($params['driver']) && ! isset($params['driverClass'])) {
- throw DBALException::driverRequired();
- }
-
- // check validity of parameters
-
- // driver
- if (isset($params['driver']) && ! isset(self::$_driverMap[$params['driver']])) {
- throw DBALException::unknownDriver($params['driver'], array_keys(self::$_driverMap));
- }
-
- if (isset($params['driverClass']) && ! in_array(Driver::class, class_implements($params['driverClass'], true))) {
- throw DBALException::invalidDriverClass($params['driverClass']);
- }
- }
-
- /**
- * Normalizes the given connection URL path.
- *
- * @return string The normalized connection URL path
- */
- private static function normalizeDatabaseUrlPath(string $urlPath) : string
- {
- // Trim leading slash from URL path.
- return substr($urlPath, 1);
- }
-
- /**
- * Extracts parts from a database URL, if present, and returns an
- * updated list of parameters.
- *
- * @param mixed[] $params The list of parameters.
- *
- * @return mixed[] A modified list of parameters with info from a database
- * URL extracted into indidivual parameter parts.
- *
- * @throws DBALException
- */
- private static function parseDatabaseUrl(array $params) : array
- {
- if (! isset($params['url'])) {
- return $params;
- }
-
- // (pdo_)?sqlite3?:///... => (pdo_)?sqlite3?://localhost/... or else the URL will be invalid
- $url = preg_replace('#^((?:pdo_)?sqlite3?):///#', '$1://localhost/', $params['url']);
- assert(is_string($url));
-
- $url = parse_url($url);
-
- if ($url === false) {
- throw new DBALException('Malformed parameter "url".');
- }
-
- $url = array_map('rawurldecode', $url);
-
- // If we have a connection URL, we have to unset the default PDO instance connection parameter (if any)
- // as we cannot merge connection details from the URL into the PDO instance (URL takes precedence).
- unset($params['pdo']);
-
- $params = self::parseDatabaseUrlScheme($url, $params);
-
- if (isset($url['host'])) {
- $params['host'] = $url['host'];
- }
- if (isset($url['port'])) {
- $params['port'] = $url['port'];
- }
- if (isset($url['user'])) {
- $params['user'] = $url['user'];
- }
- if (isset($url['pass'])) {
- $params['password'] = $url['pass'];
- }
-
- $params = self::parseDatabaseUrlPath($url, $params);
- $params = self::parseDatabaseUrlQuery($url, $params);
-
- return $params;
- }
-
- /**
- * Parses the given connection URL and resolves the given connection parameters.
- *
- * Assumes that the connection URL scheme is already parsed and resolved into the given connection parameters
- * via {@link parseDatabaseUrlScheme}.
- *
- * @see parseDatabaseUrlScheme
- *
- * @param mixed[] $url The URL parts to evaluate.
- * @param mixed[] $params The connection parameters to resolve.
- *
- * @return mixed[] The resolved connection parameters.
- */
- private static function parseDatabaseUrlPath(array $url, array $params) : array
- {
- if (! isset($url['path'])) {
- return $params;
- }
-
- $url['path'] = self::normalizeDatabaseUrlPath($url['path']);
-
- // If we do not have a known DBAL driver, we do not know any connection URL path semantics to evaluate
- // and therefore treat the path as regular DBAL connection URL path.
- if (! isset($params['driver'])) {
- return self::parseRegularDatabaseUrlPath($url, $params);
- }
-
- if (strpos($params['driver'], 'sqlite') !== false) {
- return self::parseSqliteDatabaseUrlPath($url, $params);
- }
-
- return self::parseRegularDatabaseUrlPath($url, $params);
- }
-
- /**
- * Parses the query part of the given connection URL and resolves the given connection parameters.
- *
- * @param mixed[] $url The connection URL parts to evaluate.
- * @param mixed[] $params The connection parameters to resolve.
- *
- * @return mixed[] The resolved connection parameters.
- */
- private static function parseDatabaseUrlQuery(array $url, array $params) : array
- {
- if (! isset($url['query'])) {
- return $params;
- }
-
- $query = [];
-
- parse_str($url['query'], $query); // simply ingest query as extra params, e.g. charset or sslmode
-
- return array_merge($params, $query); // parse_str wipes existing array elements
- }
-
- /**
- * Parses the given regular connection URL and resolves the given connection parameters.
- *
- * Assumes that the "path" URL part is already normalized via {@link normalizeDatabaseUrlPath}.
- *
- * @see normalizeDatabaseUrlPath
- *
- * @param mixed[] $url The regular connection URL parts to evaluate.
- * @param mixed[] $params The connection parameters to resolve.
- *
- * @return mixed[] The resolved connection parameters.
- */
- private static function parseRegularDatabaseUrlPath(array $url, array $params) : array
- {
- $params['dbname'] = $url['path'];
-
- return $params;
- }
-
- /**
- * Parses the given SQLite connection URL and resolves the given connection parameters.
- *
- * Assumes that the "path" URL part is already normalized via {@link normalizeDatabaseUrlPath}.
- *
- * @see normalizeDatabaseUrlPath
- *
- * @param mixed[] $url The SQLite connection URL parts to evaluate.
- * @param mixed[] $params The connection parameters to resolve.
- *
- * @return mixed[] The resolved connection parameters.
- */
- private static function parseSqliteDatabaseUrlPath(array $url, array $params) : array
- {
- if ($url['path'] === ':memory:') {
- $params['memory'] = true;
-
- return $params;
- }
-
- $params['path'] = $url['path']; // pdo_sqlite driver uses 'path' instead of 'dbname' key
-
- return $params;
- }
-
- /**
- * Parses the scheme part from given connection URL and resolves the given connection parameters.
- *
- * @param mixed[] $url The connection URL parts to evaluate.
- * @param mixed[] $params The connection parameters to resolve.
- *
- * @return mixed[] The resolved connection parameters.
- *
- * @throws DBALException If parsing failed or resolution is not possible.
- */
- private static function parseDatabaseUrlScheme(array $url, array $params) : array
- {
- if (isset($url['scheme'])) {
- // The requested driver from the URL scheme takes precedence
- // over the default custom driver from the connection parameters (if any).
- unset($params['driverClass']);
-
- // URL schemes must not contain underscores, but dashes are ok
- $driver = str_replace('-', '_', $url['scheme']);
- assert(is_string($driver));
-
- // The requested driver from the URL scheme takes precedence over the
- // default driver from the connection parameters. If the driver is
- // an alias (e.g. "postgres"), map it to the actual name ("pdo-pgsql").
- // Otherwise, let checkParams decide later if the driver exists.
- $params['driver'] = self::$driverSchemeAliases[$driver] ?? $driver;
-
- return $params;
- }
-
- // If a schemeless connection URL is given, we require a default driver or default custom driver
- // as connection parameter.
- if (! isset($params['driverClass']) && ! isset($params['driver'])) {
- throw DBALException::driverRequired($params['url']);
- }
-
- return $params;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/ConnectionEventArgs.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/ConnectionEventArgs.php
deleted file mode 100644
index 5c71992cc..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/ConnectionEventArgs.php
+++ /dev/null
@@ -1,61 +0,0 @@
-connection = $connection;
- }
-
- /**
- * @return Connection
- */
- public function getConnection()
- {
- return $this->connection;
- }
-
- /**
- * @deprecated Use ConnectionEventArgs::getConnection() and Connection::getDriver() instead.
- *
- * @return Driver
- */
- public function getDriver()
- {
- return $this->connection->getDriver();
- }
-
- /**
- * @deprecated Use ConnectionEventArgs::getConnection() and Connection::getDatabasePlatform() instead.
- *
- * @return AbstractPlatform
- */
- public function getDatabasePlatform()
- {
- return $this->connection->getDatabasePlatform();
- }
-
- /**
- * @deprecated Use ConnectionEventArgs::getConnection() and Connection::getSchemaManager() instead.
- *
- * @return AbstractSchemaManager
- */
- public function getSchemaManager()
- {
- return $this->connection->getSchemaManager();
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/Listeners/MysqlSessionInit.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/Listeners/MysqlSessionInit.php
deleted file mode 100644
index 9e7229040..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/Listeners/MysqlSessionInit.php
+++ /dev/null
@@ -1,58 +0,0 @@
-charset = $charset;
- $this->collation = $collation;
- }
-
- /**
- * @return void
- */
- public function postConnect(ConnectionEventArgs $args)
- {
- $collation = $this->collation ? ' COLLATE ' . $this->collation : '';
- $args->getConnection()->executeUpdate('SET NAMES ' . $this->charset . $collation);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getSubscribedEvents()
- {
- return [Events::postConnect];
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/Listeners/OracleSessionInit.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/Listeners/OracleSessionInit.php
deleted file mode 100644
index 19f2b3fd3..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/Listeners/OracleSessionInit.php
+++ /dev/null
@@ -1,72 +0,0 @@
- 'HH24:MI:SS',
- 'NLS_DATE_FORMAT' => 'YYYY-MM-DD HH24:MI:SS',
- 'NLS_TIMESTAMP_FORMAT' => 'YYYY-MM-DD HH24:MI:SS',
- 'NLS_TIMESTAMP_TZ_FORMAT' => 'YYYY-MM-DD HH24:MI:SS TZH:TZM',
- 'NLS_NUMERIC_CHARACTERS' => '.,',
- ];
-
- /**
- * @param string[] $oracleSessionVars
- */
- public function __construct(array $oracleSessionVars = [])
- {
- $this->_defaultSessionVars = array_merge($this->_defaultSessionVars, $oracleSessionVars);
- }
-
- /**
- * @return void
- */
- public function postConnect(ConnectionEventArgs $args)
- {
- if (! count($this->_defaultSessionVars)) {
- return;
- }
-
- array_change_key_case($this->_defaultSessionVars, CASE_UPPER);
- $vars = [];
- foreach ($this->_defaultSessionVars as $option => $value) {
- if ($option === 'CURRENT_SCHEMA') {
- $vars[] = $option . ' = ' . $value;
- } else {
- $vars[] = $option . " = '" . $value . "'";
- }
- }
- $sql = 'ALTER SESSION SET ' . implode(' ', $vars);
- $args->getConnection()->executeUpdate($sql);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getSubscribedEvents()
- {
- return [Events::postConnect];
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/Listeners/SQLSessionInit.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/Listeners/SQLSessionInit.php
deleted file mode 100644
index ea63cab43..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/Listeners/SQLSessionInit.php
+++ /dev/null
@@ -1,41 +0,0 @@
-sql = $sql;
- }
-
- /**
- * @return void
- */
- public function postConnect(ConnectionEventArgs $args)
- {
- $conn = $args->getConnection();
- $conn->exec($this->sql);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getSubscribedEvents()
- {
- return [Events::postConnect];
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableAddColumnEventArgs.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableAddColumnEventArgs.php
deleted file mode 100644
index ff86a93d6..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableAddColumnEventArgs.php
+++ /dev/null
@@ -1,81 +0,0 @@
-column = $column;
- $this->tableDiff = $tableDiff;
- $this->platform = $platform;
- }
-
- /**
- * @return Column
- */
- public function getColumn()
- {
- return $this->column;
- }
-
- /**
- * @return TableDiff
- */
- public function getTableDiff()
- {
- return $this->tableDiff;
- }
-
- /**
- * @return AbstractPlatform
- */
- public function getPlatform()
- {
- return $this->platform;
- }
-
- /**
- * Passing multiple SQL statements as an array is deprecated. Pass each statement as an individual argument instead.
- *
- * @param string|string[] $sql
- *
- * @return \Doctrine\DBAL\Event\SchemaAlterTableAddColumnEventArgs
- */
- public function addSql($sql)
- {
- $this->sql = array_merge($this->sql, is_array($sql) ? $sql : func_get_args());
-
- return $this;
- }
-
- /**
- * @return string[]
- */
- public function getSql()
- {
- return $this->sql;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableChangeColumnEventArgs.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableChangeColumnEventArgs.php
deleted file mode 100644
index 354eb68bc..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableChangeColumnEventArgs.php
+++ /dev/null
@@ -1,81 +0,0 @@
-columnDiff = $columnDiff;
- $this->tableDiff = $tableDiff;
- $this->platform = $platform;
- }
-
- /**
- * @return ColumnDiff
- */
- public function getColumnDiff()
- {
- return $this->columnDiff;
- }
-
- /**
- * @return TableDiff
- */
- public function getTableDiff()
- {
- return $this->tableDiff;
- }
-
- /**
- * @return AbstractPlatform
- */
- public function getPlatform()
- {
- return $this->platform;
- }
-
- /**
- * Passing multiple SQL statements as an array is deprecated. Pass each statement as an individual argument instead.
- *
- * @param string|string[] $sql
- *
- * @return \Doctrine\DBAL\Event\SchemaAlterTableChangeColumnEventArgs
- */
- public function addSql($sql)
- {
- $this->sql = array_merge($this->sql, is_array($sql) ? $sql : func_get_args());
-
- return $this;
- }
-
- /**
- * @return string[]
- */
- public function getSql()
- {
- return $this->sql;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableEventArgs.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableEventArgs.php
deleted file mode 100644
index b10bc7a60..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableEventArgs.php
+++ /dev/null
@@ -1,68 +0,0 @@
-tableDiff = $tableDiff;
- $this->platform = $platform;
- }
-
- /**
- * @return TableDiff
- */
- public function getTableDiff()
- {
- return $this->tableDiff;
- }
-
- /**
- * @return AbstractPlatform
- */
- public function getPlatform()
- {
- return $this->platform;
- }
-
- /**
- * Passing multiple SQL statements as an array is deprecated. Pass each statement as an individual argument instead.
- *
- * @param string|string[] $sql
- *
- * @return \Doctrine\DBAL\Event\SchemaAlterTableEventArgs
- */
- public function addSql($sql)
- {
- $this->sql = array_merge($this->sql, is_array($sql) ? $sql : func_get_args());
-
- return $this;
- }
-
- /**
- * @return string[]
- */
- public function getSql()
- {
- return $this->sql;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableRemoveColumnEventArgs.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableRemoveColumnEventArgs.php
deleted file mode 100644
index 6e3d6a757..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableRemoveColumnEventArgs.php
+++ /dev/null
@@ -1,81 +0,0 @@
-column = $column;
- $this->tableDiff = $tableDiff;
- $this->platform = $platform;
- }
-
- /**
- * @return Column
- */
- public function getColumn()
- {
- return $this->column;
- }
-
- /**
- * @return TableDiff
- */
- public function getTableDiff()
- {
- return $this->tableDiff;
- }
-
- /**
- * @return AbstractPlatform
- */
- public function getPlatform()
- {
- return $this->platform;
- }
-
- /**
- * Passing multiple SQL statements as an array is deprecated. Pass each statement as an individual argument instead.
- *
- * @param string|string[] $sql
- *
- * @return \Doctrine\DBAL\Event\SchemaAlterTableRemoveColumnEventArgs
- */
- public function addSql($sql)
- {
- $this->sql = array_merge($this->sql, is_array($sql) ? $sql : func_get_args());
-
- return $this;
- }
-
- /**
- * @return string[]
- */
- public function getSql()
- {
- return $this->sql;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableRenameColumnEventArgs.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableRenameColumnEventArgs.php
deleted file mode 100644
index 27e282531..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaAlterTableRenameColumnEventArgs.php
+++ /dev/null
@@ -1,96 +0,0 @@
-oldColumnName = $oldColumnName;
- $this->column = $column;
- $this->tableDiff = $tableDiff;
- $this->platform = $platform;
- }
-
- /**
- * @return string
- */
- public function getOldColumnName()
- {
- return $this->oldColumnName;
- }
-
- /**
- * @return Column
- */
- public function getColumn()
- {
- return $this->column;
- }
-
- /**
- * @return TableDiff
- */
- public function getTableDiff()
- {
- return $this->tableDiff;
- }
-
- /**
- * @return AbstractPlatform
- */
- public function getPlatform()
- {
- return $this->platform;
- }
-
- /**
- * Passing multiple SQL statements as an array is deprecated. Pass each statement as an individual argument instead.
- *
- * @param string|string[] $sql
- *
- * @return \Doctrine\DBAL\Event\SchemaAlterTableRenameColumnEventArgs
- */
- public function addSql($sql)
- {
- $this->sql = array_merge($this->sql, is_array($sql) ? $sql : func_get_args());
-
- return $this;
- }
-
- /**
- * @return string[]
- */
- public function getSql()
- {
- return $this->sql;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaColumnDefinitionEventArgs.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaColumnDefinitionEventArgs.php
deleted file mode 100644
index 80d9abe73..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaColumnDefinitionEventArgs.php
+++ /dev/null
@@ -1,108 +0,0 @@
-tableColumn = $tableColumn;
- $this->table = $table;
- $this->database = $database;
- $this->connection = $connection;
- }
-
- /**
- * Allows to clear the column which means the column will be excluded from
- * tables column list.
- *
- * @return \Doctrine\DBAL\Event\SchemaColumnDefinitionEventArgs
- */
- public function setColumn(?Column $column = null)
- {
- $this->column = $column;
-
- return $this;
- }
-
- /**
- * @return Column|null
- */
- public function getColumn()
- {
- return $this->column;
- }
-
- /**
- * @return mixed[]
- */
- public function getTableColumn()
- {
- return $this->tableColumn;
- }
-
- /**
- * @return string
- */
- public function getTable()
- {
- return $this->table;
- }
-
- /**
- * @return string
- */
- public function getDatabase()
- {
- return $this->database;
- }
-
- /**
- * @return Connection
- */
- public function getConnection()
- {
- return $this->connection;
- }
-
- /**
- * @deprecated Use SchemaColumnDefinitionEventArgs::getConnection() and Connection::getDatabasePlatform() instead.
- *
- * @return AbstractPlatform
- */
- public function getDatabasePlatform()
- {
- return $this->connection->getDatabasePlatform();
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaCreateTableColumnEventArgs.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaCreateTableColumnEventArgs.php
deleted file mode 100644
index 6d78aae5c..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaCreateTableColumnEventArgs.php
+++ /dev/null
@@ -1,81 +0,0 @@
-column = $column;
- $this->table = $table;
- $this->platform = $platform;
- }
-
- /**
- * @return Column
- */
- public function getColumn()
- {
- return $this->column;
- }
-
- /**
- * @return Table
- */
- public function getTable()
- {
- return $this->table;
- }
-
- /**
- * @return AbstractPlatform
- */
- public function getPlatform()
- {
- return $this->platform;
- }
-
- /**
- * Passing multiple SQL statements as an array is deprecated. Pass each statement as an individual argument instead.
- *
- * @param string|string[] $sql
- *
- * @return \Doctrine\DBAL\Event\SchemaCreateTableColumnEventArgs
- */
- public function addSql($sql)
- {
- $this->sql = array_merge($this->sql, is_array($sql) ? $sql : func_get_args());
-
- return $this;
- }
-
- /**
- * @return string[]
- */
- public function getSql()
- {
- return $this->sql;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaCreateTableEventArgs.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaCreateTableEventArgs.php
deleted file mode 100644
index 927a4e4ef..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaCreateTableEventArgs.php
+++ /dev/null
@@ -1,96 +0,0 @@
-table = $table;
- $this->columns = $columns;
- $this->options = $options;
- $this->platform = $platform;
- }
-
- /**
- * @return Table
- */
- public function getTable()
- {
- return $this->table;
- }
-
- /**
- * @return mixed[][]
- */
- public function getColumns()
- {
- return $this->columns;
- }
-
- /**
- * @return mixed[]
- */
- public function getOptions()
- {
- return $this->options;
- }
-
- /**
- * @return AbstractPlatform
- */
- public function getPlatform()
- {
- return $this->platform;
- }
-
- /**
- * Passing multiple SQL statements as an array is deprecated. Pass each statement as an individual argument instead.
- *
- * @param string|string[] $sql
- *
- * @return \Doctrine\DBAL\Event\SchemaCreateTableEventArgs
- */
- public function addSql($sql)
- {
- $this->sql = array_merge($this->sql, is_array($sql) ? $sql : func_get_args());
-
- return $this;
- }
-
- /**
- * @return string[]
- */
- public function getSql()
- {
- return $this->sql;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaDropTableEventArgs.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaDropTableEventArgs.php
deleted file mode 100644
index 387049791..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaDropTableEventArgs.php
+++ /dev/null
@@ -1,69 +0,0 @@
-table = $table;
- $this->platform = $platform;
- }
-
- /**
- * @return string|Table
- */
- public function getTable()
- {
- return $this->table;
- }
-
- /**
- * @return AbstractPlatform
- */
- public function getPlatform()
- {
- return $this->platform;
- }
-
- /**
- * @param string $sql
- *
- * @return \Doctrine\DBAL\Event\SchemaDropTableEventArgs
- */
- public function setSql($sql)
- {
- $this->sql = $sql;
-
- return $this;
- }
-
- /**
- * @return string|null
- */
- public function getSql()
- {
- return $this->sql;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaEventArgs.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaEventArgs.php
deleted file mode 100644
index 0db0689c5..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaEventArgs.php
+++ /dev/null
@@ -1,32 +0,0 @@
-preventDefault = true;
-
- return $this;
- }
-
- /**
- * @return bool
- */
- public function isDefaultPrevented()
- {
- return $this->preventDefault;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaIndexDefinitionEventArgs.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaIndexDefinitionEventArgs.php
deleted file mode 100644
index 317f352b8..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Event/SchemaIndexDefinitionEventArgs.php
+++ /dev/null
@@ -1,92 +0,0 @@
-tableIndex = $tableIndex;
- $this->table = $table;
- $this->connection = $connection;
- }
-
- /**
- * Allows to clear the index which means the index will be excluded from tables index list.
- *
- * @return SchemaIndexDefinitionEventArgs
- */
- public function setIndex(?Index $index = null)
- {
- $this->index = $index;
-
- return $this;
- }
-
- /**
- * @return Index|null
- */
- public function getIndex()
- {
- return $this->index;
- }
-
- /**
- * @return mixed[]
- */
- public function getTableIndex()
- {
- return $this->tableIndex;
- }
-
- /**
- * @return string
- */
- public function getTable()
- {
- return $this->table;
- }
-
- /**
- * @return Connection
- */
- public function getConnection()
- {
- return $this->connection;
- }
-
- /**
- * @return AbstractPlatform
- */
- public function getDatabasePlatform()
- {
- return $this->connection->getDatabasePlatform();
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Events.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Events.php
deleted file mode 100644
index 5398d0f84..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Events.php
+++ /dev/null
@@ -1,31 +0,0 @@
-driverException = $driverException;
- }
-
- /**
- * Returns the driver specific error code if given.
- *
- * Returns null if no error code was given by the driver.
- *
- * @return int|string|null
- */
- public function getErrorCode()
- {
- return $this->driverException->getErrorCode();
- }
-
- /**
- * Returns the SQLSTATE the driver was in at the time the error occurred, if given.
- *
- * Returns null if no SQLSTATE was given by the driver.
- *
- * @return string|null
- */
- public function getSQLState()
- {
- return $this->driverException->getSQLState();
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Exception/ForeignKeyConstraintViolationException.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Exception/ForeignKeyConstraintViolationException.php
deleted file mode 100644
index 48d736f9e..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Exception/ForeignKeyConstraintViolationException.php
+++ /dev/null
@@ -1,10 +0,0 @@
-getParams();
- if ($params['driver'] === 'pdo_sqlite') {
- throw new DBALException('Cannot use TableGenerator with SQLite.');
- }
- $this->conn = DriverManager::getConnection($params, $conn->getConfiguration(), $conn->getEventManager());
- $this->generatorTableName = $generatorTableName;
- }
-
- /**
- * Generates the next unused value for the given sequence name.
- *
- * @param string $sequenceName
- *
- * @return int
- *
- * @throws DBALException
- */
- public function nextValue($sequenceName)
- {
- if (isset($this->sequences[$sequenceName])) {
- $value = $this->sequences[$sequenceName]['value'];
- $this->sequences[$sequenceName]['value']++;
- if ($this->sequences[$sequenceName]['value'] >= $this->sequences[$sequenceName]['max']) {
- unset($this->sequences[$sequenceName]);
- }
-
- return $value;
- }
-
- $this->conn->beginTransaction();
-
- try {
- $platform = $this->conn->getDatabasePlatform();
- $sql = 'SELECT sequence_value, sequence_increment_by'
- . ' FROM ' . $platform->appendLockHint($this->generatorTableName, LockMode::PESSIMISTIC_WRITE)
- . ' WHERE sequence_name = ? ' . $platform->getWriteLockSQL();
- $stmt = $this->conn->executeQuery($sql, [$sequenceName]);
- $row = $stmt->fetch(FetchMode::ASSOCIATIVE);
-
- if ($row !== false) {
- $row = array_change_key_case($row, CASE_LOWER);
-
- $value = $row['sequence_value'];
- $value++;
-
- if ($row['sequence_increment_by'] > 1) {
- $this->sequences[$sequenceName] = [
- 'value' => $value,
- 'max' => $row['sequence_value'] + $row['sequence_increment_by'],
- ];
- }
-
- $sql = 'UPDATE ' . $this->generatorTableName . ' ' .
- 'SET sequence_value = sequence_value + sequence_increment_by ' .
- 'WHERE sequence_name = ? AND sequence_value = ?';
- $rows = $this->conn->executeUpdate($sql, [$sequenceName, $row['sequence_value']]);
-
- if ($rows !== 1) {
- throw new DBALException('Race-condition detected while updating sequence. Aborting generation');
- }
- } else {
- $this->conn->insert(
- $this->generatorTableName,
- ['sequence_name' => $sequenceName, 'sequence_value' => 1, 'sequence_increment_by' => 1]
- );
- $value = 1;
- }
-
- $this->conn->commit();
- } catch (Throwable $e) {
- $this->conn->rollBack();
- throw new DBALException('Error occurred while generating ID with TableGenerator, aborted generation: ' . $e->getMessage(), 0, $e);
- }
-
- return $value;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Id/TableGeneratorSchemaVisitor.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Id/TableGeneratorSchemaVisitor.php
deleted file mode 100644
index 3ec22f37c..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Id/TableGeneratorSchemaVisitor.php
+++ /dev/null
@@ -1,71 +0,0 @@
-generatorTableName = $generatorTableName;
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptSchema(Schema $schema)
- {
- $table = $schema->createTable($this->generatorTableName);
- $table->addColumn('sequence_name', 'string');
- $table->addColumn('sequence_value', 'integer', ['default' => 1]);
- $table->addColumn('sequence_increment_by', 'integer', ['default' => 1]);
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptTable(Table $table)
- {
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptColumn(Table $table, Column $column)
- {
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptForeignKey(Table $localTable, ForeignKeyConstraint $fkConstraint)
- {
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptIndex(Table $table, Index $index)
- {
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptSequence(Sequence $sequence)
- {
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/LockMode.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/LockMode.php
deleted file mode 100644
index 14e81432b..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/LockMode.php
+++ /dev/null
@@ -1,21 +0,0 @@
-enabled) {
- return;
- }
-
- $this->start = microtime(true);
- $this->queries[++$this->currentQuery] = ['sql' => $sql, 'params' => $params, 'types' => $types, 'executionMS' => 0];
- }
-
- /**
- * {@inheritdoc}
- */
- public function stopQuery()
- {
- if (! $this->enabled) {
- return;
- }
-
- $this->queries[$this->currentQuery]['executionMS'] = microtime(true) - $this->start;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Logging/EchoSQLLogger.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Logging/EchoSQLLogger.php
deleted file mode 100644
index 657abb4d3..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Logging/EchoSQLLogger.php
+++ /dev/null
@@ -1,37 +0,0 @@
-loggers = $loggers;
- }
-
- /**
- * Adds a logger in the chain.
- *
- * @deprecated Inject list of loggers via constructor instead
- *
- * @return void
- */
- public function addLogger(SQLLogger $logger)
- {
- $this->loggers[] = $logger;
- }
-
- /**
- * {@inheritdoc}
- */
- public function startQuery($sql, ?array $params = null, ?array $types = null)
- {
- foreach ($this->loggers as $logger) {
- $logger->startQuery($sql, $params, $types);
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function stopQuery()
- {
- foreach ($this->loggers as $logger) {
- $logger->stopQuery();
- }
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Logging/SQLLogger.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Logging/SQLLogger.php
deleted file mode 100644
index 2e94611b6..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Logging/SQLLogger.php
+++ /dev/null
@@ -1,27 +0,0 @@
-_eventManager = $eventManager;
- }
-
- /**
- * Gets the EventManager used by the Platform.
- *
- * @return EventManager
- */
- public function getEventManager()
- {
- return $this->_eventManager;
- }
-
- /**
- * Returns the SQL snippet that declares a boolean column.
- *
- * @param mixed[] $columnDef
- *
- * @return string
- */
- abstract public function getBooleanTypeDeclarationSQL(array $columnDef);
-
- /**
- * Returns the SQL snippet that declares a 4 byte integer column.
- *
- * @param mixed[] $columnDef
- *
- * @return string
- */
- abstract public function getIntegerTypeDeclarationSQL(array $columnDef);
-
- /**
- * Returns the SQL snippet that declares an 8 byte integer column.
- *
- * @param mixed[] $columnDef
- *
- * @return string
- */
- abstract public function getBigIntTypeDeclarationSQL(array $columnDef);
-
- /**
- * Returns the SQL snippet that declares a 2 byte integer column.
- *
- * @param mixed[] $columnDef
- *
- * @return string
- */
- abstract public function getSmallIntTypeDeclarationSQL(array $columnDef);
-
- /**
- * Returns the SQL snippet that declares common properties of an integer column.
- *
- * @param mixed[] $columnDef
- *
- * @return string
- */
- abstract protected function _getCommonIntegerTypeDeclarationSQL(array $columnDef);
-
- /**
- * Lazy load Doctrine Type Mappings.
- *
- * @return void
- */
- abstract protected function initializeDoctrineTypeMappings();
-
- /**
- * Initializes Doctrine Type Mappings with the platform defaults
- * and with all additional type mappings.
- *
- * @return void
- */
- private function initializeAllDoctrineTypeMappings()
- {
- $this->initializeDoctrineTypeMappings();
-
- foreach (Type::getTypesMap() as $typeName => $className) {
- foreach (Type::getType($typeName)->getMappedDatabaseTypes($this) as $dbType) {
- $this->doctrineTypeMapping[$dbType] = $typeName;
- }
- }
- }
-
- /**
- * Returns the SQL snippet used to declare a VARCHAR column type.
- *
- * @param mixed[] $field
- *
- * @return string
- */
- public function getVarcharTypeDeclarationSQL(array $field)
- {
- if (! isset($field['length'])) {
- $field['length'] = $this->getVarcharDefaultLength();
- }
-
- $fixed = $field['fixed'] ?? false;
-
- $maxLength = $fixed
- ? $this->getCharMaxLength()
- : $this->getVarcharMaxLength();
-
- if ($field['length'] > $maxLength) {
- return $this->getClobTypeDeclarationSQL($field);
- }
-
- return $this->getVarcharTypeDeclarationSQLSnippet($field['length'], $fixed);
- }
-
- /**
- * Returns the SQL snippet used to declare a BINARY/VARBINARY column type.
- *
- * @param mixed[] $field The column definition.
- *
- * @return string
- */
- public function getBinaryTypeDeclarationSQL(array $field)
- {
- if (! isset($field['length'])) {
- $field['length'] = $this->getBinaryDefaultLength();
- }
-
- $fixed = $field['fixed'] ?? false;
-
- $maxLength = $this->getBinaryMaxLength();
-
- if ($field['length'] > $maxLength) {
- if ($maxLength > 0) {
- @trigger_error(sprintf(
- 'Binary field length %d is greater than supported by the platform (%d). Reduce the field length or use a BLOB field instead.',
- $field['length'],
- $maxLength
- ), E_USER_DEPRECATED);
- }
-
- return $this->getBlobTypeDeclarationSQL($field);
- }
-
- return $this->getBinaryTypeDeclarationSQLSnippet($field['length'], $fixed);
- }
-
- /**
- * Returns the SQL snippet to declare a GUID/UUID field.
- *
- * By default this maps directly to a CHAR(36) and only maps to more
- * special datatypes when the underlying databases support this datatype.
- *
- * @param mixed[] $field
- *
- * @return string
- */
- public function getGuidTypeDeclarationSQL(array $field)
- {
- $field['length'] = 36;
- $field['fixed'] = true;
-
- return $this->getVarcharTypeDeclarationSQL($field);
- }
-
- /**
- * Returns the SQL snippet to declare a JSON field.
- *
- * By default this maps directly to a CLOB and only maps to more
- * special datatypes when the underlying databases support this datatype.
- *
- * @param mixed[] $field
- *
- * @return string
- */
- public function getJsonTypeDeclarationSQL(array $field)
- {
- return $this->getClobTypeDeclarationSQL($field);
- }
-
- /**
- * @param int $length
- * @param bool $fixed
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed)
- {
- throw DBALException::notSupported('VARCHARs not supported by Platform.');
- }
-
- /**
- * Returns the SQL snippet used to declare a BINARY/VARBINARY column type.
- *
- * @param int $length The length of the column.
- * @param bool $fixed Whether the column length is fixed.
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- protected function getBinaryTypeDeclarationSQLSnippet($length, $fixed)
- {
- throw DBALException::notSupported('BINARY/VARBINARY column types are not supported by this platform.');
- }
-
- /**
- * Returns the SQL snippet used to declare a CLOB column type.
- *
- * @param mixed[] $field
- *
- * @return string
- */
- abstract public function getClobTypeDeclarationSQL(array $field);
-
- /**
- * Returns the SQL Snippet used to declare a BLOB column type.
- *
- * @param mixed[] $field
- *
- * @return string
- */
- abstract public function getBlobTypeDeclarationSQL(array $field);
-
- /**
- * Gets the name of the platform.
- *
- * @return string
- */
- abstract public function getName();
-
- /**
- * Registers a doctrine type to be used in conjunction with a column type of this platform.
- *
- * @param string $dbType
- * @param string $doctrineType
- *
- * @throws DBALException If the type is not found.
- */
- public function registerDoctrineTypeMapping($dbType, $doctrineType)
- {
- if ($this->doctrineTypeMapping === null) {
- $this->initializeAllDoctrineTypeMappings();
- }
-
- if (! Types\Type::hasType($doctrineType)) {
- throw DBALException::typeNotFound($doctrineType);
- }
-
- $dbType = strtolower($dbType);
- $this->doctrineTypeMapping[$dbType] = $doctrineType;
-
- $doctrineType = Type::getType($doctrineType);
-
- if (! $doctrineType->requiresSQLCommentHint($this)) {
- return;
- }
-
- $this->markDoctrineTypeCommented($doctrineType);
- }
-
- /**
- * Gets the Doctrine type that is mapped for the given database column type.
- *
- * @param string $dbType
- *
- * @return string
- *
- * @throws DBALException
- */
- public function getDoctrineTypeMapping($dbType)
- {
- if ($this->doctrineTypeMapping === null) {
- $this->initializeAllDoctrineTypeMappings();
- }
-
- $dbType = strtolower($dbType);
-
- if (! isset($this->doctrineTypeMapping[$dbType])) {
- throw new DBALException('Unknown database type ' . $dbType . ' requested, ' . static::class . ' may not support it.');
- }
-
- return $this->doctrineTypeMapping[$dbType];
- }
-
- /**
- * Checks if a database type is currently supported by this platform.
- *
- * @param string $dbType
- *
- * @return bool
- */
- public function hasDoctrineTypeMappingFor($dbType)
- {
- if ($this->doctrineTypeMapping === null) {
- $this->initializeAllDoctrineTypeMappings();
- }
-
- $dbType = strtolower($dbType);
-
- return isset($this->doctrineTypeMapping[$dbType]);
- }
-
- /**
- * Initializes the Doctrine Type comments instance variable for in_array() checks.
- *
- * @return void
- */
- protected function initializeCommentedDoctrineTypes()
- {
- $this->doctrineTypeComments = [];
-
- foreach (Type::getTypesMap() as $typeName => $className) {
- $type = Type::getType($typeName);
-
- if (! $type->requiresSQLCommentHint($this)) {
- continue;
- }
-
- $this->doctrineTypeComments[] = $typeName;
- }
- }
-
- /**
- * Is it necessary for the platform to add a parsable type comment to allow reverse engineering the given type?
- *
- * @return bool
- */
- public function isCommentedDoctrineType(Type $doctrineType)
- {
- if ($this->doctrineTypeComments === null) {
- $this->initializeCommentedDoctrineTypes();
- }
-
- assert(is_array($this->doctrineTypeComments));
-
- return in_array($doctrineType->getName(), $this->doctrineTypeComments);
- }
-
- /**
- * Marks this type as to be commented in ALTER TABLE and CREATE TABLE statements.
- *
- * @param string|Type $doctrineType
- *
- * @return void
- */
- public function markDoctrineTypeCommented($doctrineType)
- {
- if ($this->doctrineTypeComments === null) {
- $this->initializeCommentedDoctrineTypes();
- }
-
- assert(is_array($this->doctrineTypeComments));
-
- $this->doctrineTypeComments[] = $doctrineType instanceof Type ? $doctrineType->getName() : $doctrineType;
- }
-
- /**
- * Gets the comment to append to a column comment that helps parsing this type in reverse engineering.
- *
- * @return string
- */
- public function getDoctrineTypeComment(Type $doctrineType)
- {
- return '(DC2Type:' . $doctrineType->getName() . ')';
- }
-
- /**
- * Gets the comment of a passed column modified by potential doctrine type comment hints.
- *
- * @return string|null
- */
- protected function getColumnComment(Column $column)
- {
- $comment = $column->getComment();
-
- if ($this->isCommentedDoctrineType($column->getType())) {
- $comment .= $this->getDoctrineTypeComment($column->getType());
- }
-
- return $comment;
- }
-
- /**
- * Gets the character used for identifier quoting.
- *
- * @return string
- */
- public function getIdentifierQuoteCharacter()
- {
- return '"';
- }
-
- /**
- * Gets the string portion that starts an SQL comment.
- *
- * @return string
- */
- public function getSqlCommentStartString()
- {
- return '--';
- }
-
- /**
- * Gets the string portion that ends an SQL comment.
- *
- * @return string
- */
- public function getSqlCommentEndString()
- {
- return "\n";
- }
-
- /**
- * Gets the maximum length of a char field.
- */
- public function getCharMaxLength() : int
- {
- return $this->getVarcharMaxLength();
- }
-
- /**
- * Gets the maximum length of a varchar field.
- *
- * @return int
- */
- public function getVarcharMaxLength()
- {
- return 4000;
- }
-
- /**
- * Gets the default length of a varchar field.
- *
- * @return int
- */
- public function getVarcharDefaultLength()
- {
- return 255;
- }
-
- /**
- * Gets the maximum length of a binary field.
- *
- * @return int
- */
- public function getBinaryMaxLength()
- {
- return 4000;
- }
-
- /**
- * Gets the default length of a binary field.
- *
- * @return int
- */
- public function getBinaryDefaultLength()
- {
- return 255;
- }
-
- /**
- * Gets all SQL wildcard characters of the platform.
- *
- * @return string[]
- */
- public function getWildcards()
- {
- return ['%', '_'];
- }
-
- /**
- * Returns the regular expression operator.
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getRegexpExpression()
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * Returns the global unique identifier expression.
- *
- * @deprecated Use application-generated UUIDs instead
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getGuidExpression()
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * Returns the SQL snippet to get the average value of a column.
- *
- * @param string $column The column to use.
- *
- * @return string Generated SQL including an AVG aggregate function.
- */
- public function getAvgExpression($column)
- {
- return 'AVG(' . $column . ')';
- }
-
- /**
- * Returns the SQL snippet to get the number of rows (without a NULL value) of a column.
- *
- * If a '*' is used instead of a column the number of selected rows is returned.
- *
- * @param string|int $column The column to use.
- *
- * @return string Generated SQL including a COUNT aggregate function.
- */
- public function getCountExpression($column)
- {
- return 'COUNT(' . $column . ')';
- }
-
- /**
- * Returns the SQL snippet to get the highest value of a column.
- *
- * @param string $column The column to use.
- *
- * @return string Generated SQL including a MAX aggregate function.
- */
- public function getMaxExpression($column)
- {
- return 'MAX(' . $column . ')';
- }
-
- /**
- * Returns the SQL snippet to get the lowest value of a column.
- *
- * @param string $column The column to use.
- *
- * @return string Generated SQL including a MIN aggregate function.
- */
- public function getMinExpression($column)
- {
- return 'MIN(' . $column . ')';
- }
-
- /**
- * Returns the SQL snippet to get the total sum of a column.
- *
- * @param string $column The column to use.
- *
- * @return string Generated SQL including a SUM aggregate function.
- */
- public function getSumExpression($column)
- {
- return 'SUM(' . $column . ')';
- }
-
- // scalar functions
-
- /**
- * Returns the SQL snippet to get the md5 sum of a field.
- *
- * Note: Not SQL92, but common functionality.
- *
- * @param string $column
- *
- * @return string
- */
- public function getMd5Expression($column)
- {
- return 'MD5(' . $column . ')';
- }
-
- /**
- * Returns the SQL snippet to get the length of a text field.
- *
- * @param string $column
- *
- * @return string
- */
- public function getLengthExpression($column)
- {
- return 'LENGTH(' . $column . ')';
- }
-
- /**
- * Returns the SQL snippet to get the squared value of a column.
- *
- * @param string $column The column to use.
- *
- * @return string Generated SQL including an SQRT aggregate function.
- */
- public function getSqrtExpression($column)
- {
- return 'SQRT(' . $column . ')';
- }
-
- /**
- * Returns the SQL snippet to round a numeric field to the number of decimals specified.
- *
- * @param string $column
- * @param int $decimals
- *
- * @return string
- */
- public function getRoundExpression($column, $decimals = 0)
- {
- return 'ROUND(' . $column . ', ' . $decimals . ')';
- }
-
- /**
- * Returns the SQL snippet to get the remainder of the division operation $expression1 / $expression2.
- *
- * @param string $expression1
- * @param string $expression2
- *
- * @return string
- */
- public function getModExpression($expression1, $expression2)
- {
- return 'MOD(' . $expression1 . ', ' . $expression2 . ')';
- }
-
- /**
- * Returns the SQL snippet to trim a string.
- *
- * @param string $str The expression to apply the trim to.
- * @param int $mode The position of the trim (leading/trailing/both).
- * @param string|bool $char The char to trim, has to be quoted already. Defaults to space.
- *
- * @return string
- */
- public function getTrimExpression($str, $mode = TrimMode::UNSPECIFIED, $char = false)
- {
- $expression = '';
-
- switch ($mode) {
- case TrimMode::LEADING:
- $expression = 'LEADING ';
- break;
-
- case TrimMode::TRAILING:
- $expression = 'TRAILING ';
- break;
-
- case TrimMode::BOTH:
- $expression = 'BOTH ';
- break;
- }
-
- if ($char !== false) {
- $expression .= $char . ' ';
- }
-
- if ($mode || $char !== false) {
- $expression .= 'FROM ';
- }
-
- return 'TRIM(' . $expression . $str . ')';
- }
-
- /**
- * Returns the SQL snippet to trim trailing space characters from the expression.
- *
- * @param string $str Literal string or column name.
- *
- * @return string
- */
- public function getRtrimExpression($str)
- {
- return 'RTRIM(' . $str . ')';
- }
-
- /**
- * Returns the SQL snippet to trim leading space characters from the expression.
- *
- * @param string $str Literal string or column name.
- *
- * @return string
- */
- public function getLtrimExpression($str)
- {
- return 'LTRIM(' . $str . ')';
- }
-
- /**
- * Returns the SQL snippet to change all characters from the expression to uppercase,
- * according to the current character set mapping.
- *
- * @param string $str Literal string or column name.
- *
- * @return string
- */
- public function getUpperExpression($str)
- {
- return 'UPPER(' . $str . ')';
- }
-
- /**
- * Returns the SQL snippet to change all characters from the expression to lowercase,
- * according to the current character set mapping.
- *
- * @param string $str Literal string or column name.
- *
- * @return string
- */
- public function getLowerExpression($str)
- {
- return 'LOWER(' . $str . ')';
- }
-
- /**
- * Returns the SQL snippet to get the position of the first occurrence of substring $substr in string $str.
- *
- * @param string $str Literal string.
- * @param string $substr Literal string to find.
- * @param int|false $startPos Position to start at, beginning of string by default.
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getLocateExpression($str, $substr, $startPos = false)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * Returns the SQL snippet to get the current system date.
- *
- * @return string
- */
- public function getNowExpression()
- {
- return 'NOW()';
- }
-
- /**
- * Returns a SQL snippet to get a substring inside an SQL statement.
- *
- * Note: Not SQL92, but common functionality.
- *
- * SQLite only supports the 2 parameter variant of this function.
- *
- * @param string $value An sql string literal or column name/alias.
- * @param int $from Where to start the substring portion.
- * @param int|null $length The substring portion length.
- *
- * @return string
- */
- public function getSubstringExpression($value, $from, $length = null)
- {
- if ($length === null) {
- return 'SUBSTRING(' . $value . ' FROM ' . $from . ')';
- }
-
- return 'SUBSTRING(' . $value . ' FROM ' . $from . ' FOR ' . $length . ')';
- }
-
- /**
- * Returns a SQL snippet to concatenate the given expressions.
- *
- * Accepts an arbitrary number of string parameters. Each parameter must contain an expression.
- *
- * @return string
- */
- public function getConcatExpression()
- {
- return implode(' || ', func_get_args());
- }
-
- /**
- * Returns the SQL for a logical not.
- *
- * Example:
- *
- * $q = new Doctrine_Query();
- * $e = $q->expr;
- * $q->select('*')->from('table')
- * ->where($e->eq('id', $e->not('null'));
- *
- *
- * @param string $expression
- *
- * @return string The logical expression.
- */
- public function getNotExpression($expression)
- {
- return 'NOT(' . $expression . ')';
- }
-
- /**
- * Returns the SQL that checks if an expression is null.
- *
- * @param string $expression The expression that should be compared to null.
- *
- * @return string The logical expression.
- */
- public function getIsNullExpression($expression)
- {
- return $expression . ' IS NULL';
- }
-
- /**
- * Returns the SQL that checks if an expression is not null.
- *
- * @param string $expression The expression that should be compared to null.
- *
- * @return string The logical expression.
- */
- public function getIsNotNullExpression($expression)
- {
- return $expression . ' IS NOT NULL';
- }
-
- /**
- * Returns the SQL that checks if an expression evaluates to a value between two values.
- *
- * The parameter $expression is checked if it is between $value1 and $value2.
- *
- * Note: There is a slight difference in the way BETWEEN works on some databases.
- * http://www.w3schools.com/sql/sql_between.asp. If you want complete database
- * independence you should avoid using between().
- *
- * @param string $expression The value to compare to.
- * @param string $value1 The lower value to compare with.
- * @param string $value2 The higher value to compare with.
- *
- * @return string The logical expression.
- */
- public function getBetweenExpression($expression, $value1, $value2)
- {
- return $expression . ' BETWEEN ' . $value1 . ' AND ' . $value2;
- }
-
- /**
- * Returns the SQL to get the arccosine of a value.
- *
- * @param string $value
- *
- * @return string
- */
- public function getAcosExpression($value)
- {
- return 'ACOS(' . $value . ')';
- }
-
- /**
- * Returns the SQL to get the sine of a value.
- *
- * @param string $value
- *
- * @return string
- */
- public function getSinExpression($value)
- {
- return 'SIN(' . $value . ')';
- }
-
- /**
- * Returns the SQL to get the PI value.
- *
- * @return string
- */
- public function getPiExpression()
- {
- return 'PI()';
- }
-
- /**
- * Returns the SQL to get the cosine of a value.
- *
- * @param string $value
- *
- * @return string
- */
- public function getCosExpression($value)
- {
- return 'COS(' . $value . ')';
- }
-
- /**
- * Returns the SQL to calculate the difference in days between the two passed dates.
- *
- * Computes diff = date1 - date2.
- *
- * @param string $date1
- * @param string $date2
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getDateDiffExpression($date1, $date2)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * Returns the SQL to add the number of given seconds to a date.
- *
- * @param string $date
- * @param int $seconds
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getDateAddSecondsExpression($date, $seconds)
- {
- return $this->getDateArithmeticIntervalExpression($date, '+', $seconds, DateIntervalUnit::SECOND);
- }
-
- /**
- * Returns the SQL to subtract the number of given seconds from a date.
- *
- * @param string $date
- * @param int $seconds
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getDateSubSecondsExpression($date, $seconds)
- {
- return $this->getDateArithmeticIntervalExpression($date, '-', $seconds, DateIntervalUnit::SECOND);
- }
-
- /**
- * Returns the SQL to add the number of given minutes to a date.
- *
- * @param string $date
- * @param int $minutes
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getDateAddMinutesExpression($date, $minutes)
- {
- return $this->getDateArithmeticIntervalExpression($date, '+', $minutes, DateIntervalUnit::MINUTE);
- }
-
- /**
- * Returns the SQL to subtract the number of given minutes from a date.
- *
- * @param string $date
- * @param int $minutes
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getDateSubMinutesExpression($date, $minutes)
- {
- return $this->getDateArithmeticIntervalExpression($date, '-', $minutes, DateIntervalUnit::MINUTE);
- }
-
- /**
- * Returns the SQL to add the number of given hours to a date.
- *
- * @param string $date
- * @param int $hours
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getDateAddHourExpression($date, $hours)
- {
- return $this->getDateArithmeticIntervalExpression($date, '+', $hours, DateIntervalUnit::HOUR);
- }
-
- /**
- * Returns the SQL to subtract the number of given hours to a date.
- *
- * @param string $date
- * @param int $hours
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getDateSubHourExpression($date, $hours)
- {
- return $this->getDateArithmeticIntervalExpression($date, '-', $hours, DateIntervalUnit::HOUR);
- }
-
- /**
- * Returns the SQL to add the number of given days to a date.
- *
- * @param string $date
- * @param int $days
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getDateAddDaysExpression($date, $days)
- {
- return $this->getDateArithmeticIntervalExpression($date, '+', $days, DateIntervalUnit::DAY);
- }
-
- /**
- * Returns the SQL to subtract the number of given days to a date.
- *
- * @param string $date
- * @param int $days
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getDateSubDaysExpression($date, $days)
- {
- return $this->getDateArithmeticIntervalExpression($date, '-', $days, DateIntervalUnit::DAY);
- }
-
- /**
- * Returns the SQL to add the number of given weeks to a date.
- *
- * @param string $date
- * @param int $weeks
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getDateAddWeeksExpression($date, $weeks)
- {
- return $this->getDateArithmeticIntervalExpression($date, '+', $weeks, DateIntervalUnit::WEEK);
- }
-
- /**
- * Returns the SQL to subtract the number of given weeks from a date.
- *
- * @param string $date
- * @param int $weeks
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getDateSubWeeksExpression($date, $weeks)
- {
- return $this->getDateArithmeticIntervalExpression($date, '-', $weeks, DateIntervalUnit::WEEK);
- }
-
- /**
- * Returns the SQL to add the number of given months to a date.
- *
- * @param string $date
- * @param int $months
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getDateAddMonthExpression($date, $months)
- {
- return $this->getDateArithmeticIntervalExpression($date, '+', $months, DateIntervalUnit::MONTH);
- }
-
- /**
- * Returns the SQL to subtract the number of given months to a date.
- *
- * @param string $date
- * @param int $months
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getDateSubMonthExpression($date, $months)
- {
- return $this->getDateArithmeticIntervalExpression($date, '-', $months, DateIntervalUnit::MONTH);
- }
-
- /**
- * Returns the SQL to add the number of given quarters to a date.
- *
- * @param string $date
- * @param int $quarters
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getDateAddQuartersExpression($date, $quarters)
- {
- return $this->getDateArithmeticIntervalExpression($date, '+', $quarters, DateIntervalUnit::QUARTER);
- }
-
- /**
- * Returns the SQL to subtract the number of given quarters from a date.
- *
- * @param string $date
- * @param int $quarters
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getDateSubQuartersExpression($date, $quarters)
- {
- return $this->getDateArithmeticIntervalExpression($date, '-', $quarters, DateIntervalUnit::QUARTER);
- }
-
- /**
- * Returns the SQL to add the number of given years to a date.
- *
- * @param string $date
- * @param int $years
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getDateAddYearsExpression($date, $years)
- {
- return $this->getDateArithmeticIntervalExpression($date, '+', $years, DateIntervalUnit::YEAR);
- }
-
- /**
- * Returns the SQL to subtract the number of given years from a date.
- *
- * @param string $date
- * @param int $years
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getDateSubYearsExpression($date, $years)
- {
- return $this->getDateArithmeticIntervalExpression($date, '-', $years, DateIntervalUnit::YEAR);
- }
-
- /**
- * Returns the SQL for a date arithmetic expression.
- *
- * @param string $date The column or literal representing a date to perform the arithmetic operation on.
- * @param string $operator The arithmetic operator (+ or -).
- * @param int $interval The interval that shall be calculated into the date.
- * @param string $unit The unit of the interval that shall be calculated into the date.
- * One of the DATE_INTERVAL_UNIT_* constants.
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- protected function getDateArithmeticIntervalExpression($date, $operator, $interval, $unit)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * Returns the SQL bit AND comparison expression.
- *
- * @param string $value1
- * @param string $value2
- *
- * @return string
- */
- public function getBitAndComparisonExpression($value1, $value2)
- {
- return '(' . $value1 . ' & ' . $value2 . ')';
- }
-
- /**
- * Returns the SQL bit OR comparison expression.
- *
- * @param string $value1
- * @param string $value2
- *
- * @return string
- */
- public function getBitOrComparisonExpression($value1, $value2)
- {
- return '(' . $value1 . ' | ' . $value2 . ')';
- }
-
- /**
- * Returns the FOR UPDATE expression.
- *
- * @return string
- */
- public function getForUpdateSQL()
- {
- return 'FOR UPDATE';
- }
-
- /**
- * Honors that some SQL vendors such as MsSql use table hints for locking instead of the ANSI SQL FOR UPDATE specification.
- *
- * @param string $fromClause The FROM clause to append the hint for the given lock mode to.
- * @param int|null $lockMode One of the Doctrine\DBAL\LockMode::* constants. If null is given, nothing will
- * be appended to the FROM clause.
- *
- * @return string
- */
- public function appendLockHint($fromClause, $lockMode)
- {
- return $fromClause;
- }
-
- /**
- * Returns the SQL snippet to append to any SELECT statement which locks rows in shared read lock.
- *
- * This defaults to the ANSI SQL "FOR UPDATE", which is an exclusive lock (Write). Some database
- * vendors allow to lighten this constraint up to be a real read lock.
- *
- * @return string
- */
- public function getReadLockSQL()
- {
- return $this->getForUpdateSQL();
- }
-
- /**
- * Returns the SQL snippet to append to any SELECT statement which obtains an exclusive lock on the rows.
- *
- * The semantics of this lock mode should equal the SELECT .. FOR UPDATE of the ANSI SQL standard.
- *
- * @return string
- */
- public function getWriteLockSQL()
- {
- return $this->getForUpdateSQL();
- }
-
- /**
- * Returns the SQL snippet to drop an existing database.
- *
- * @param string $database The name of the database that should be dropped.
- *
- * @return string
- */
- public function getDropDatabaseSQL($database)
- {
- return 'DROP DATABASE ' . $database;
- }
-
- /**
- * Returns the SQL snippet to drop an existing table.
- *
- * @param Table|string $table
- *
- * @return string
- *
- * @throws InvalidArgumentException
- */
- public function getDropTableSQL($table)
- {
- $tableArg = $table;
-
- if ($table instanceof Table) {
- $table = $table->getQuotedName($this);
- }
-
- if (! is_string($table)) {
- throw new InvalidArgumentException('getDropTableSQL() expects $table parameter to be string or \Doctrine\DBAL\Schema\Table.');
- }
-
- if ($this->_eventManager !== null && $this->_eventManager->hasListeners(Events::onSchemaDropTable)) {
- $eventArgs = new SchemaDropTableEventArgs($tableArg, $this);
- $this->_eventManager->dispatchEvent(Events::onSchemaDropTable, $eventArgs);
-
- if ($eventArgs->isDefaultPrevented()) {
- $sql = $eventArgs->getSql();
-
- if ($sql === null) {
- throw new UnexpectedValueException('Default implementation of DROP TABLE was overridden with NULL');
- }
-
- return $sql;
- }
- }
-
- return 'DROP TABLE ' . $table;
- }
-
- /**
- * Returns the SQL to safely drop a temporary table WITHOUT implicitly committing an open transaction.
- *
- * @param Table|string $table
- *
- * @return string
- */
- public function getDropTemporaryTableSQL($table)
- {
- return $this->getDropTableSQL($table);
- }
-
- /**
- * Returns the SQL to drop an index from a table.
- *
- * @param Index|string $index
- * @param Table|string $table
- *
- * @return string
- *
- * @throws InvalidArgumentException
- */
- public function getDropIndexSQL($index, $table = null)
- {
- if ($index instanceof Index) {
- $index = $index->getQuotedName($this);
- } elseif (! is_string($index)) {
- throw new InvalidArgumentException('AbstractPlatform::getDropIndexSQL() expects $index parameter to be string or \Doctrine\DBAL\Schema\Index.');
- }
-
- return 'DROP INDEX ' . $index;
- }
-
- /**
- * Returns the SQL to drop a constraint.
- *
- * @param Constraint|string $constraint
- * @param Table|string $table
- *
- * @return string
- */
- public function getDropConstraintSQL($constraint, $table)
- {
- if (! $constraint instanceof Constraint) {
- $constraint = new Identifier($constraint);
- }
-
- if (! $table instanceof Table) {
- $table = new Identifier($table);
- }
-
- $constraint = $constraint->getQuotedName($this);
- $table = $table->getQuotedName($this);
-
- return 'ALTER TABLE ' . $table . ' DROP CONSTRAINT ' . $constraint;
- }
-
- /**
- * Returns the SQL to drop a foreign key.
- *
- * @param ForeignKeyConstraint|string $foreignKey
- * @param Table|string $table
- *
- * @return string
- */
- public function getDropForeignKeySQL($foreignKey, $table)
- {
- if (! $foreignKey instanceof ForeignKeyConstraint) {
- $foreignKey = new Identifier($foreignKey);
- }
-
- if (! $table instanceof Table) {
- $table = new Identifier($table);
- }
-
- $foreignKey = $foreignKey->getQuotedName($this);
- $table = $table->getQuotedName($this);
-
- return 'ALTER TABLE ' . $table . ' DROP FOREIGN KEY ' . $foreignKey;
- }
-
- /**
- * Returns the SQL statement(s) to create a table with the specified name, columns and constraints
- * on this platform.
- *
- * @param int $createFlags
- *
- * @return string[] The sequence of SQL statements.
- *
- * @throws DBALException
- * @throws InvalidArgumentException
- */
- public function getCreateTableSQL(Table $table, $createFlags = self::CREATE_INDEXES)
- {
- if (! is_int($createFlags)) {
- throw new InvalidArgumentException('Second argument of AbstractPlatform::getCreateTableSQL() has to be integer.');
- }
-
- if (count($table->getColumns()) === 0) {
- throw DBALException::noColumnsSpecifiedForTable($table->getName());
- }
-
- $tableName = $table->getQuotedName($this);
- $options = $table->getOptions();
- $options['uniqueConstraints'] = [];
- $options['indexes'] = [];
- $options['primary'] = [];
-
- if (($createFlags&self::CREATE_INDEXES) > 0) {
- foreach ($table->getIndexes() as $index) {
- /** @var $index Index */
- if ($index->isPrimary()) {
- $options['primary'] = $index->getQuotedColumns($this);
- $options['primary_index'] = $index;
- } else {
- $options['indexes'][$index->getQuotedName($this)] = $index;
- }
- }
- }
-
- $columnSql = [];
- $columns = [];
-
- foreach ($table->getColumns() as $column) {
- if ($this->_eventManager !== null && $this->_eventManager->hasListeners(Events::onSchemaCreateTableColumn)) {
- $eventArgs = new SchemaCreateTableColumnEventArgs($column, $table, $this);
- $this->_eventManager->dispatchEvent(Events::onSchemaCreateTableColumn, $eventArgs);
-
- $columnSql = array_merge($columnSql, $eventArgs->getSql());
-
- if ($eventArgs->isDefaultPrevented()) {
- continue;
- }
- }
-
- $columnData = $column->toArray();
- $columnData['name'] = $column->getQuotedName($this);
- $columnData['version'] = $column->hasPlatformOption('version') ? $column->getPlatformOption('version') : false;
- $columnData['comment'] = $this->getColumnComment($column);
-
- if ($columnData['type'] instanceof Types\StringType && $columnData['length'] === null) {
- $columnData['length'] = 255;
- }
-
- if (in_array($column->getName(), $options['primary'])) {
- $columnData['primary'] = true;
- }
-
- $columns[$columnData['name']] = $columnData;
- }
-
- if (($createFlags&self::CREATE_FOREIGNKEYS) > 0) {
- $options['foreignKeys'] = [];
- foreach ($table->getForeignKeys() as $fkConstraint) {
- $options['foreignKeys'][] = $fkConstraint;
- }
- }
-
- if ($this->_eventManager !== null && $this->_eventManager->hasListeners(Events::onSchemaCreateTable)) {
- $eventArgs = new SchemaCreateTableEventArgs($table, $columns, $options, $this);
- $this->_eventManager->dispatchEvent(Events::onSchemaCreateTable, $eventArgs);
-
- if ($eventArgs->isDefaultPrevented()) {
- return array_merge($eventArgs->getSql(), $columnSql);
- }
- }
-
- $sql = $this->_getCreateTableSQL($tableName, $columns, $options);
- if ($this->supportsCommentOnStatement()) {
- if ($table->hasOption('comment')) {
- $sql[] = $this->getCommentOnTableSQL($tableName, $table->getOption('comment'));
- }
- foreach ($table->getColumns() as $column) {
- $comment = $this->getColumnComment($column);
-
- if ($comment === null || $comment === '') {
- continue;
- }
-
- $sql[] = $this->getCommentOnColumnSQL($tableName, $column->getQuotedName($this), $comment);
- }
- }
-
- return array_merge($sql, $columnSql);
- }
-
- protected function getCommentOnTableSQL(string $tableName, ?string $comment) : string
- {
- $tableName = new Identifier($tableName);
-
- return sprintf(
- 'COMMENT ON TABLE %s IS %s',
- $tableName->getQuotedName($this),
- $this->quoteStringLiteral((string) $comment)
- );
- }
-
- /**
- * @param string $tableName
- * @param string $columnName
- * @param string|null $comment
- *
- * @return string
- */
- public function getCommentOnColumnSQL($tableName, $columnName, $comment)
- {
- $tableName = new Identifier($tableName);
- $columnName = new Identifier($columnName);
-
- return sprintf(
- 'COMMENT ON COLUMN %s.%s IS %s',
- $tableName->getQuotedName($this),
- $columnName->getQuotedName($this),
- $this->quoteStringLiteral((string) $comment)
- );
- }
-
- /**
- * Returns the SQL to create inline comment on a column.
- *
- * @param string $comment
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getInlineColumnCommentSQL($comment)
- {
- if (! $this->supportsInlineColumnComments()) {
- throw DBALException::notSupported(__METHOD__);
- }
-
- return 'COMMENT ' . $this->quoteStringLiteral($comment);
- }
-
- /**
- * Returns the SQL used to create a table.
- *
- * @param string $tableName
- * @param mixed[][] $columns
- * @param mixed[] $options
- *
- * @return string[]
- */
- protected function _getCreateTableSQL($tableName, array $columns, array $options = [])
- {
- $columnListSql = $this->getColumnDeclarationListSQL($columns);
-
- if (isset($options['uniqueConstraints']) && ! empty($options['uniqueConstraints'])) {
- foreach ($options['uniqueConstraints'] as $name => $definition) {
- $columnListSql .= ', ' . $this->getUniqueConstraintDeclarationSQL($name, $definition);
- }
- }
-
- if (isset($options['primary']) && ! empty($options['primary'])) {
- $columnListSql .= ', PRIMARY KEY(' . implode(', ', array_unique(array_values($options['primary']))) . ')';
- }
-
- if (isset($options['indexes']) && ! empty($options['indexes'])) {
- foreach ($options['indexes'] as $index => $definition) {
- $columnListSql .= ', ' . $this->getIndexDeclarationSQL($index, $definition);
- }
- }
-
- $query = 'CREATE TABLE ' . $tableName . ' (' . $columnListSql;
-
- $check = $this->getCheckDeclarationSQL($columns);
- if (! empty($check)) {
- $query .= ', ' . $check;
- }
- $query .= ')';
-
- $sql[] = $query;
-
- if (isset($options['foreignKeys'])) {
- foreach ((array) $options['foreignKeys'] as $definition) {
- $sql[] = $this->getCreateForeignKeySQL($definition, $tableName);
- }
- }
-
- return $sql;
- }
-
- /**
- * @return string
- */
- public function getCreateTemporaryTableSnippetSQL()
- {
- return 'CREATE TEMPORARY TABLE';
- }
-
- /**
- * Returns the SQL to create a sequence on this platform.
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getCreateSequenceSQL(Sequence $sequence)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * Returns the SQL to change a sequence on this platform.
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getAlterSequenceSQL(Sequence $sequence)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * Returns the SQL to create a constraint on a table on this platform.
- *
- * @param Table|string $table
- *
- * @return string
- *
- * @throws InvalidArgumentException
- */
- public function getCreateConstraintSQL(Constraint $constraint, $table)
- {
- if ($table instanceof Table) {
- $table = $table->getQuotedName($this);
- }
-
- $query = 'ALTER TABLE ' . $table . ' ADD CONSTRAINT ' . $constraint->getQuotedName($this);
-
- $columnList = '(' . implode(', ', $constraint->getQuotedColumns($this)) . ')';
-
- $referencesClause = '';
- if ($constraint instanceof Index) {
- if ($constraint->isPrimary()) {
- $query .= ' PRIMARY KEY';
- } elseif ($constraint->isUnique()) {
- $query .= ' UNIQUE';
- } else {
- throw new InvalidArgumentException(
- 'Can only create primary or unique constraints, no common indexes with getCreateConstraintSQL().'
- );
- }
- } elseif ($constraint instanceof ForeignKeyConstraint) {
- $query .= ' FOREIGN KEY';
-
- $referencesClause = ' REFERENCES ' . $constraint->getQuotedForeignTableName($this) .
- ' (' . implode(', ', $constraint->getQuotedForeignColumns($this)) . ')';
- }
- $query .= ' ' . $columnList . $referencesClause;
-
- return $query;
- }
-
- /**
- * Returns the SQL to create an index on a table on this platform.
- *
- * @param Table|string $table The name of the table on which the index is to be created.
- *
- * @return string
- *
- * @throws InvalidArgumentException
- */
- public function getCreateIndexSQL(Index $index, $table)
- {
- if ($table instanceof Table) {
- $table = $table->getQuotedName($this);
- }
- $name = $index->getQuotedName($this);
- $columns = $index->getColumns();
-
- if (count($columns) === 0) {
- throw new InvalidArgumentException("Incomplete definition. 'columns' required.");
- }
-
- if ($index->isPrimary()) {
- return $this->getCreatePrimaryKeySQL($index, $table);
- }
-
- $query = 'CREATE ' . $this->getCreateIndexSQLFlags($index) . 'INDEX ' . $name . ' ON ' . $table;
- $query .= ' (' . $this->getIndexFieldDeclarationListSQL($index) . ')' . $this->getPartialIndexSQL($index);
-
- return $query;
- }
-
- /**
- * Adds condition for partial index.
- *
- * @return string
- */
- protected function getPartialIndexSQL(Index $index)
- {
- if ($this->supportsPartialIndexes() && $index->hasOption('where')) {
- return ' WHERE ' . $index->getOption('where');
- }
-
- return '';
- }
-
- /**
- * Adds additional flags for index generation.
- *
- * @return string
- */
- protected function getCreateIndexSQLFlags(Index $index)
- {
- return $index->isUnique() ? 'UNIQUE ' : '';
- }
-
- /**
- * Returns the SQL to create an unnamed primary key constraint.
- *
- * @param Table|string $table
- *
- * @return string
- */
- public function getCreatePrimaryKeySQL(Index $index, $table)
- {
- if ($table instanceof Table) {
- $table = $table->getQuotedName($this);
- }
-
- return 'ALTER TABLE ' . $table . ' ADD PRIMARY KEY (' . $this->getIndexFieldDeclarationListSQL($index) . ')';
- }
-
- /**
- * Returns the SQL to create a named schema.
- *
- * @param string $schemaName
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getCreateSchemaSQL($schemaName)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * Quotes a string so that it can be safely used as a table or column name,
- * even if it is a reserved word of the platform. This also detects identifier
- * chains separated by dot and quotes them independently.
- *
- * NOTE: Just because you CAN use quoted identifiers doesn't mean
- * you SHOULD use them. In general, they end up causing way more
- * problems than they solve.
- *
- * @param string $str The identifier name to be quoted.
- *
- * @return string The quoted identifier string.
- */
- public function quoteIdentifier($str)
- {
- if (strpos($str, '.') !== false) {
- $parts = array_map([$this, 'quoteSingleIdentifier'], explode('.', $str));
-
- return implode('.', $parts);
- }
-
- return $this->quoteSingleIdentifier($str);
- }
-
- /**
- * Quotes a single identifier (no dot chain separation).
- *
- * @param string $str The identifier name to be quoted.
- *
- * @return string The quoted identifier string.
- */
- public function quoteSingleIdentifier($str)
- {
- $c = $this->getIdentifierQuoteCharacter();
-
- return $c . str_replace($c, $c . $c, $str) . $c;
- }
-
- /**
- * Returns the SQL to create a new foreign key.
- *
- * @param ForeignKeyConstraint $foreignKey The foreign key constraint.
- * @param Table|string $table The name of the table on which the foreign key is to be created.
- *
- * @return string
- */
- public function getCreateForeignKeySQL(ForeignKeyConstraint $foreignKey, $table)
- {
- if ($table instanceof Table) {
- $table = $table->getQuotedName($this);
- }
-
- return 'ALTER TABLE ' . $table . ' ADD ' . $this->getForeignKeyDeclarationSQL($foreignKey);
- }
-
- /**
- * Gets the SQL statements for altering an existing table.
- *
- * This method returns an array of SQL statements, since some platforms need several statements.
- *
- * @return string[]
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getAlterTableSQL(TableDiff $diff)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * @param mixed[] $columnSql
- *
- * @return bool
- */
- protected function onSchemaAlterTableAddColumn(Column $column, TableDiff $diff, &$columnSql)
- {
- if ($this->_eventManager === null) {
- return false;
- }
-
- if (! $this->_eventManager->hasListeners(Events::onSchemaAlterTableAddColumn)) {
- return false;
- }
-
- $eventArgs = new SchemaAlterTableAddColumnEventArgs($column, $diff, $this);
- $this->_eventManager->dispatchEvent(Events::onSchemaAlterTableAddColumn, $eventArgs);
-
- $columnSql = array_merge($columnSql, $eventArgs->getSql());
-
- return $eventArgs->isDefaultPrevented();
- }
-
- /**
- * @param string[] $columnSql
- *
- * @return bool
- */
- protected function onSchemaAlterTableRemoveColumn(Column $column, TableDiff $diff, &$columnSql)
- {
- if ($this->_eventManager === null) {
- return false;
- }
-
- if (! $this->_eventManager->hasListeners(Events::onSchemaAlterTableRemoveColumn)) {
- return false;
- }
-
- $eventArgs = new SchemaAlterTableRemoveColumnEventArgs($column, $diff, $this);
- $this->_eventManager->dispatchEvent(Events::onSchemaAlterTableRemoveColumn, $eventArgs);
-
- $columnSql = array_merge($columnSql, $eventArgs->getSql());
-
- return $eventArgs->isDefaultPrevented();
- }
-
- /**
- * @param string[] $columnSql
- *
- * @return bool
- */
- protected function onSchemaAlterTableChangeColumn(ColumnDiff $columnDiff, TableDiff $diff, &$columnSql)
- {
- if ($this->_eventManager === null) {
- return false;
- }
-
- if (! $this->_eventManager->hasListeners(Events::onSchemaAlterTableChangeColumn)) {
- return false;
- }
-
- $eventArgs = new SchemaAlterTableChangeColumnEventArgs($columnDiff, $diff, $this);
- $this->_eventManager->dispatchEvent(Events::onSchemaAlterTableChangeColumn, $eventArgs);
-
- $columnSql = array_merge($columnSql, $eventArgs->getSql());
-
- return $eventArgs->isDefaultPrevented();
- }
-
- /**
- * @param string $oldColumnName
- * @param string[] $columnSql
- *
- * @return bool
- */
- protected function onSchemaAlterTableRenameColumn($oldColumnName, Column $column, TableDiff $diff, &$columnSql)
- {
- if ($this->_eventManager === null) {
- return false;
- }
-
- if (! $this->_eventManager->hasListeners(Events::onSchemaAlterTableRenameColumn)) {
- return false;
- }
-
- $eventArgs = new SchemaAlterTableRenameColumnEventArgs($oldColumnName, $column, $diff, $this);
- $this->_eventManager->dispatchEvent(Events::onSchemaAlterTableRenameColumn, $eventArgs);
-
- $columnSql = array_merge($columnSql, $eventArgs->getSql());
-
- return $eventArgs->isDefaultPrevented();
- }
-
- /**
- * @param string[] $sql
- *
- * @return bool
- */
- protected function onSchemaAlterTable(TableDiff $diff, &$sql)
- {
- if ($this->_eventManager === null) {
- return false;
- }
-
- if (! $this->_eventManager->hasListeners(Events::onSchemaAlterTable)) {
- return false;
- }
-
- $eventArgs = new SchemaAlterTableEventArgs($diff, $this);
- $this->_eventManager->dispatchEvent(Events::onSchemaAlterTable, $eventArgs);
-
- $sql = array_merge($sql, $eventArgs->getSql());
-
- return $eventArgs->isDefaultPrevented();
- }
-
- /**
- * @return string[]
- */
- protected function getPreAlterTableIndexForeignKeySQL(TableDiff $diff)
- {
- $tableName = $diff->getName($this)->getQuotedName($this);
-
- $sql = [];
- if ($this->supportsForeignKeyConstraints()) {
- foreach ($diff->removedForeignKeys as $foreignKey) {
- $sql[] = $this->getDropForeignKeySQL($foreignKey, $tableName);
- }
- foreach ($diff->changedForeignKeys as $foreignKey) {
- $sql[] = $this->getDropForeignKeySQL($foreignKey, $tableName);
- }
- }
-
- foreach ($diff->removedIndexes as $index) {
- $sql[] = $this->getDropIndexSQL($index, $tableName);
- }
- foreach ($diff->changedIndexes as $index) {
- $sql[] = $this->getDropIndexSQL($index, $tableName);
- }
-
- return $sql;
- }
-
- /**
- * @return string[]
- */
- protected function getPostAlterTableIndexForeignKeySQL(TableDiff $diff)
- {
- $sql = [];
- $newName = $diff->getNewName();
-
- if ($newName !== false) {
- $tableName = $newName->getQuotedName($this);
- } else {
- $tableName = $diff->getName($this)->getQuotedName($this);
- }
-
- if ($this->supportsForeignKeyConstraints()) {
- foreach ($diff->addedForeignKeys as $foreignKey) {
- $sql[] = $this->getCreateForeignKeySQL($foreignKey, $tableName);
- }
-
- foreach ($diff->changedForeignKeys as $foreignKey) {
- $sql[] = $this->getCreateForeignKeySQL($foreignKey, $tableName);
- }
- }
-
- foreach ($diff->addedIndexes as $index) {
- $sql[] = $this->getCreateIndexSQL($index, $tableName);
- }
-
- foreach ($diff->changedIndexes as $index) {
- $sql[] = $this->getCreateIndexSQL($index, $tableName);
- }
-
- foreach ($diff->renamedIndexes as $oldIndexName => $index) {
- $oldIndexName = new Identifier($oldIndexName);
- $sql = array_merge(
- $sql,
- $this->getRenameIndexSQL($oldIndexName->getQuotedName($this), $index, $tableName)
- );
- }
-
- return $sql;
- }
-
- /**
- * Returns the SQL for renaming an index on a table.
- *
- * @param string $oldIndexName The name of the index to rename from.
- * @param Index $index The definition of the index to rename to.
- * @param string $tableName The table to rename the given index on.
- *
- * @return string[] The sequence of SQL statements for renaming the given index.
- */
- protected function getRenameIndexSQL($oldIndexName, Index $index, $tableName)
- {
- return [
- $this->getDropIndexSQL($oldIndexName, $tableName),
- $this->getCreateIndexSQL($index, $tableName),
- ];
- }
-
- /**
- * Common code for alter table statement generation that updates the changed Index and Foreign Key definitions.
- *
- * @deprecated
- *
- * @return string[]
- */
- protected function _getAlterTableIndexForeignKeySQL(TableDiff $diff)
- {
- return array_merge($this->getPreAlterTableIndexForeignKeySQL($diff), $this->getPostAlterTableIndexForeignKeySQL($diff));
- }
-
- /**
- * Gets declaration of a number of fields in bulk.
- *
- * @param mixed[][] $fields A multidimensional associative array.
- * The first dimension determines the field name, while the second
- * dimension is keyed with the name of the properties
- * of the field being declared as array indexes. Currently, the types
- * of supported field properties are as follows:
- *
- * length
- * Integer value that determines the maximum length of the text
- * field. If this argument is missing the field should be
- * declared to have the longest length allowed by the DBMS.
- *
- * default
- * Text value to be used as default for this field.
- *
- * notnull
- * Boolean flag that indicates whether this field is constrained
- * to not be set to null.
- * charset
- * Text value with the default CHARACTER SET for this field.
- * collation
- * Text value with the default COLLATION for this field.
- * unique
- * unique constraint
- *
- * @return string
- */
- public function getColumnDeclarationListSQL(array $fields)
- {
- $queryFields = [];
-
- foreach ($fields as $fieldName => $field) {
- $queryFields[] = $this->getColumnDeclarationSQL($fieldName, $field);
- }
-
- return implode(', ', $queryFields);
- }
-
- /**
- * Obtains DBMS specific SQL code portion needed to declare a generic type
- * field to be used in statements like CREATE TABLE.
- *
- * @param string $name The name the field to be declared.
- * @param mixed[] $field An associative array with the name of the properties
- * of the field being declared as array indexes. Currently, the types
- * of supported field properties are as follows:
- *
- * length
- * Integer value that determines the maximum length of the text
- * field. If this argument is missing the field should be
- * declared to have the longest length allowed by the DBMS.
- *
- * default
- * Text value to be used as default for this field.
- *
- * notnull
- * Boolean flag that indicates whether this field is constrained
- * to not be set to null.
- * charset
- * Text value with the default CHARACTER SET for this field.
- * collation
- * Text value with the default COLLATION for this field.
- * unique
- * unique constraint
- * check
- * column check constraint
- * columnDefinition
- * a string that defines the complete column
- *
- * @return string DBMS specific SQL code portion that should be used to declare the column.
- */
- public function getColumnDeclarationSQL($name, array $field)
- {
- if (isset($field['columnDefinition'])) {
- $columnDef = $this->getCustomTypeDeclarationSQL($field);
- } else {
- $default = $this->getDefaultValueDeclarationSQL($field);
-
- $charset = isset($field['charset']) && $field['charset'] ?
- ' ' . $this->getColumnCharsetDeclarationSQL($field['charset']) : '';
-
- $collation = isset($field['collation']) && $field['collation'] ?
- ' ' . $this->getColumnCollationDeclarationSQL($field['collation']) : '';
-
- $notnull = isset($field['notnull']) && $field['notnull'] ? ' NOT NULL' : '';
-
- $unique = isset($field['unique']) && $field['unique'] ?
- ' ' . $this->getUniqueFieldDeclarationSQL() : '';
-
- $check = isset($field['check']) && $field['check'] ?
- ' ' . $field['check'] : '';
-
- $typeDecl = $field['type']->getSQLDeclaration($field, $this);
- $columnDef = $typeDecl . $charset . $default . $notnull . $unique . $check . $collation;
-
- if ($this->supportsInlineColumnComments() && isset($field['comment']) && $field['comment'] !== '') {
- $columnDef .= ' ' . $this->getInlineColumnCommentSQL($field['comment']);
- }
- }
-
- return $name . ' ' . $columnDef;
- }
-
- /**
- * Returns the SQL snippet that declares a floating point column of arbitrary precision.
- *
- * @param mixed[] $columnDef
- *
- * @return string
- */
- public function getDecimalTypeDeclarationSQL(array $columnDef)
- {
- $columnDef['precision'] = ! isset($columnDef['precision']) || empty($columnDef['precision'])
- ? 10 : $columnDef['precision'];
- $columnDef['scale'] = ! isset($columnDef['scale']) || empty($columnDef['scale'])
- ? 0 : $columnDef['scale'];
-
- return 'NUMERIC(' . $columnDef['precision'] . ', ' . $columnDef['scale'] . ')';
- }
-
- /**
- * Obtains DBMS specific SQL code portion needed to set a default value
- * declaration to be used in statements like CREATE TABLE.
- *
- * @param mixed[] $field The field definition array.
- *
- * @return string DBMS specific SQL code portion needed to set a default value.
- */
- public function getDefaultValueDeclarationSQL($field)
- {
- if (! isset($field['default'])) {
- return empty($field['notnull']) ? ' DEFAULT NULL' : '';
- }
-
- $default = $field['default'];
-
- if (! isset($field['type'])) {
- return " DEFAULT '" . $default . "'";
- }
-
- $type = $field['type'];
-
- if ($type instanceof Types\PhpIntegerMappingType) {
- return ' DEFAULT ' . $default;
- }
-
- if ($type instanceof Types\PhpDateTimeMappingType && $default === $this->getCurrentTimestampSQL()) {
- return ' DEFAULT ' . $this->getCurrentTimestampSQL();
- }
-
- if ($type instanceof Types\TimeType && $default === $this->getCurrentTimeSQL()) {
- return ' DEFAULT ' . $this->getCurrentTimeSQL();
- }
-
- if ($type instanceof Types\DateType && $default === $this->getCurrentDateSQL()) {
- return ' DEFAULT ' . $this->getCurrentDateSQL();
- }
-
- if ($type instanceof Types\BooleanType) {
- return " DEFAULT '" . $this->convertBooleans($default) . "'";
- }
-
- return ' DEFAULT ' . $this->quoteStringLiteral($default);
- }
-
- /**
- * Obtains DBMS specific SQL code portion needed to set a CHECK constraint
- * declaration to be used in statements like CREATE TABLE.
- *
- * @param string[]|mixed[][] $definition The check definition.
- *
- * @return string DBMS specific SQL code portion needed to set a CHECK constraint.
- */
- public function getCheckDeclarationSQL(array $definition)
- {
- $constraints = [];
- foreach ($definition as $field => $def) {
- if (is_string($def)) {
- $constraints[] = 'CHECK (' . $def . ')';
- } else {
- if (isset($def['min'])) {
- $constraints[] = 'CHECK (' . $field . ' >= ' . $def['min'] . ')';
- }
-
- if (isset($def['max'])) {
- $constraints[] = 'CHECK (' . $field . ' <= ' . $def['max'] . ')';
- }
- }
- }
-
- return implode(', ', $constraints);
- }
-
- /**
- * Obtains DBMS specific SQL code portion needed to set a unique
- * constraint declaration to be used in statements like CREATE TABLE.
- *
- * @param string $name The name of the unique constraint.
- * @param Index $index The index definition.
- *
- * @return string DBMS specific SQL code portion needed to set a constraint.
- *
- * @throws InvalidArgumentException
- */
- public function getUniqueConstraintDeclarationSQL($name, Index $index)
- {
- $columns = $index->getColumns();
- $name = new Identifier($name);
-
- if (count($columns) === 0) {
- throw new InvalidArgumentException("Incomplete definition. 'columns' required.");
- }
-
- return 'CONSTRAINT ' . $name->getQuotedName($this) . ' UNIQUE ('
- . $this->getIndexFieldDeclarationListSQL($index)
- . ')' . $this->getPartialIndexSQL($index);
- }
-
- /**
- * Obtains DBMS specific SQL code portion needed to set an index
- * declaration to be used in statements like CREATE TABLE.
- *
- * @param string $name The name of the index.
- * @param Index $index The index definition.
- *
- * @return string DBMS specific SQL code portion needed to set an index.
- *
- * @throws InvalidArgumentException
- */
- public function getIndexDeclarationSQL($name, Index $index)
- {
- $columns = $index->getColumns();
- $name = new Identifier($name);
-
- if (count($columns) === 0) {
- throw new InvalidArgumentException("Incomplete definition. 'columns' required.");
- }
-
- return $this->getCreateIndexSQLFlags($index) . 'INDEX ' . $name->getQuotedName($this) . ' ('
- . $this->getIndexFieldDeclarationListSQL($index)
- . ')' . $this->getPartialIndexSQL($index);
- }
-
- /**
- * Obtains SQL code portion needed to create a custom column,
- * e.g. when a field has the "columnDefinition" keyword.
- * Only "AUTOINCREMENT" and "PRIMARY KEY" are added if appropriate.
- *
- * @param mixed[] $columnDef
- *
- * @return string
- */
- public function getCustomTypeDeclarationSQL(array $columnDef)
- {
- return $columnDef['columnDefinition'];
- }
-
- /**
- * Obtains DBMS specific SQL code portion needed to set an index
- * declaration to be used in statements like CREATE TABLE.
- *
- * @param mixed[]|Index $columnsOrIndex array declaration is deprecated, prefer passing Index to this method
- */
- public function getIndexFieldDeclarationListSQL($columnsOrIndex) : string
- {
- if ($columnsOrIndex instanceof Index) {
- return implode(', ', $columnsOrIndex->getQuotedColumns($this));
- }
-
- if (! is_array($columnsOrIndex)) {
- throw new InvalidArgumentException('Fields argument should be an Index or array.');
- }
-
- $ret = [];
-
- foreach ($columnsOrIndex as $column => $definition) {
- if (is_array($definition)) {
- $ret[] = $column;
- } else {
- $ret[] = $definition;
- }
- }
-
- return implode(', ', $ret);
- }
-
- /**
- * Returns the required SQL string that fits between CREATE ... TABLE
- * to create the table as a temporary table.
- *
- * Should be overridden in driver classes to return the correct string for the
- * specific database type.
- *
- * The default is to return the string "TEMPORARY" - this will result in a
- * SQL error for any database that does not support temporary tables, or that
- * requires a different SQL command from "CREATE TEMPORARY TABLE".
- *
- * @return string The string required to be placed between "CREATE" and "TABLE"
- * to generate a temporary table, if possible.
- */
- public function getTemporaryTableSQL()
- {
- return 'TEMPORARY';
- }
-
- /**
- * Some vendors require temporary table names to be qualified specially.
- *
- * @param string $tableName
- *
- * @return string
- */
- public function getTemporaryTableName($tableName)
- {
- return $tableName;
- }
-
- /**
- * Obtain DBMS specific SQL code portion needed to set the FOREIGN KEY constraint
- * of a field declaration to be used in statements like CREATE TABLE.
- *
- * @return string DBMS specific SQL code portion needed to set the FOREIGN KEY constraint
- * of a field declaration.
- */
- public function getForeignKeyDeclarationSQL(ForeignKeyConstraint $foreignKey)
- {
- $sql = $this->getForeignKeyBaseDeclarationSQL($foreignKey);
- $sql .= $this->getAdvancedForeignKeyOptionsSQL($foreignKey);
-
- return $sql;
- }
-
- /**
- * Returns the FOREIGN KEY query section dealing with non-standard options
- * as MATCH, INITIALLY DEFERRED, ON UPDATE, ...
- *
- * @param ForeignKeyConstraint $foreignKey The foreign key definition.
- *
- * @return string
- */
- public function getAdvancedForeignKeyOptionsSQL(ForeignKeyConstraint $foreignKey)
- {
- $query = '';
- if ($this->supportsForeignKeyOnUpdate() && $foreignKey->hasOption('onUpdate')) {
- $query .= ' ON UPDATE ' . $this->getForeignKeyReferentialActionSQL($foreignKey->getOption('onUpdate'));
- }
- if ($foreignKey->hasOption('onDelete')) {
- $query .= ' ON DELETE ' . $this->getForeignKeyReferentialActionSQL($foreignKey->getOption('onDelete'));
- }
-
- return $query;
- }
-
- /**
- * Returns the given referential action in uppercase if valid, otherwise throws an exception.
- *
- * @param string $action The foreign key referential action.
- *
- * @return string
- *
- * @throws InvalidArgumentException If unknown referential action given.
- */
- public function getForeignKeyReferentialActionSQL($action)
- {
- $upper = strtoupper($action);
- switch ($upper) {
- case 'CASCADE':
- case 'SET NULL':
- case 'NO ACTION':
- case 'RESTRICT':
- case 'SET DEFAULT':
- return $upper;
- default:
- throw new InvalidArgumentException('Invalid foreign key action: ' . $upper);
- }
- }
-
- /**
- * Obtains DBMS specific SQL code portion needed to set the FOREIGN KEY constraint
- * of a field declaration to be used in statements like CREATE TABLE.
- *
- * @return string
- *
- * @throws InvalidArgumentException
- */
- public function getForeignKeyBaseDeclarationSQL(ForeignKeyConstraint $foreignKey)
- {
- $sql = '';
- if (strlen($foreignKey->getName())) {
- $sql .= 'CONSTRAINT ' . $foreignKey->getQuotedName($this) . ' ';
- }
- $sql .= 'FOREIGN KEY (';
-
- if (count($foreignKey->getLocalColumns()) === 0) {
- throw new InvalidArgumentException("Incomplete definition. 'local' required.");
- }
- if (count($foreignKey->getForeignColumns()) === 0) {
- throw new InvalidArgumentException("Incomplete definition. 'foreign' required.");
- }
- if (strlen($foreignKey->getForeignTableName()) === 0) {
- throw new InvalidArgumentException("Incomplete definition. 'foreignTable' required.");
- }
-
- return $sql . implode(', ', $foreignKey->getQuotedLocalColumns($this))
- . ') REFERENCES '
- . $foreignKey->getQuotedForeignTableName($this) . ' ('
- . implode(', ', $foreignKey->getQuotedForeignColumns($this)) . ')';
- }
-
- /**
- * Obtains DBMS specific SQL code portion needed to set the UNIQUE constraint
- * of a field declaration to be used in statements like CREATE TABLE.
- *
- * @return string DBMS specific SQL code portion needed to set the UNIQUE constraint
- * of a field declaration.
- */
- public function getUniqueFieldDeclarationSQL()
- {
- return 'UNIQUE';
- }
-
- /**
- * Obtains DBMS specific SQL code portion needed to set the CHARACTER SET
- * of a field declaration to be used in statements like CREATE TABLE.
- *
- * @param string $charset The name of the charset.
- *
- * @return string DBMS specific SQL code portion needed to set the CHARACTER SET
- * of a field declaration.
- */
- public function getColumnCharsetDeclarationSQL($charset)
- {
- return '';
- }
-
- /**
- * Obtains DBMS specific SQL code portion needed to set the COLLATION
- * of a field declaration to be used in statements like CREATE TABLE.
- *
- * @param string $collation The name of the collation.
- *
- * @return string DBMS specific SQL code portion needed to set the COLLATION
- * of a field declaration.
- */
- public function getColumnCollationDeclarationSQL($collation)
- {
- return $this->supportsColumnCollation() ? 'COLLATE ' . $collation : '';
- }
-
- /**
- * Whether the platform prefers sequences for ID generation.
- * Subclasses should override this method to return TRUE if they prefer sequences.
- *
- * @return bool
- */
- public function prefersSequences()
- {
- return false;
- }
-
- /**
- * Whether the platform prefers identity columns (eg. autoincrement) for ID generation.
- * Subclasses should override this method to return TRUE if they prefer identity columns.
- *
- * @return bool
- */
- public function prefersIdentityColumns()
- {
- return false;
- }
-
- /**
- * Some platforms need the boolean values to be converted.
- *
- * The default conversion in this implementation converts to integers (false => 0, true => 1).
- *
- * Note: if the input is not a boolean the original input might be returned.
- *
- * There are two contexts when converting booleans: Literals and Prepared Statements.
- * This method should handle the literal case
- *
- * @param mixed $item A boolean or an array of them.
- *
- * @return mixed A boolean database value or an array of them.
- */
- public function convertBooleans($item)
- {
- if (is_array($item)) {
- foreach ($item as $k => $value) {
- if (! is_bool($value)) {
- continue;
- }
-
- $item[$k] = (int) $value;
- }
- } elseif (is_bool($item)) {
- $item = (int) $item;
- }
-
- return $item;
- }
-
- /**
- * Some platforms have boolean literals that needs to be correctly converted
- *
- * The default conversion tries to convert value into bool "(bool)$item"
- *
- * @param mixed $item
- *
- * @return bool|null
- */
- public function convertFromBoolean($item)
- {
- return $item === null ? null: (bool) $item;
- }
-
- /**
- * This method should handle the prepared statements case. When there is no
- * distinction, it's OK to use the same method.
- *
- * Note: if the input is not a boolean the original input might be returned.
- *
- * @param mixed $item A boolean or an array of them.
- *
- * @return mixed A boolean database value or an array of them.
- */
- public function convertBooleansToDatabaseValue($item)
- {
- return $this->convertBooleans($item);
- }
-
- /**
- * Returns the SQL specific for the platform to get the current date.
- *
- * @return string
- */
- public function getCurrentDateSQL()
- {
- return 'CURRENT_DATE';
- }
-
- /**
- * Returns the SQL specific for the platform to get the current time.
- *
- * @return string
- */
- public function getCurrentTimeSQL()
- {
- return 'CURRENT_TIME';
- }
-
- /**
- * Returns the SQL specific for the platform to get the current timestamp
- *
- * @return string
- */
- public function getCurrentTimestampSQL()
- {
- return 'CURRENT_TIMESTAMP';
- }
-
- /**
- * Returns the SQL for a given transaction isolation level Connection constant.
- *
- * @param int $level
- *
- * @return string
- *
- * @throws InvalidArgumentException
- */
- protected function _getTransactionIsolationLevelSQL($level)
- {
- switch ($level) {
- case TransactionIsolationLevel::READ_UNCOMMITTED:
- return 'READ UNCOMMITTED';
- case TransactionIsolationLevel::READ_COMMITTED:
- return 'READ COMMITTED';
- case TransactionIsolationLevel::REPEATABLE_READ:
- return 'REPEATABLE READ';
- case TransactionIsolationLevel::SERIALIZABLE:
- return 'SERIALIZABLE';
- default:
- throw new InvalidArgumentException('Invalid isolation level:' . $level);
- }
- }
-
- /**
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getListDatabasesSQL()
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * Returns the SQL statement for retrieving the namespaces defined in the database.
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getListNamespacesSQL()
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * @param string $database
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getListSequencesSQL($database)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * @param string $table
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getListTableConstraintsSQL($table)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * @param string $table
- * @param string|null $database
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getListTableColumnsSQL($table, $database = null)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getListTablesSQL()
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getListUsersSQL()
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * Returns the SQL to list all views of a database or user.
- *
- * @param string $database
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getListViewsSQL($database)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * Returns the list of indexes for the current database.
- *
- * The current database parameter is optional but will always be passed
- * when using the SchemaManager API and is the database the given table is in.
- *
- * Attention: Some platforms only support currentDatabase when they
- * are connected with that database. Cross-database information schema
- * requests may be impossible.
- *
- * @param string $table
- * @param string $currentDatabase
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getListTableIndexesSQL($table, $currentDatabase = null)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * @param string $table
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getListTableForeignKeysSQL($table)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * @param string $name
- * @param string $sql
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getCreateViewSQL($name, $sql)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * @param string $name
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getDropViewSQL($name)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * Returns the SQL snippet to drop an existing sequence.
- *
- * @param Sequence|string $sequence
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getDropSequenceSQL($sequence)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * @param string $sequenceName
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getSequenceNextValSQL($sequenceName)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * Returns the SQL to create a new database.
- *
- * @param string $database The name of the database that should be created.
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getCreateDatabaseSQL($database)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * Returns the SQL to set the transaction isolation level.
- *
- * @param int $level
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getSetTransactionIsolationSQL($level)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * Obtains DBMS specific SQL to be used to create datetime fields in
- * statements like CREATE TABLE.
- *
- * @param mixed[] $fieldDeclaration
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getDateTimeTypeDeclarationSQL(array $fieldDeclaration)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * Obtains DBMS specific SQL to be used to create datetime with timezone offset fields.
- *
- * @param mixed[] $fieldDeclaration
- *
- * @return string
- */
- public function getDateTimeTzTypeDeclarationSQL(array $fieldDeclaration)
- {
- return $this->getDateTimeTypeDeclarationSQL($fieldDeclaration);
- }
-
- /**
- * Obtains DBMS specific SQL to be used to create date fields in statements
- * like CREATE TABLE.
- *
- * @param mixed[] $fieldDeclaration
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getDateTypeDeclarationSQL(array $fieldDeclaration)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * Obtains DBMS specific SQL to be used to create time fields in statements
- * like CREATE TABLE.
- *
- * @param mixed[] $fieldDeclaration
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getTimeTypeDeclarationSQL(array $fieldDeclaration)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * @param mixed[] $fieldDeclaration
- *
- * @return string
- */
- public function getFloatDeclarationSQL(array $fieldDeclaration)
- {
- return 'DOUBLE PRECISION';
- }
-
- /**
- * Gets the default transaction isolation level of the platform.
- *
- * @see TransactionIsolationLevel
- *
- * @return int The default isolation level.
- */
- public function getDefaultTransactionIsolationLevel()
- {
- return TransactionIsolationLevel::READ_COMMITTED;
- }
-
- /* supports*() methods */
-
- /**
- * Whether the platform supports sequences.
- *
- * @return bool
- */
- public function supportsSequences()
- {
- return false;
- }
-
- /**
- * Whether the platform supports identity columns.
- *
- * Identity columns are columns that receive an auto-generated value from the
- * database on insert of a row.
- *
- * @return bool
- */
- public function supportsIdentityColumns()
- {
- return false;
- }
-
- /**
- * Whether the platform emulates identity columns through sequences.
- *
- * Some platforms that do not support identity columns natively
- * but support sequences can emulate identity columns by using
- * sequences.
- *
- * @return bool
- */
- public function usesSequenceEmulatedIdentityColumns()
- {
- return false;
- }
-
- /**
- * Returns the name of the sequence for a particular identity column in a particular table.
- *
- * @see usesSequenceEmulatedIdentityColumns
- *
- * @param string $tableName The name of the table to return the sequence name for.
- * @param string $columnName The name of the identity column in the table to return the sequence name for.
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getIdentitySequenceName($tableName, $columnName)
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * Whether the platform supports indexes.
- *
- * @return bool
- */
- public function supportsIndexes()
- {
- return true;
- }
-
- /**
- * Whether the platform supports partial indexes.
- *
- * @return bool
- */
- public function supportsPartialIndexes()
- {
- return false;
- }
-
- /**
- * Whether the platform supports indexes with column length definitions.
- */
- public function supportsColumnLengthIndexes() : bool
- {
- return false;
- }
-
- /**
- * Whether the platform supports altering tables.
- *
- * @return bool
- */
- public function supportsAlterTable()
- {
- return true;
- }
-
- /**
- * Whether the platform supports transactions.
- *
- * @return bool
- */
- public function supportsTransactions()
- {
- return true;
- }
-
- /**
- * Whether the platform supports savepoints.
- *
- * @return bool
- */
- public function supportsSavepoints()
- {
- return true;
- }
-
- /**
- * Whether the platform supports releasing savepoints.
- *
- * @return bool
- */
- public function supportsReleaseSavepoints()
- {
- return $this->supportsSavepoints();
- }
-
- /**
- * Whether the platform supports primary key constraints.
- *
- * @return bool
- */
- public function supportsPrimaryConstraints()
- {
- return true;
- }
-
- /**
- * Whether the platform supports foreign key constraints.
- *
- * @return bool
- */
- public function supportsForeignKeyConstraints()
- {
- return true;
- }
-
- /**
- * Whether this platform supports onUpdate in foreign key constraints.
- *
- * @return bool
- */
- public function supportsForeignKeyOnUpdate()
- {
- return $this->supportsForeignKeyConstraints();
- }
-
- /**
- * Whether the platform supports database schemas.
- *
- * @return bool
- */
- public function supportsSchemas()
- {
- return false;
- }
-
- /**
- * Whether this platform can emulate schemas.
- *
- * Platforms that either support or emulate schemas don't automatically
- * filter a schema for the namespaced elements in {@link
- * AbstractManager#createSchema}.
- *
- * @return bool
- */
- public function canEmulateSchemas()
- {
- return false;
- }
-
- /**
- * Returns the default schema name.
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- public function getDefaultSchemaName()
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * Whether this platform supports create database.
- *
- * Some databases don't allow to create and drop databases at all or only with certain tools.
- *
- * @return bool
- */
- public function supportsCreateDropDatabase()
- {
- return true;
- }
-
- /**
- * Whether the platform supports getting the affected rows of a recent update/delete type query.
- *
- * @return bool
- */
- public function supportsGettingAffectedRows()
- {
- return true;
- }
-
- /**
- * Whether this platform support to add inline column comments as postfix.
- *
- * @return bool
- */
- public function supportsInlineColumnComments()
- {
- return false;
- }
-
- /**
- * Whether this platform support the proprietary syntax "COMMENT ON asset".
- *
- * @return bool
- */
- public function supportsCommentOnStatement()
- {
- return false;
- }
-
- /**
- * Does this platform have native guid type.
- *
- * @return bool
- */
- public function hasNativeGuidType()
- {
- return false;
- }
-
- /**
- * Does this platform have native JSON type.
- *
- * @return bool
- */
- public function hasNativeJsonType()
- {
- return false;
- }
-
- /**
- * @deprecated
- *
- * @todo Remove in 3.0
- */
- public function getIdentityColumnNullInsertSQL()
- {
- return '';
- }
-
- /**
- * Whether this platform supports views.
- *
- * @return bool
- */
- public function supportsViews()
- {
- return true;
- }
-
- /**
- * Does this platform support column collation?
- *
- * @return bool
- */
- public function supportsColumnCollation()
- {
- return false;
- }
-
- /**
- * Gets the format string, as accepted by the date() function, that describes
- * the format of a stored datetime value of this platform.
- *
- * @return string The format string.
- */
- public function getDateTimeFormatString()
- {
- return 'Y-m-d H:i:s';
- }
-
- /**
- * Gets the format string, as accepted by the date() function, that describes
- * the format of a stored datetime with timezone value of this platform.
- *
- * @return string The format string.
- */
- public function getDateTimeTzFormatString()
- {
- return 'Y-m-d H:i:s';
- }
-
- /**
- * Gets the format string, as accepted by the date() function, that describes
- * the format of a stored date value of this platform.
- *
- * @return string The format string.
- */
- public function getDateFormatString()
- {
- return 'Y-m-d';
- }
-
- /**
- * Gets the format string, as accepted by the date() function, that describes
- * the format of a stored time value of this platform.
- *
- * @return string The format string.
- */
- public function getTimeFormatString()
- {
- return 'H:i:s';
- }
-
- /**
- * Adds an driver-specific LIMIT clause to the query.
- *
- * @param string $query
- * @param int|null $limit
- * @param int|null $offset
- *
- * @return string
- *
- * @throws DBALException
- */
- final public function modifyLimitQuery($query, $limit, $offset = null)
- {
- if ($limit !== null) {
- $limit = (int) $limit;
- }
-
- $offset = (int) $offset;
-
- if ($offset < 0) {
- throw new DBALException(sprintf(
- 'Offset must be a positive integer or zero, %d given',
- $offset
- ));
- }
-
- if ($offset > 0 && ! $this->supportsLimitOffset()) {
- throw new DBALException(sprintf(
- 'Platform %s does not support offset values in limit queries.',
- $this->getName()
- ));
- }
-
- return $this->doModifyLimitQuery($query, $limit, $offset);
- }
-
- /**
- * Adds an platform-specific LIMIT clause to the query.
- *
- * @param string $query
- * @param int|null $limit
- * @param int|null $offset
- *
- * @return string
- */
- protected function doModifyLimitQuery($query, $limit, $offset)
- {
- if ($limit !== null) {
- $query .= ' LIMIT ' . $limit;
- }
-
- if ($offset > 0) {
- $query .= ' OFFSET ' . $offset;
- }
-
- return $query;
- }
-
- /**
- * Whether the database platform support offsets in modify limit clauses.
- *
- * @return bool
- */
- public function supportsLimitOffset()
- {
- return true;
- }
-
- /**
- * Gets the character casing of a column in an SQL result set of this platform.
- *
- * @param string $column The column name for which to get the correct character casing.
- *
- * @return string The column name in the character casing used in SQL result sets.
- */
- public function getSQLResultCasing($column)
- {
- return $column;
- }
-
- /**
- * Makes any fixes to a name of a schema element (table, sequence, ...) that are required
- * by restrictions of the platform, like a maximum length.
- *
- * @param string $schemaElementName
- *
- * @return string
- */
- public function fixSchemaElementName($schemaElementName)
- {
- return $schemaElementName;
- }
-
- /**
- * Maximum length of any given database identifier, like tables or column names.
- *
- * @return int
- */
- public function getMaxIdentifierLength()
- {
- return 63;
- }
-
- /**
- * Returns the insert SQL for an empty insert statement.
- *
- * @param string $tableName
- * @param string $identifierColumnName
- *
- * @return string
- */
- public function getEmptyIdentityInsertSQL($tableName, $identifierColumnName)
- {
- return 'INSERT INTO ' . $tableName . ' (' . $identifierColumnName . ') VALUES (null)';
- }
-
- /**
- * Generates a Truncate Table SQL statement for a given table.
- *
- * Cascade is not supported on many platforms but would optionally cascade the truncate by
- * following the foreign keys.
- *
- * @param string $tableName
- * @param bool $cascade
- *
- * @return string
- */
- public function getTruncateTableSQL($tableName, $cascade = false)
- {
- $tableIdentifier = new Identifier($tableName);
-
- return 'TRUNCATE ' . $tableIdentifier->getQuotedName($this);
- }
-
- /**
- * This is for test reasons, many vendors have special requirements for dummy statements.
- *
- * @return string
- */
- public function getDummySelectSQL()
- {
- $expression = func_num_args() > 0 ? func_get_arg(0) : '1';
-
- return sprintf('SELECT %s', $expression);
- }
-
- /**
- * Returns the SQL to create a new savepoint.
- *
- * @param string $savepoint
- *
- * @return string
- */
- public function createSavePoint($savepoint)
- {
- return 'SAVEPOINT ' . $savepoint;
- }
-
- /**
- * Returns the SQL to release a savepoint.
- *
- * @param string $savepoint
- *
- * @return string
- */
- public function releaseSavePoint($savepoint)
- {
- return 'RELEASE SAVEPOINT ' . $savepoint;
- }
-
- /**
- * Returns the SQL to rollback a savepoint.
- *
- * @param string $savepoint
- *
- * @return string
- */
- public function rollbackSavePoint($savepoint)
- {
- return 'ROLLBACK TO SAVEPOINT ' . $savepoint;
- }
-
- /**
- * Returns the keyword list instance of this platform.
- *
- * @return KeywordList
- *
- * @throws DBALException If no keyword list is specified.
- */
- final public function getReservedKeywordsList()
- {
- // Check for an existing instantiation of the keywords class.
- if ($this->_keywords) {
- return $this->_keywords;
- }
-
- $class = $this->getReservedKeywordsClass();
- $keywords = new $class();
- if (! $keywords instanceof KeywordList) {
- throw DBALException::notSupported(__METHOD__);
- }
-
- // Store the instance so it doesn't need to be generated on every request.
- $this->_keywords = $keywords;
-
- return $keywords;
- }
-
- /**
- * Returns the class name of the reserved keywords list.
- *
- * @return string
- *
- * @throws DBALException If not supported on this platform.
- */
- protected function getReservedKeywordsClass()
- {
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * Quotes a literal string.
- * This method is NOT meant to fix SQL injections!
- * It is only meant to escape this platform's string literal
- * quote character inside the given literal string.
- *
- * @param string $str The literal string to be quoted.
- *
- * @return string The quoted literal string.
- */
- public function quoteStringLiteral($str)
- {
- $c = $this->getStringLiteralQuoteCharacter();
-
- return $c . str_replace($c, $c . $c, $str) . $c;
- }
-
- /**
- * Gets the character used for string literal quoting.
- *
- * @return string
- */
- public function getStringLiteralQuoteCharacter()
- {
- return "'";
- }
-
- /**
- * Escapes metacharacters in a string intended to be used with a LIKE
- * operator.
- *
- * @param string $inputString a literal, unquoted string
- * @param string $escapeChar should be reused by the caller in the LIKE
- * expression.
- */
- final public function escapeStringForLike(string $inputString, string $escapeChar) : string
- {
- return preg_replace(
- '~([' . preg_quote($this->getLikeWildcardCharacters() . $escapeChar, '~') . '])~u',
- addcslashes($escapeChar, '\\') . '$1',
- $inputString
- );
- }
-
- protected function getLikeWildcardCharacters() : string
- {
- return '%_';
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/DB2Platform.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/DB2Platform.php
deleted file mode 100644
index 25d4163b6..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/DB2Platform.php
+++ /dev/null
@@ -1,916 +0,0 @@
-getCharMaxLength();
- }
-
- return parent::getVarcharTypeDeclarationSQL($field);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getBlobTypeDeclarationSQL(array $field)
- {
- // todo blob(n) with $field['length'];
- return 'BLOB(1M)';
- }
-
- /**
- * {@inheritDoc}
- */
- public function initializeDoctrineTypeMappings()
- {
- $this->doctrineTypeMapping = [
- 'smallint' => 'smallint',
- 'bigint' => 'bigint',
- 'integer' => 'integer',
- 'time' => 'time',
- 'date' => 'date',
- 'varchar' => 'string',
- 'character' => 'string',
- 'varbinary' => 'binary',
- 'binary' => 'binary',
- 'clob' => 'text',
- 'blob' => 'blob',
- 'decimal' => 'decimal',
- 'double' => 'float',
- 'real' => 'float',
- 'timestamp' => 'datetime',
- ];
- }
-
- /**
- * {@inheritdoc}
- */
- public function isCommentedDoctrineType(Type $doctrineType)
- {
- if ($doctrineType->getName() === Types::BOOLEAN) {
- // We require a commented boolean type in order to distinguish between boolean and smallint
- // as both (have to) map to the same native type.
- return true;
- }
-
- return parent::isCommentedDoctrineType($doctrineType);
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed)
- {
- return $fixed ? ($length ? 'CHAR(' . $length . ')' : 'CHAR(254)')
- : ($length ? 'VARCHAR(' . $length . ')' : 'VARCHAR(255)');
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getBinaryTypeDeclarationSQLSnippet($length, $fixed)
- {
- return $this->getVarcharTypeDeclarationSQLSnippet($length, $fixed) . ' FOR BIT DATA';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getClobTypeDeclarationSQL(array $field)
- {
- // todo clob(n) with $field['length'];
- return 'CLOB(1M)';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getName()
- {
- return 'db2';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getBooleanTypeDeclarationSQL(array $columnDef)
- {
- return 'SMALLINT';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getIntegerTypeDeclarationSQL(array $columnDef)
- {
- return 'INTEGER' . $this->_getCommonIntegerTypeDeclarationSQL($columnDef);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getBigIntTypeDeclarationSQL(array $columnDef)
- {
- return 'BIGINT' . $this->_getCommonIntegerTypeDeclarationSQL($columnDef);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getSmallIntTypeDeclarationSQL(array $columnDef)
- {
- return 'SMALLINT' . $this->_getCommonIntegerTypeDeclarationSQL($columnDef);
- }
-
- /**
- * {@inheritDoc}
- */
- protected function _getCommonIntegerTypeDeclarationSQL(array $columnDef)
- {
- $autoinc = '';
- if (! empty($columnDef['autoincrement'])) {
- $autoinc = ' GENERATED BY DEFAULT AS IDENTITY';
- }
-
- return $autoinc;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getBitAndComparisonExpression($value1, $value2)
- {
- return 'BITAND(' . $value1 . ', ' . $value2 . ')';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getBitOrComparisonExpression($value1, $value2)
- {
- return 'BITOR(' . $value1 . ', ' . $value2 . ')';
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getDateArithmeticIntervalExpression($date, $operator, $interval, $unit)
- {
- switch ($unit) {
- case DateIntervalUnit::WEEK:
- $interval *= 7;
- $unit = DateIntervalUnit::DAY;
- break;
-
- case DateIntervalUnit::QUARTER:
- $interval *= 3;
- $unit = DateIntervalUnit::MONTH;
- break;
- }
-
- return $date . ' ' . $operator . ' ' . $interval . ' ' . $unit;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDateDiffExpression($date1, $date2)
- {
- return 'DAYS(' . $date1 . ') - DAYS(' . $date2 . ')';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateTimeTypeDeclarationSQL(array $fieldDeclaration)
- {
- if (isset($fieldDeclaration['version']) && $fieldDeclaration['version'] === true) {
- return 'TIMESTAMP(0) WITH DEFAULT';
- }
-
- return 'TIMESTAMP(0)';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'DATE';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getTimeTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'TIME';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getTruncateTableSQL($tableName, $cascade = false)
- {
- $tableIdentifier = new Identifier($tableName);
-
- return 'TRUNCATE ' . $tableIdentifier->getQuotedName($this) . ' IMMEDIATE';
- }
-
- /**
- * This code fragment is originally from the Zend_Db_Adapter_Db2 class, but has been edited.
- *
- * @param string $table
- * @param string $database
- *
- * @return string
- */
- public function getListTableColumnsSQL($table, $database = null)
- {
- $table = $this->quoteStringLiteral($table);
-
- // We do the funky subquery and join syscat.columns.default this crazy way because
- // as of db2 v10, the column is CLOB(64k) and the distinct operator won't allow a CLOB,
- // it wants shorter stuff like a varchar.
- return "
- SELECT
- cols.default,
- subq.*
- FROM (
- SELECT DISTINCT
- c.tabschema,
- c.tabname,
- c.colname,
- c.colno,
- c.typename,
- c.nulls,
- c.length,
- c.scale,
- c.identity,
- tc.type AS tabconsttype,
- c.remarks AS comment,
- k.colseq,
- CASE
- WHEN c.generated = 'D' THEN 1
- ELSE 0
- END AS autoincrement
- FROM syscat.columns c
- LEFT JOIN (syscat.keycoluse k JOIN syscat.tabconst tc
- ON (k.tabschema = tc.tabschema
- AND k.tabname = tc.tabname
- AND tc.type = 'P'))
- ON (c.tabschema = k.tabschema
- AND c.tabname = k.tabname
- AND c.colname = k.colname)
- WHERE UPPER(c.tabname) = UPPER(" . $table . ')
- ORDER BY c.colno
- ) subq
- JOIN syscat.columns cols
- ON subq.tabschema = cols.tabschema
- AND subq.tabname = cols.tabname
- AND subq.colno = cols.colno
- ORDER BY subq.colno
- ';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTablesSQL()
- {
- return "SELECT NAME FROM SYSIBM.SYSTABLES WHERE TYPE = 'T'";
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListViewsSQL($database)
- {
- return 'SELECT NAME, TEXT FROM SYSIBM.SYSVIEWS';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTableIndexesSQL($table, $currentDatabase = null)
- {
- $table = $this->quoteStringLiteral($table);
-
- return "SELECT idx.INDNAME AS key_name,
- idxcol.COLNAME AS column_name,
- CASE
- WHEN idx.UNIQUERULE = 'P' THEN 1
- ELSE 0
- END AS primary,
- CASE
- WHEN idx.UNIQUERULE = 'D' THEN 1
- ELSE 0
- END AS non_unique
- FROM SYSCAT.INDEXES AS idx
- JOIN SYSCAT.INDEXCOLUSE AS idxcol
- ON idx.INDSCHEMA = idxcol.INDSCHEMA AND idx.INDNAME = idxcol.INDNAME
- WHERE idx.TABNAME = UPPER(" . $table . ')
- ORDER BY idxcol.COLSEQ ASC';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTableForeignKeysSQL($table)
- {
- $table = $this->quoteStringLiteral($table);
-
- return "SELECT fkcol.COLNAME AS local_column,
- fk.REFTABNAME AS foreign_table,
- pkcol.COLNAME AS foreign_column,
- fk.CONSTNAME AS index_name,
- CASE
- WHEN fk.UPDATERULE = 'R' THEN 'RESTRICT'
- ELSE NULL
- END AS on_update,
- CASE
- WHEN fk.DELETERULE = 'C' THEN 'CASCADE'
- WHEN fk.DELETERULE = 'N' THEN 'SET NULL'
- WHEN fk.DELETERULE = 'R' THEN 'RESTRICT'
- ELSE NULL
- END AS on_delete
- FROM SYSCAT.REFERENCES AS fk
- JOIN SYSCAT.KEYCOLUSE AS fkcol
- ON fk.CONSTNAME = fkcol.CONSTNAME
- AND fk.TABSCHEMA = fkcol.TABSCHEMA
- AND fk.TABNAME = fkcol.TABNAME
- JOIN SYSCAT.KEYCOLUSE AS pkcol
- ON fk.REFKEYNAME = pkcol.CONSTNAME
- AND fk.REFTABSCHEMA = pkcol.TABSCHEMA
- AND fk.REFTABNAME = pkcol.TABNAME
- WHERE fk.TABNAME = UPPER(" . $table . ')
- ORDER BY fkcol.COLSEQ ASC';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCreateViewSQL($name, $sql)
- {
- return 'CREATE VIEW ' . $name . ' AS ' . $sql;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDropViewSQL($name)
- {
- return 'DROP VIEW ' . $name;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCreateDatabaseSQL($database)
- {
- return 'CREATE DATABASE ' . $database;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDropDatabaseSQL($database)
- {
- return 'DROP DATABASE ' . $database;
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsCreateDropDatabase()
- {
- return false;
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsReleaseSavepoints()
- {
- return false;
- }
-
- /**
- * {@inheritdoc}
- */
- public function supportsCommentOnStatement()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCurrentDateSQL()
- {
- return 'CURRENT DATE';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCurrentTimeSQL()
- {
- return 'CURRENT TIME';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCurrentTimestampSQL()
- {
- return 'CURRENT TIMESTAMP';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getIndexDeclarationSQL($name, Index $index)
- {
- // Index declaration in statements like CREATE TABLE is not supported.
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * {@inheritDoc}
- */
- protected function _getCreateTableSQL($tableName, array $columns, array $options = [])
- {
- $indexes = [];
- if (isset($options['indexes'])) {
- $indexes = $options['indexes'];
- }
- $options['indexes'] = [];
-
- $sqls = parent::_getCreateTableSQL($tableName, $columns, $options);
-
- foreach ($indexes as $definition) {
- $sqls[] = $this->getCreateIndexSQL($definition, $tableName);
- }
-
- return $sqls;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getAlterTableSQL(TableDiff $diff)
- {
- $sql = [];
- $columnSql = [];
- $commentsSQL = [];
-
- $queryParts = [];
- foreach ($diff->addedColumns as $column) {
- if ($this->onSchemaAlterTableAddColumn($column, $diff, $columnSql)) {
- continue;
- }
-
- $columnDef = $column->toArray();
- $queryPart = 'ADD COLUMN ' . $this->getColumnDeclarationSQL($column->getQuotedName($this), $columnDef);
-
- // Adding non-nullable columns to a table requires a default value to be specified.
- if (! empty($columnDef['notnull']) &&
- ! isset($columnDef['default']) &&
- empty($columnDef['autoincrement'])
- ) {
- $queryPart .= ' WITH DEFAULT';
- }
-
- $queryParts[] = $queryPart;
-
- $comment = $this->getColumnComment($column);
-
- if ($comment === null || $comment === '') {
- continue;
- }
-
- $commentsSQL[] = $this->getCommentOnColumnSQL(
- $diff->getName($this)->getQuotedName($this),
- $column->getQuotedName($this),
- $comment
- );
- }
-
- foreach ($diff->removedColumns as $column) {
- if ($this->onSchemaAlterTableRemoveColumn($column, $diff, $columnSql)) {
- continue;
- }
-
- $queryParts[] = 'DROP COLUMN ' . $column->getQuotedName($this);
- }
-
- foreach ($diff->changedColumns as $columnDiff) {
- if ($this->onSchemaAlterTableChangeColumn($columnDiff, $diff, $columnSql)) {
- continue;
- }
-
- if ($columnDiff->hasChanged('comment')) {
- $commentsSQL[] = $this->getCommentOnColumnSQL(
- $diff->getName($this)->getQuotedName($this),
- $columnDiff->column->getQuotedName($this),
- $this->getColumnComment($columnDiff->column)
- );
-
- if (count($columnDiff->changedProperties) === 1) {
- continue;
- }
- }
-
- $this->gatherAlterColumnSQL($diff->getName($this), $columnDiff, $sql, $queryParts);
- }
-
- foreach ($diff->renamedColumns as $oldColumnName => $column) {
- if ($this->onSchemaAlterTableRenameColumn($oldColumnName, $column, $diff, $columnSql)) {
- continue;
- }
-
- $oldColumnName = new Identifier($oldColumnName);
-
- $queryParts[] = 'RENAME COLUMN ' . $oldColumnName->getQuotedName($this) .
- ' TO ' . $column->getQuotedName($this);
- }
-
- $tableSql = [];
-
- if (! $this->onSchemaAlterTable($diff, $tableSql)) {
- if (count($queryParts) > 0) {
- $sql[] = 'ALTER TABLE ' . $diff->getName($this)->getQuotedName($this) . ' ' . implode(' ', $queryParts);
- }
-
- // Some table alteration operations require a table reorganization.
- if (! empty($diff->removedColumns) || ! empty($diff->changedColumns)) {
- $sql[] = "CALL SYSPROC.ADMIN_CMD ('REORG TABLE " . $diff->getName($this)->getQuotedName($this) . "')";
- }
-
- $sql = array_merge($sql, $commentsSQL);
-
- $newName = $diff->getNewName();
-
- if ($newName !== false) {
- $sql[] = sprintf(
- 'RENAME TABLE %s TO %s',
- $diff->getName($this)->getQuotedName($this),
- $newName->getQuotedName($this)
- );
- }
-
- $sql = array_merge(
- $this->getPreAlterTableIndexForeignKeySQL($diff),
- $sql,
- $this->getPostAlterTableIndexForeignKeySQL($diff)
- );
- }
-
- return array_merge($sql, $tableSql, $columnSql);
- }
-
- /**
- * Gathers the table alteration SQL for a given column diff.
- *
- * @param Identifier $table The table to gather the SQL for.
- * @param ColumnDiff $columnDiff The column diff to evaluate.
- * @param string[] $sql The sequence of table alteration statements to fill.
- * @param mixed[] $queryParts The sequence of column alteration clauses to fill.
- */
- private function gatherAlterColumnSQL(Identifier $table, ColumnDiff $columnDiff, array &$sql, array &$queryParts)
- {
- $alterColumnClauses = $this->getAlterColumnClausesSQL($columnDiff);
-
- if (empty($alterColumnClauses)) {
- return;
- }
-
- // If we have a single column alteration, we can append the clause to the main query.
- if (count($alterColumnClauses) === 1) {
- $queryParts[] = current($alterColumnClauses);
-
- return;
- }
-
- // We have multiple alterations for the same column,
- // so we need to trigger a complete ALTER TABLE statement
- // for each ALTER COLUMN clause.
- foreach ($alterColumnClauses as $alterColumnClause) {
- $sql[] = 'ALTER TABLE ' . $table->getQuotedName($this) . ' ' . $alterColumnClause;
- }
- }
-
- /**
- * Returns the ALTER COLUMN SQL clauses for altering a column described by the given column diff.
- *
- * @param ColumnDiff $columnDiff The column diff to evaluate.
- *
- * @return string[]
- */
- private function getAlterColumnClausesSQL(ColumnDiff $columnDiff)
- {
- $column = $columnDiff->column->toArray();
-
- $alterClause = 'ALTER COLUMN ' . $columnDiff->column->getQuotedName($this);
-
- if ($column['columnDefinition']) {
- return [$alterClause . ' ' . $column['columnDefinition']];
- }
-
- $clauses = [];
-
- if ($columnDiff->hasChanged('type') ||
- $columnDiff->hasChanged('length') ||
- $columnDiff->hasChanged('precision') ||
- $columnDiff->hasChanged('scale') ||
- $columnDiff->hasChanged('fixed')
- ) {
- $clauses[] = $alterClause . ' SET DATA TYPE ' . $column['type']->getSQLDeclaration($column, $this);
- }
-
- if ($columnDiff->hasChanged('notnull')) {
- $clauses[] = $column['notnull'] ? $alterClause . ' SET NOT NULL' : $alterClause . ' DROP NOT NULL';
- }
-
- if ($columnDiff->hasChanged('default')) {
- if (isset($column['default'])) {
- $defaultClause = $this->getDefaultValueDeclarationSQL($column);
-
- if ($defaultClause) {
- $clauses[] = $alterClause . ' SET' . $defaultClause;
- }
- } else {
- $clauses[] = $alterClause . ' DROP DEFAULT';
- }
- }
-
- return $clauses;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getPreAlterTableIndexForeignKeySQL(TableDiff $diff)
- {
- $sql = [];
- $table = $diff->getName($this)->getQuotedName($this);
-
- foreach ($diff->removedIndexes as $remKey => $remIndex) {
- foreach ($diff->addedIndexes as $addKey => $addIndex) {
- if ($remIndex->getColumns() === $addIndex->getColumns()) {
- if ($remIndex->isPrimary()) {
- $sql[] = 'ALTER TABLE ' . $table . ' DROP PRIMARY KEY';
- } elseif ($remIndex->isUnique()) {
- $sql[] = 'ALTER TABLE ' . $table . ' DROP UNIQUE ' . $remIndex->getQuotedName($this);
- } else {
- $sql[] = $this->getDropIndexSQL($remIndex, $table);
- }
-
- $sql[] = $this->getCreateIndexSQL($addIndex, $table);
-
- unset($diff->removedIndexes[$remKey], $diff->addedIndexes[$addKey]);
-
- break;
- }
- }
- }
-
- $sql = array_merge($sql, parent::getPreAlterTableIndexForeignKeySQL($diff));
-
- return $sql;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getRenameIndexSQL($oldIndexName, Index $index, $tableName)
- {
- if (strpos($tableName, '.') !== false) {
- [$schema] = explode('.', $tableName);
- $oldIndexName = $schema . '.' . $oldIndexName;
- }
-
- return ['RENAME INDEX ' . $oldIndexName . ' TO ' . $index->getQuotedName($this)];
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDefaultValueDeclarationSQL($field)
- {
- if (! empty($field['autoincrement'])) {
- return '';
- }
-
- if (isset($field['version']) && $field['version']) {
- if ((string) $field['type'] !== 'DateTime') {
- $field['default'] = '1';
- }
- }
-
- return parent::getDefaultValueDeclarationSQL($field);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getEmptyIdentityInsertSQL($tableName, $identifierColumnName)
- {
- return 'INSERT INTO ' . $tableName . ' (' . $identifierColumnName . ') VALUES (DEFAULT)';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCreateTemporaryTableSnippetSQL()
- {
- return 'DECLARE GLOBAL TEMPORARY TABLE';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getTemporaryTableName($tableName)
- {
- return 'SESSION.' . $tableName;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function doModifyLimitQuery($query, $limit, $offset = null)
- {
- $where = [];
-
- if ($offset > 0) {
- $where[] = sprintf('db22.DC_ROWNUM >= %d', $offset + 1);
- }
-
- if ($limit !== null) {
- $where[] = sprintf('db22.DC_ROWNUM <= %d', $offset + $limit);
- }
-
- if (empty($where)) {
- return $query;
- }
-
- // Todo OVER() needs ORDER BY data!
- return sprintf(
- 'SELECT db22.* FROM (SELECT db21.*, ROW_NUMBER() OVER() AS DC_ROWNUM FROM (%s) db21) db22 WHERE %s',
- $query,
- implode(' AND ', $where)
- );
- }
-
- /**
- * {@inheritDoc}
- */
- public function getLocateExpression($str, $substr, $startPos = false)
- {
- if ($startPos === false) {
- return 'LOCATE(' . $substr . ', ' . $str . ')';
- }
-
- return 'LOCATE(' . $substr . ', ' . $str . ', ' . $startPos . ')';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getSubstringExpression($value, $from, $length = null)
- {
- if ($length === null) {
- return 'SUBSTR(' . $value . ', ' . $from . ')';
- }
-
- return 'SUBSTR(' . $value . ', ' . $from . ', ' . $length . ')';
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsIdentityColumns()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function prefersIdentityColumns()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- *
- * DB2 returns all column names in SQL result sets in uppercase.
- */
- public function getSQLResultCasing($column)
- {
- return strtoupper($column);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getForUpdateSQL()
- {
- return ' WITH RR USE AND KEEP UPDATE LOCKS';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDummySelectSQL()
- {
- $expression = func_num_args() > 0 ? func_get_arg(0) : '1';
-
- return sprintf('SELECT %s FROM sysibm.sysdummy1', $expression);
- }
-
- /**
- * {@inheritDoc}
- *
- * DB2 supports savepoints, but they work semantically different than on other vendor platforms.
- *
- * TODO: We have to investigate how to get DB2 up and running with savepoints.
- */
- public function supportsSavepoints()
- {
- return false;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getReservedKeywordsClass()
- {
- return Keywords\DB2Keywords::class;
- }
-
- public function getListTableCommentsSQL(string $table) : string
- {
- return sprintf(
- <<<'SQL'
-SELECT REMARKS
- FROM SYSIBM.SYSTABLES
- WHERE NAME = UPPER( %s )
-SQL
- ,
- $this->quoteStringLiteral($table)
- );
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/DateIntervalUnit.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/DateIntervalUnit.php
deleted file mode 100644
index ec97d0ef3..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/DateIntervalUnit.php
+++ /dev/null
@@ -1,28 +0,0 @@
-_getCommonIntegerTypeDeclarationSQL($field);
- }
-
- /**
- * {@inheritDoc}
- */
- protected function _getCommonIntegerTypeDeclarationSQL(array $columnDef)
- {
- $autoinc = '';
- if (! empty($columnDef['autoincrement'])) {
- $autoinc = ' AUTO_INCREMENT';
- }
-
- return $autoinc;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getBigIntTypeDeclarationSQL(array $field)
- {
- return 'BIGINT' . $this->_getCommonIntegerTypeDeclarationSQL($field);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getSmallIntTypeDeclarationSQL(array $field)
- {
- return 'INT' . $this->_getCommonIntegerTypeDeclarationSQL($field);
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed)
- {
- return $length ? 'VARCHAR(' . $length . ')' : 'VARCHAR(255)';
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getBinaryTypeDeclarationSQLSnippet($length, $fixed)
- {
- return 'VARBINARY(' . ($length ?: 255) . ')';
- }
-
- /**
- * {@inheritDoc}
- */
- protected function initializeDoctrineTypeMappings()
- {
- $this->doctrineTypeMapping = [
- 'boolean' => 'boolean',
- 'varchar' => 'string',
- 'varbinary' => 'binary',
- 'integer' => 'integer',
- 'blob' => 'blob',
- 'decimal' => 'decimal',
- 'datetime' => 'datetime',
- 'date' => 'date',
- 'time' => 'time',
- 'text' => 'text',
- 'timestamp' => 'datetime',
- 'double' => 'float',
- 'bigint' => 'bigint',
- ];
- }
-
- /**
- * {@inheritDoc}
- */
- public function getClobTypeDeclarationSQL(array $field)
- {
- return 'TEXT';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getBlobTypeDeclarationSQL(array $field)
- {
- return 'BLOB';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCreateDatabaseSQL($name)
- {
- return 'CREATE DATABASE ' . $name;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDropDatabaseSQL($name)
- {
- return 'DROP DATABASE ' . $name;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function _getCreateTableSQL($tableName, array $columns, array $options = [])
- {
- $queryFields = $this->getColumnDeclarationListSQL($columns);
-
- if (isset($options['uniqueConstraints']) && ! empty($options['uniqueConstraints'])) {
- foreach ($options['uniqueConstraints'] as $index => $definition) {
- $queryFields .= ', ' . $this->getUniqueConstraintDeclarationSQL($index, $definition);
- }
- }
-
- // add all indexes
- if (isset($options['indexes']) && ! empty($options['indexes'])) {
- foreach ($options['indexes'] as $index => $definition) {
- $queryFields .= ', ' . $this->getIndexDeclarationSQL($index, $definition);
- }
- }
-
- // attach all primary keys
- if (isset($options['primary']) && ! empty($options['primary'])) {
- $keyColumns = array_unique(array_values($options['primary']));
- $queryFields .= ', PRIMARY KEY(' . implode(', ', $keyColumns) . ')';
- }
-
- $query = 'CREATE ';
-
- if (! empty($options['temporary'])) {
- $query .= 'TEMPORARY ';
- }
-
- $query .= 'TABLE ' . $tableName . ' (' . $queryFields . ') ';
- $query .= $this->buildTableOptions($options);
- $query .= $this->buildPartitionOptions($options);
-
- $sql = [$query];
-
- if (isset($options['foreignKeys'])) {
- foreach ((array) $options['foreignKeys'] as $definition) {
- $sql[] = $this->getCreateForeignKeySQL($definition, $tableName);
- }
- }
-
- return $sql;
- }
-
- /**
- * Build SQL for table options
- *
- * @param mixed[] $options
- *
- * @return string
- */
- private function buildTableOptions(array $options)
- {
- if (isset($options['table_options'])) {
- return $options['table_options'];
- }
-
- $tableOptions = [];
-
- // Collate
- if (! isset($options['collate'])) {
- $options['collate'] = 'utf8_unicode_ci';
- }
-
- $tableOptions[] = sprintf('COLLATE %s', $options['collate']);
-
- // Engine
- if (! isset($options['engine'])) {
- $options['engine'] = 'InnoDB';
- }
-
- $tableOptions[] = sprintf('ENGINE = %s', $options['engine']);
-
- // Auto increment
- if (isset($options['auto_increment'])) {
- $tableOptions[] = sprintf('AUTO_INCREMENT = %s', $options['auto_increment']);
- }
-
- // Comment
- if (isset($options['comment'])) {
- $comment = trim($options['comment'], " '");
-
- $tableOptions[] = sprintf('COMMENT = %s ', $this->quoteStringLiteral($comment));
- }
-
- // Row format
- if (isset($options['row_format'])) {
- $tableOptions[] = sprintf('ROW_FORMAT = %s', $options['row_format']);
- }
-
- return implode(' ', $tableOptions);
- }
-
- /**
- * Build SQL for partition options.
- *
- * @param mixed[] $options
- *
- * @return string
- */
- private function buildPartitionOptions(array $options)
- {
- return isset($options['partition_options'])
- ? ' ' . $options['partition_options']
- : '';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListDatabasesSQL()
- {
- return "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE CATALOG_NAME='LOCAL'";
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getReservedKeywordsClass()
- {
- return Keywords\DrizzleKeywords::class;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTablesSQL()
- {
- return "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE' AND TABLE_SCHEMA=DATABASE()";
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTableColumnsSQL($table, $database = null)
- {
- if ($database) {
- $databaseSQL = $this->quoteStringLiteral($database);
- } else {
- $databaseSQL = 'DATABASE()';
- }
-
- return 'SELECT COLUMN_NAME, DATA_TYPE, COLUMN_COMMENT, IS_NULLABLE, IS_AUTO_INCREMENT, CHARACTER_MAXIMUM_LENGTH, COLUMN_DEFAULT,' .
- ' NUMERIC_PRECISION, NUMERIC_SCALE, COLLATION_NAME' .
- ' FROM DATA_DICTIONARY.COLUMNS' .
- ' WHERE TABLE_SCHEMA=' . $databaseSQL . ' AND TABLE_NAME = ' . $this->quoteStringLiteral($table);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTableForeignKeysSQL($table, $database = null)
- {
- if ($database) {
- $databaseSQL = $this->quoteStringLiteral($database);
- } else {
- $databaseSQL = 'DATABASE()';
- }
-
- return 'SELECT CONSTRAINT_NAME, CONSTRAINT_COLUMNS, REFERENCED_TABLE_NAME, REFERENCED_TABLE_COLUMNS, UPDATE_RULE, DELETE_RULE' .
- ' FROM DATA_DICTIONARY.FOREIGN_KEYS' .
- ' WHERE CONSTRAINT_SCHEMA=' . $databaseSQL . ' AND CONSTRAINT_TABLE=' . $this->quoteStringLiteral($table);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTableIndexesSQL($table, $database = null)
- {
- if ($database) {
- $databaseSQL = $this->quoteStringLiteral($database);
- } else {
- $databaseSQL = 'DATABASE()';
- }
-
- return "SELECT INDEX_NAME AS 'key_name', COLUMN_NAME AS 'column_name', IS_USED_IN_PRIMARY AS 'primary', IS_UNIQUE=0 AS 'non_unique'" .
- ' FROM DATA_DICTIONARY.INDEX_PARTS' .
- ' WHERE TABLE_SCHEMA=' . $databaseSQL . ' AND TABLE_NAME=' . $this->quoteStringLiteral($table);
- }
-
- /**
- * {@inheritDoc}
- */
- public function prefersIdentityColumns()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsIdentityColumns()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsInlineColumnComments()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsViews()
- {
- return false;
- }
-
- /**
- * {@inheritdoc}
- */
- public function supportsColumnCollation()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDropIndexSQL($index, $table = null)
- {
- if ($index instanceof Index) {
- $indexName = $index->getQuotedName($this);
- } elseif (is_string($index)) {
- $indexName = $index;
- } else {
- throw new InvalidArgumentException('DrizzlePlatform::getDropIndexSQL() expects $index parameter to be string or \Doctrine\DBAL\Schema\Index.');
- }
-
- if ($table instanceof Table) {
- $table = $table->getQuotedName($this);
- } elseif (! is_string($table)) {
- throw new InvalidArgumentException('DrizzlePlatform::getDropIndexSQL() expects $table parameter to be string or \Doctrine\DBAL\Schema\Table.');
- }
-
- if ($index instanceof Index && $index->isPrimary()) {
- // drizzle primary keys are always named "PRIMARY",
- // so we cannot use them in statements because of them being keyword.
- return $this->getDropPrimaryKeySQL($table);
- }
-
- return 'DROP INDEX ' . $indexName . ' ON ' . $table;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getDropPrimaryKeySQL($table)
- {
- return 'ALTER TABLE ' . $table . ' DROP PRIMARY KEY';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateTimeTypeDeclarationSQL(array $fieldDeclaration)
- {
- if (isset($fieldDeclaration['version']) && $fieldDeclaration['version'] === true) {
- return 'TIMESTAMP';
- }
-
- return 'DATETIME';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getTimeTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'TIME';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'DATE';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getAlterTableSQL(TableDiff $diff)
- {
- $columnSql = [];
- $queryParts = [];
-
- $newName = $diff->getNewName();
-
- if ($newName !== false) {
- $queryParts[] = 'RENAME TO ' . $newName->getQuotedName($this);
- }
-
- foreach ($diff->addedColumns as $column) {
- if ($this->onSchemaAlterTableAddColumn($column, $diff, $columnSql)) {
- continue;
- }
-
- $columnArray = $column->toArray();
- $columnArray['comment'] = $this->getColumnComment($column);
- $queryParts[] = 'ADD ' . $this->getColumnDeclarationSQL($column->getQuotedName($this), $columnArray);
- }
-
- foreach ($diff->removedColumns as $column) {
- if ($this->onSchemaAlterTableRemoveColumn($column, $diff, $columnSql)) {
- continue;
- }
-
- $queryParts[] = 'DROP ' . $column->getQuotedName($this);
- }
-
- foreach ($diff->changedColumns as $columnDiff) {
- if ($this->onSchemaAlterTableChangeColumn($columnDiff, $diff, $columnSql)) {
- continue;
- }
-
- $column = $columnDiff->column;
- $columnArray = $column->toArray();
-
- // Do not generate column alteration clause if type is binary and only fixed property has changed.
- // Drizzle only supports binary type columns with variable length.
- // Avoids unnecessary table alteration statements.
- if ($columnArray['type'] instanceof BinaryType &&
- $columnDiff->hasChanged('fixed') &&
- count($columnDiff->changedProperties) === 1
- ) {
- continue;
- }
-
- $columnArray['comment'] = $this->getColumnComment($column);
- $queryParts[] = 'CHANGE ' . ($columnDiff->getOldColumnName()->getQuotedName($this)) . ' '
- . $this->getColumnDeclarationSQL($column->getQuotedName($this), $columnArray);
- }
-
- foreach ($diff->renamedColumns as $oldColumnName => $column) {
- if ($this->onSchemaAlterTableRenameColumn($oldColumnName, $column, $diff, $columnSql)) {
- continue;
- }
-
- $oldColumnName = new Identifier($oldColumnName);
-
- $columnArray = $column->toArray();
- $columnArray['comment'] = $this->getColumnComment($column);
- $queryParts[] = 'CHANGE ' . $oldColumnName->getQuotedName($this) . ' '
- . $this->getColumnDeclarationSQL($column->getQuotedName($this), $columnArray);
- }
-
- $sql = [];
- $tableSql = [];
-
- if (! $this->onSchemaAlterTable($diff, $tableSql)) {
- if (count($queryParts) > 0) {
- $sql[] = 'ALTER TABLE ' . $diff->getName($this)->getQuotedName($this) . ' ' . implode(', ', $queryParts);
- }
- $sql = array_merge(
- $this->getPreAlterTableIndexForeignKeySQL($diff),
- $sql,
- $this->getPostAlterTableIndexForeignKeySQL($diff)
- );
- }
-
- return array_merge($sql, $tableSql, $columnSql);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDropTemporaryTableSQL($table)
- {
- if ($table instanceof Table) {
- $table = $table->getQuotedName($this);
- } elseif (! is_string($table)) {
- throw new InvalidArgumentException('getDropTableSQL() expects $table parameter to be string or \Doctrine\DBAL\Schema\Table.');
- }
-
- return 'DROP TEMPORARY TABLE ' . $table;
- }
-
- /**
- * {@inheritDoc}
- */
- public function convertBooleans($item)
- {
- if (is_array($item)) {
- foreach ($item as $key => $value) {
- if (! is_bool($value) && ! is_numeric($value)) {
- continue;
- }
-
- $item[$key] = $value ? 'true' : 'false';
- }
- } elseif (is_bool($item) || is_numeric($item)) {
- $item = $item ? 'true' : 'false';
- }
-
- return $item;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getLocateExpression($str, $substr, $startPos = false)
- {
- if ($startPos === false) {
- return 'LOCATE(' . $substr . ', ' . $str . ')';
- }
-
- return 'LOCATE(' . $substr . ', ' . $str . ', ' . $startPos . ')';
- }
-
- /**
- * {@inheritDoc}
- *
- * @deprecated Use application-generated UUIDs instead
- */
- public function getGuidExpression()
- {
- return 'UUID()';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getRegexpExpression()
- {
- return 'RLIKE';
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/DB2Keywords.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/DB2Keywords.php
deleted file mode 100644
index 8533f579d..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/DB2Keywords.php
+++ /dev/null
@@ -1,420 +0,0 @@
-keywords === null) {
- $this->initializeKeywords();
- }
-
- return isset($this->keywords[strtoupper($word)]);
- }
-
- /**
- * @return void
- */
- protected function initializeKeywords()
- {
- $this->keywords = array_flip(array_map('strtoupper', $this->getKeywords()));
- }
-
- /**
- * Returns the list of keywords.
- *
- * @return string[]
- */
- abstract protected function getKeywords();
-
- /**
- * Returns the name of this keyword list.
- *
- * @return string
- */
- abstract public function getName();
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/MariaDb102Keywords.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/MariaDb102Keywords.php
deleted file mode 100644
index 1b31c7682..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/MariaDb102Keywords.php
+++ /dev/null
@@ -1,274 +0,0 @@
-keywordLists = $keywordLists;
- }
-
- /**
- * @return string[]
- */
- public function getViolations()
- {
- return $this->violations;
- }
-
- /**
- * @param string $word
- *
- * @return string[]
- */
- private function isReservedWord($word)
- {
- if ($word[0] === '`') {
- $word = str_replace('`', '', $word);
- }
-
- $keywordLists = [];
- foreach ($this->keywordLists as $keywordList) {
- if (! $keywordList->isKeyword($word)) {
- continue;
- }
-
- $keywordLists[] = $keywordList->getName();
- }
-
- return $keywordLists;
- }
-
- /**
- * @param string $asset
- * @param string[] $violatedPlatforms
- *
- * @return void
- */
- private function addViolation($asset, $violatedPlatforms)
- {
- if (! $violatedPlatforms) {
- return;
- }
-
- $this->violations[] = $asset . ' keyword violations: ' . implode(', ', $violatedPlatforms);
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptColumn(Table $table, Column $column)
- {
- $this->addViolation(
- 'Table ' . $table->getName() . ' column ' . $column->getName(),
- $this->isReservedWord($column->getName())
- );
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptForeignKey(Table $localTable, ForeignKeyConstraint $fkConstraint)
- {
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptIndex(Table $table, Index $index)
- {
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptSchema(Schema $schema)
- {
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptSequence(Sequence $sequence)
- {
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptTable(Table $table)
- {
- $this->addViolation(
- 'Table ' . $table->getName(),
- $this->isReservedWord($table->getName())
- );
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/SQLAnywhere11Keywords.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/SQLAnywhere11Keywords.php
deleted file mode 100644
index 09513c577..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/SQLAnywhere11Keywords.php
+++ /dev/null
@@ -1,39 +0,0 @@
-doctrineTypeMapping['json'] = Types::JSON;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySQL57Platform.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySQL57Platform.php
deleted file mode 100644
index 1db7d6689..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySQL57Platform.php
+++ /dev/null
@@ -1,71 +0,0 @@
-getQuotedName($this)];
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getReservedKeywordsClass()
- {
- return Keywords\MySQL57Keywords::class;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function initializeDoctrineTypeMappings()
- {
- parent::initializeDoctrineTypeMappings();
-
- $this->doctrineTypeMapping['json'] = Types::JSON;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySQL80Platform.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySQL80Platform.php
deleted file mode 100644
index f6d4be9dc..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySQL80Platform.php
+++ /dev/null
@@ -1,17 +0,0 @@
- 0) {
- $query .= ' OFFSET ' . $offset;
- }
- } elseif ($offset > 0) {
- // 2^64-1 is the maximum of unsigned BIGINT, the biggest limit possible
- $query .= ' LIMIT 18446744073709551615 OFFSET ' . $offset;
- }
-
- return $query;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getIdentifierQuoteCharacter()
- {
- return '`';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getRegexpExpression()
- {
- return 'RLIKE';
- }
-
- /**
- * {@inheritDoc}
- *
- * @deprecated Use application-generated UUIDs instead
- */
- public function getGuidExpression()
- {
- return 'UUID()';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getLocateExpression($str, $substr, $startPos = false)
- {
- if ($startPos === false) {
- return 'LOCATE(' . $substr . ', ' . $str . ')';
- }
-
- return 'LOCATE(' . $substr . ', ' . $str . ', ' . $startPos . ')';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getConcatExpression()
- {
- return sprintf('CONCAT(%s)', implode(', ', func_get_args()));
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getDateArithmeticIntervalExpression($date, $operator, $interval, $unit)
- {
- $function = $operator === '+' ? 'DATE_ADD' : 'DATE_SUB';
-
- return $function . '(' . $date . ', INTERVAL ' . $interval . ' ' . $unit . ')';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateDiffExpression($date1, $date2)
- {
- return 'DATEDIFF(' . $date1 . ', ' . $date2 . ')';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListDatabasesSQL()
- {
- return 'SHOW DATABASES';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTableConstraintsSQL($table)
- {
- return 'SHOW INDEX FROM ' . $table;
- }
-
- /**
- * {@inheritDoc}
- *
- * Two approaches to listing the table indexes. The information_schema is
- * preferred, because it doesn't cause problems with SQL keywords such as "order" or "table".
- */
- public function getListTableIndexesSQL($table, $currentDatabase = null)
- {
- if ($currentDatabase) {
- $currentDatabase = $this->quoteStringLiteral($currentDatabase);
- $table = $this->quoteStringLiteral($table);
-
- return 'SELECT NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, COLUMN_NAME AS Column_Name,' .
- ' SUB_PART AS Sub_Part, INDEX_TYPE AS Index_Type' .
- ' FROM information_schema.STATISTICS WHERE TABLE_NAME = ' . $table .
- ' AND TABLE_SCHEMA = ' . $currentDatabase .
- ' ORDER BY SEQ_IN_INDEX ASC';
- }
-
- return 'SHOW INDEX FROM ' . $table;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListViewsSQL($database)
- {
- $database = $this->quoteStringLiteral($database);
-
- return 'SELECT * FROM information_schema.VIEWS WHERE TABLE_SCHEMA = ' . $database;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTableForeignKeysSQL($table, $database = null)
- {
- $table = $this->quoteStringLiteral($table);
-
- if ($database !== null) {
- $database = $this->quoteStringLiteral($database);
- }
-
- $sql = 'SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, ' .
- 'k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ ' .
- 'FROM information_schema.key_column_usage k /*!50116 ' .
- 'INNER JOIN information_schema.referential_constraints c ON ' .
- ' c.constraint_name = k.constraint_name AND ' .
- ' c.table_name = ' . $table . ' */ WHERE k.table_name = ' . $table;
-
- $databaseNameSql = $database ?? 'DATABASE()';
-
- $sql .= ' AND k.table_schema = ' . $databaseNameSql . ' /*!50116 AND c.constraint_schema = ' . $databaseNameSql . ' */';
- $sql .= ' AND k.`REFERENCED_COLUMN_NAME` is not NULL';
-
- return $sql;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCreateViewSQL($name, $sql)
- {
- return 'CREATE VIEW ' . $name . ' AS ' . $sql;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDropViewSQL($name)
- {
- return 'DROP VIEW ' . $name;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed)
- {
- return $fixed ? ($length ? 'CHAR(' . $length . ')' : 'CHAR(255)')
- : ($length ? 'VARCHAR(' . $length . ')' : 'VARCHAR(255)');
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getBinaryTypeDeclarationSQLSnippet($length, $fixed)
- {
- return $fixed ? 'BINARY(' . ($length ?: 255) . ')' : 'VARBINARY(' . ($length ?: 255) . ')';
- }
-
- /**
- * Gets the SQL snippet used to declare a CLOB column type.
- * TINYTEXT : 2 ^ 8 - 1 = 255
- * TEXT : 2 ^ 16 - 1 = 65535
- * MEDIUMTEXT : 2 ^ 24 - 1 = 16777215
- * LONGTEXT : 2 ^ 32 - 1 = 4294967295
- *
- * {@inheritDoc}
- */
- public function getClobTypeDeclarationSQL(array $field)
- {
- if (! empty($field['length']) && is_numeric($field['length'])) {
- $length = $field['length'];
-
- if ($length <= static::LENGTH_LIMIT_TINYTEXT) {
- return 'TINYTEXT';
- }
-
- if ($length <= static::LENGTH_LIMIT_TEXT) {
- return 'TEXT';
- }
-
- if ($length <= static::LENGTH_LIMIT_MEDIUMTEXT) {
- return 'MEDIUMTEXT';
- }
- }
-
- return 'LONGTEXT';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateTimeTypeDeclarationSQL(array $fieldDeclaration)
- {
- if (isset($fieldDeclaration['version']) && $fieldDeclaration['version'] === true) {
- return 'TIMESTAMP';
- }
-
- return 'DATETIME';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'DATE';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getTimeTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'TIME';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getBooleanTypeDeclarationSQL(array $field)
- {
- return 'TINYINT(1)';
- }
-
- /**
- * Obtain DBMS specific SQL code portion needed to set the COLLATION
- * of a field declaration to be used in statements like CREATE TABLE.
- *
- * @deprecated Deprecated since version 2.5, Use {@link self::getColumnCollationDeclarationSQL()} instead.
- *
- * @param string $collation name of the collation
- *
- * @return string DBMS specific SQL code portion needed to set the COLLATION
- * of a field declaration.
- */
- public function getCollationFieldDeclaration($collation)
- {
- return $this->getColumnCollationDeclarationSQL($collation);
- }
-
- /**
- * {@inheritDoc}
- *
- * MySql prefers "autoincrement" identity columns since sequences can only
- * be emulated with a table.
- */
- public function prefersIdentityColumns()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- *
- * MySql supports this through AUTO_INCREMENT columns.
- */
- public function supportsIdentityColumns()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsInlineColumnComments()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsColumnCollation()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTablesSQL()
- {
- return "SHOW FULL TABLES WHERE Table_type = 'BASE TABLE'";
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTableColumnsSQL($table, $database = null)
- {
- $table = $this->quoteStringLiteral($table);
-
- if ($database) {
- $database = $this->quoteStringLiteral($database);
- } else {
- $database = 'DATABASE()';
- }
-
- return 'SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, ' .
- 'COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, ' .
- 'CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation ' .
- 'FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ' . $database . ' AND TABLE_NAME = ' . $table .
- ' ORDER BY ORDINAL_POSITION ASC';
- }
-
- public function getListTableMetadataSQL(string $table, ?string $database = null) : string
- {
- return sprintf(
- <<<'SQL'
-SELECT ENGINE, AUTO_INCREMENT, TABLE_COLLATION, TABLE_COMMENT, CREATE_OPTIONS
-FROM information_schema.TABLES
-WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA = %s AND TABLE_NAME = %s
-SQL
- ,
- $database ? $this->quoteStringLiteral($database) : 'DATABASE()',
- $this->quoteStringLiteral($table)
- );
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCreateDatabaseSQL($name)
- {
- return 'CREATE DATABASE ' . $name;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDropDatabaseSQL($name)
- {
- return 'DROP DATABASE ' . $name;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function _getCreateTableSQL($tableName, array $columns, array $options = [])
- {
- $queryFields = $this->getColumnDeclarationListSQL($columns);
-
- if (isset($options['uniqueConstraints']) && ! empty($options['uniqueConstraints'])) {
- foreach ($options['uniqueConstraints'] as $index => $definition) {
- $queryFields .= ', ' . $this->getUniqueConstraintDeclarationSQL($index, $definition);
- }
- }
-
- // add all indexes
- if (isset($options['indexes']) && ! empty($options['indexes'])) {
- foreach ($options['indexes'] as $index => $definition) {
- $queryFields .= ', ' . $this->getIndexDeclarationSQL($index, $definition);
- }
- }
-
- // attach all primary keys
- if (isset($options['primary']) && ! empty($options['primary'])) {
- $keyColumns = array_unique(array_values($options['primary']));
- $queryFields .= ', PRIMARY KEY(' . implode(', ', $keyColumns) . ')';
- }
-
- $query = 'CREATE ';
-
- if (! empty($options['temporary'])) {
- $query .= 'TEMPORARY ';
- }
-
- $query .= 'TABLE ' . $tableName . ' (' . $queryFields . ') ';
- $query .= $this->buildTableOptions($options);
- $query .= $this->buildPartitionOptions($options);
-
- $sql = [$query];
- $engine = 'INNODB';
-
- if (isset($options['engine'])) {
- $engine = strtoupper(trim($options['engine']));
- }
-
- // Propagate foreign key constraints only for InnoDB.
- if (isset($options['foreignKeys']) && $engine === 'INNODB') {
- foreach ((array) $options['foreignKeys'] as $definition) {
- $sql[] = $this->getCreateForeignKeySQL($definition, $tableName);
- }
- }
-
- return $sql;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDefaultValueDeclarationSQL($field)
- {
- // Unset the default value if the given field definition does not allow default values.
- if ($field['type'] instanceof TextType || $field['type'] instanceof BlobType) {
- $field['default'] = null;
- }
-
- return parent::getDefaultValueDeclarationSQL($field);
- }
-
- /**
- * Build SQL for table options
- *
- * @param mixed[] $options
- *
- * @return string
- */
- private function buildTableOptions(array $options)
- {
- if (isset($options['table_options'])) {
- return $options['table_options'];
- }
-
- $tableOptions = [];
-
- // Charset
- if (! isset($options['charset'])) {
- $options['charset'] = 'utf8';
- }
-
- $tableOptions[] = sprintf('DEFAULT CHARACTER SET %s', $options['charset']);
-
- // Collate
- if (! isset($options['collate'])) {
- $options['collate'] = $options['charset'] . '_unicode_ci';
- }
-
- $tableOptions[] = $this->getColumnCollationDeclarationSQL($options['collate']);
-
- // Engine
- if (! isset($options['engine'])) {
- $options['engine'] = 'InnoDB';
- }
-
- $tableOptions[] = sprintf('ENGINE = %s', $options['engine']);
-
- // Auto increment
- if (isset($options['auto_increment'])) {
- $tableOptions[] = sprintf('AUTO_INCREMENT = %s', $options['auto_increment']);
- }
-
- // Comment
- if (isset($options['comment'])) {
- $tableOptions[] = sprintf('COMMENT = %s ', $this->quoteStringLiteral($options['comment']));
- }
-
- // Row format
- if (isset($options['row_format'])) {
- $tableOptions[] = sprintf('ROW_FORMAT = %s', $options['row_format']);
- }
-
- return implode(' ', $tableOptions);
- }
-
- /**
- * Build SQL for partition options.
- *
- * @param mixed[] $options
- *
- * @return string
- */
- private function buildPartitionOptions(array $options)
- {
- return isset($options['partition_options'])
- ? ' ' . $options['partition_options']
- : '';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getAlterTableSQL(TableDiff $diff)
- {
- $columnSql = [];
- $queryParts = [];
- $newName = $diff->getNewName();
-
- if ($newName !== false) {
- $queryParts[] = 'RENAME TO ' . $newName->getQuotedName($this);
- }
-
- foreach ($diff->addedColumns as $column) {
- if ($this->onSchemaAlterTableAddColumn($column, $diff, $columnSql)) {
- continue;
- }
-
- $columnArray = $column->toArray();
- $columnArray['comment'] = $this->getColumnComment($column);
- $queryParts[] = 'ADD ' . $this->getColumnDeclarationSQL($column->getQuotedName($this), $columnArray);
- }
-
- foreach ($diff->removedColumns as $column) {
- if ($this->onSchemaAlterTableRemoveColumn($column, $diff, $columnSql)) {
- continue;
- }
-
- $queryParts[] = 'DROP ' . $column->getQuotedName($this);
- }
-
- foreach ($diff->changedColumns as $columnDiff) {
- if ($this->onSchemaAlterTableChangeColumn($columnDiff, $diff, $columnSql)) {
- continue;
- }
-
- $column = $columnDiff->column;
- $columnArray = $column->toArray();
-
- // Don't propagate default value changes for unsupported column types.
- if ($columnDiff->hasChanged('default') &&
- count($columnDiff->changedProperties) === 1 &&
- ($columnArray['type'] instanceof TextType || $columnArray['type'] instanceof BlobType)
- ) {
- continue;
- }
-
- $columnArray['comment'] = $this->getColumnComment($column);
- $queryParts[] = 'CHANGE ' . ($columnDiff->getOldColumnName()->getQuotedName($this)) . ' '
- . $this->getColumnDeclarationSQL($column->getQuotedName($this), $columnArray);
- }
-
- foreach ($diff->renamedColumns as $oldColumnName => $column) {
- if ($this->onSchemaAlterTableRenameColumn($oldColumnName, $column, $diff, $columnSql)) {
- continue;
- }
-
- $oldColumnName = new Identifier($oldColumnName);
- $columnArray = $column->toArray();
- $columnArray['comment'] = $this->getColumnComment($column);
- $queryParts[] = 'CHANGE ' . $oldColumnName->getQuotedName($this) . ' '
- . $this->getColumnDeclarationSQL($column->getQuotedName($this), $columnArray);
- }
-
- if (isset($diff->addedIndexes['primary'])) {
- $keyColumns = array_unique(array_values($diff->addedIndexes['primary']->getColumns()));
- $queryParts[] = 'ADD PRIMARY KEY (' . implode(', ', $keyColumns) . ')';
- unset($diff->addedIndexes['primary']);
- } elseif (isset($diff->changedIndexes['primary'])) {
- // Necessary in case the new primary key includes a new auto_increment column
- foreach ($diff->changedIndexes['primary']->getColumns() as $columnName) {
- if (isset($diff->addedColumns[$columnName]) && $diff->addedColumns[$columnName]->getAutoincrement()) {
- $keyColumns = array_unique(array_values($diff->changedIndexes['primary']->getColumns()));
- $queryParts[] = 'DROP PRIMARY KEY';
- $queryParts[] = 'ADD PRIMARY KEY (' . implode(', ', $keyColumns) . ')';
- unset($diff->changedIndexes['primary']);
- break;
- }
- }
- }
-
- $sql = [];
- $tableSql = [];
-
- if (! $this->onSchemaAlterTable($diff, $tableSql)) {
- if (count($queryParts) > 0) {
- $sql[] = 'ALTER TABLE ' . $diff->getName($this)->getQuotedName($this) . ' ' . implode(', ', $queryParts);
- }
- $sql = array_merge(
- $this->getPreAlterTableIndexForeignKeySQL($diff),
- $sql,
- $this->getPostAlterTableIndexForeignKeySQL($diff)
- );
- }
-
- return array_merge($sql, $tableSql, $columnSql);
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getPreAlterTableIndexForeignKeySQL(TableDiff $diff)
- {
- $sql = [];
- $table = $diff->getName($this)->getQuotedName($this);
-
- foreach ($diff->changedIndexes as $changedIndex) {
- $sql = array_merge($sql, $this->getPreAlterTableAlterPrimaryKeySQL($diff, $changedIndex));
- }
-
- foreach ($diff->removedIndexes as $remKey => $remIndex) {
- $sql = array_merge($sql, $this->getPreAlterTableAlterPrimaryKeySQL($diff, $remIndex));
-
- foreach ($diff->addedIndexes as $addKey => $addIndex) {
- if ($remIndex->getColumns() === $addIndex->getColumns()) {
- $indexClause = 'INDEX ' . $addIndex->getName();
-
- if ($addIndex->isPrimary()) {
- $indexClause = 'PRIMARY KEY';
- } elseif ($addIndex->isUnique()) {
- $indexClause = 'UNIQUE INDEX ' . $addIndex->getName();
- }
-
- $query = 'ALTER TABLE ' . $table . ' DROP INDEX ' . $remIndex->getName() . ', ';
- $query .= 'ADD ' . $indexClause;
- $query .= ' (' . $this->getIndexFieldDeclarationListSQL($addIndex) . ')';
-
- $sql[] = $query;
-
- unset($diff->removedIndexes[$remKey], $diff->addedIndexes[$addKey]);
-
- break;
- }
- }
- }
-
- $engine = 'INNODB';
-
- if ($diff->fromTable instanceof Table && $diff->fromTable->hasOption('engine')) {
- $engine = strtoupper(trim($diff->fromTable->getOption('engine')));
- }
-
- // Suppress foreign key constraint propagation on non-supporting engines.
- if ($engine !== 'INNODB') {
- $diff->addedForeignKeys = [];
- $diff->changedForeignKeys = [];
- $diff->removedForeignKeys = [];
- }
-
- $sql = array_merge(
- $sql,
- $this->getPreAlterTableAlterIndexForeignKeySQL($diff),
- parent::getPreAlterTableIndexForeignKeySQL($diff),
- $this->getPreAlterTableRenameIndexForeignKeySQL($diff)
- );
-
- return $sql;
- }
-
- /**
- * @return string[]
- */
- private function getPreAlterTableAlterPrimaryKeySQL(TableDiff $diff, Index $index)
- {
- $sql = [];
-
- if (! $index->isPrimary() || ! $diff->fromTable instanceof Table) {
- return $sql;
- }
-
- $tableName = $diff->getName($this)->getQuotedName($this);
-
- // Dropping primary keys requires to unset autoincrement attribute on the particular column first.
- foreach ($index->getColumns() as $columnName) {
- if (! $diff->fromTable->hasColumn($columnName)) {
- continue;
- }
-
- $column = $diff->fromTable->getColumn($columnName);
-
- if ($column->getAutoincrement() !== true) {
- continue;
- }
-
- $column->setAutoincrement(false);
-
- $sql[] = 'ALTER TABLE ' . $tableName . ' MODIFY ' .
- $this->getColumnDeclarationSQL($column->getQuotedName($this), $column->toArray());
-
- // original autoincrement information might be needed later on by other parts of the table alteration
- $column->setAutoincrement(true);
- }
-
- return $sql;
- }
-
- /**
- * @param TableDiff $diff The table diff to gather the SQL for.
- *
- * @return string[]
- */
- private function getPreAlterTableAlterIndexForeignKeySQL(TableDiff $diff)
- {
- $sql = [];
- $table = $diff->getName($this)->getQuotedName($this);
-
- foreach ($diff->changedIndexes as $changedIndex) {
- // Changed primary key
- if (! $changedIndex->isPrimary() || ! ($diff->fromTable instanceof Table)) {
- continue;
- }
-
- foreach ($diff->fromTable->getPrimaryKeyColumns() as $columnName) {
- $column = $diff->fromTable->getColumn($columnName);
-
- // Check if an autoincrement column was dropped from the primary key.
- if (! $column->getAutoincrement() || in_array($columnName, $changedIndex->getColumns())) {
- continue;
- }
-
- // The autoincrement attribute needs to be removed from the dropped column
- // before we can drop and recreate the primary key.
- $column->setAutoincrement(false);
-
- $sql[] = 'ALTER TABLE ' . $table . ' MODIFY ' .
- $this->getColumnDeclarationSQL($column->getQuotedName($this), $column->toArray());
-
- // Restore the autoincrement attribute as it might be needed later on
- // by other parts of the table alteration.
- $column->setAutoincrement(true);
- }
- }
-
- return $sql;
- }
-
- /**
- * @param TableDiff $diff The table diff to gather the SQL for.
- *
- * @return string[]
- */
- protected function getPreAlterTableRenameIndexForeignKeySQL(TableDiff $diff)
- {
- $sql = [];
- $tableName = $diff->getName($this)->getQuotedName($this);
-
- foreach ($this->getRemainingForeignKeyConstraintsRequiringRenamedIndexes($diff) as $foreignKey) {
- if (in_array($foreignKey, $diff->changedForeignKeys, true)) {
- continue;
- }
-
- $sql[] = $this->getDropForeignKeySQL($foreignKey, $tableName);
- }
-
- return $sql;
- }
-
- /**
- * Returns the remaining foreign key constraints that require one of the renamed indexes.
- *
- * "Remaining" here refers to the diff between the foreign keys currently defined in the associated
- * table and the foreign keys to be removed.
- *
- * @param TableDiff $diff The table diff to evaluate.
- *
- * @return ForeignKeyConstraint[]
- */
- private function getRemainingForeignKeyConstraintsRequiringRenamedIndexes(TableDiff $diff)
- {
- if (empty($diff->renamedIndexes) || ! $diff->fromTable instanceof Table) {
- return [];
- }
-
- $foreignKeys = [];
- /** @var ForeignKeyConstraint[] $remainingForeignKeys */
- $remainingForeignKeys = array_diff_key(
- $diff->fromTable->getForeignKeys(),
- $diff->removedForeignKeys
- );
-
- foreach ($remainingForeignKeys as $foreignKey) {
- foreach ($diff->renamedIndexes as $index) {
- if ($foreignKey->intersectsIndexColumns($index)) {
- $foreignKeys[] = $foreignKey;
-
- break;
- }
- }
- }
-
- return $foreignKeys;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getPostAlterTableIndexForeignKeySQL(TableDiff $diff)
- {
- return array_merge(
- parent::getPostAlterTableIndexForeignKeySQL($diff),
- $this->getPostAlterTableRenameIndexForeignKeySQL($diff)
- );
- }
-
- /**
- * @param TableDiff $diff The table diff to gather the SQL for.
- *
- * @return string[]
- */
- protected function getPostAlterTableRenameIndexForeignKeySQL(TableDiff $diff)
- {
- $sql = [];
- $newName = $diff->getNewName();
-
- if ($newName !== false) {
- $tableName = $newName->getQuotedName($this);
- } else {
- $tableName = $diff->getName($this)->getQuotedName($this);
- }
-
- foreach ($this->getRemainingForeignKeyConstraintsRequiringRenamedIndexes($diff) as $foreignKey) {
- if (in_array($foreignKey, $diff->changedForeignKeys, true)) {
- continue;
- }
-
- $sql[] = $this->getCreateForeignKeySQL($foreignKey, $tableName);
- }
-
- return $sql;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getCreateIndexSQLFlags(Index $index)
- {
- $type = '';
- if ($index->isUnique()) {
- $type .= 'UNIQUE ';
- } elseif ($index->hasFlag('fulltext')) {
- $type .= 'FULLTEXT ';
- } elseif ($index->hasFlag('spatial')) {
- $type .= 'SPATIAL ';
- }
-
- return $type;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getIntegerTypeDeclarationSQL(array $field)
- {
- return 'INT' . $this->_getCommonIntegerTypeDeclarationSQL($field);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getBigIntTypeDeclarationSQL(array $field)
- {
- return 'BIGINT' . $this->_getCommonIntegerTypeDeclarationSQL($field);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getSmallIntTypeDeclarationSQL(array $field)
- {
- return 'SMALLINT' . $this->_getCommonIntegerTypeDeclarationSQL($field);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getFloatDeclarationSQL(array $field)
- {
- return 'DOUBLE PRECISION' . $this->getUnsignedDeclaration($field);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDecimalTypeDeclarationSQL(array $columnDef)
- {
- return parent::getDecimalTypeDeclarationSQL($columnDef) . $this->getUnsignedDeclaration($columnDef);
- }
-
- /**
- * Get unsigned declaration for a column.
- *
- * @param mixed[] $columnDef
- *
- * @return string
- */
- private function getUnsignedDeclaration(array $columnDef)
- {
- return ! empty($columnDef['unsigned']) ? ' UNSIGNED' : '';
- }
-
- /**
- * {@inheritDoc}
- */
- protected function _getCommonIntegerTypeDeclarationSQL(array $columnDef)
- {
- $autoinc = '';
- if (! empty($columnDef['autoincrement'])) {
- $autoinc = ' AUTO_INCREMENT';
- }
-
- return $this->getUnsignedDeclaration($columnDef) . $autoinc;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getColumnCharsetDeclarationSQL($charset)
- {
- return 'CHARACTER SET ' . $charset;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getColumnCollationDeclarationSQL($collation)
- {
- return 'COLLATE ' . $this->quoteSingleIdentifier($collation);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getAdvancedForeignKeyOptionsSQL(ForeignKeyConstraint $foreignKey)
- {
- $query = '';
- if ($foreignKey->hasOption('match')) {
- $query .= ' MATCH ' . $foreignKey->getOption('match');
- }
- $query .= parent::getAdvancedForeignKeyOptionsSQL($foreignKey);
-
- return $query;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDropIndexSQL($index, $table = null)
- {
- if ($index instanceof Index) {
- $indexName = $index->getQuotedName($this);
- } elseif (is_string($index)) {
- $indexName = $index;
- } else {
- throw new InvalidArgumentException('MysqlPlatform::getDropIndexSQL() expects $index parameter to be string or \Doctrine\DBAL\Schema\Index.');
- }
-
- if ($table instanceof Table) {
- $table = $table->getQuotedName($this);
- } elseif (! is_string($table)) {
- throw new InvalidArgumentException('MysqlPlatform::getDropIndexSQL() expects $table parameter to be string or \Doctrine\DBAL\Schema\Table.');
- }
-
- if ($index instanceof Index && $index->isPrimary()) {
- // mysql primary keys are always named "PRIMARY",
- // so we cannot use them in statements because of them being keyword.
- return $this->getDropPrimaryKeySQL($table);
- }
-
- return 'DROP INDEX ' . $indexName . ' ON ' . $table;
- }
-
- /**
- * @param string $table
- *
- * @return string
- */
- protected function getDropPrimaryKeySQL($table)
- {
- return 'ALTER TABLE ' . $table . ' DROP PRIMARY KEY';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getSetTransactionIsolationSQL($level)
- {
- return 'SET SESSION TRANSACTION ISOLATION LEVEL ' . $this->_getTransactionIsolationLevelSQL($level);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getName()
- {
- return 'mysql';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getReadLockSQL()
- {
- return 'LOCK IN SHARE MODE';
- }
-
- /**
- * {@inheritDoc}
- */
- protected function initializeDoctrineTypeMappings()
- {
- $this->doctrineTypeMapping = [
- 'tinyint' => 'boolean',
- 'smallint' => 'smallint',
- 'mediumint' => 'integer',
- 'int' => 'integer',
- 'integer' => 'integer',
- 'bigint' => 'bigint',
- 'tinytext' => 'text',
- 'mediumtext' => 'text',
- 'longtext' => 'text',
- 'text' => 'text',
- 'varchar' => 'string',
- 'string' => 'string',
- 'char' => 'string',
- 'date' => 'date',
- 'datetime' => 'datetime',
- 'timestamp' => 'datetime',
- 'time' => 'time',
- 'float' => 'float',
- 'double' => 'float',
- 'real' => 'float',
- 'decimal' => 'decimal',
- 'numeric' => 'decimal',
- 'year' => 'date',
- 'longblob' => 'blob',
- 'blob' => 'blob',
- 'mediumblob' => 'blob',
- 'tinyblob' => 'blob',
- 'binary' => 'binary',
- 'varbinary' => 'binary',
- 'set' => 'simple_array',
- ];
- }
-
- /**
- * {@inheritDoc}
- */
- public function getVarcharMaxLength()
- {
- return 65535;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getBinaryMaxLength()
- {
- return 65535;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getReservedKeywordsClass()
- {
- return Keywords\MySQLKeywords::class;
- }
-
- /**
- * {@inheritDoc}
- *
- * MySQL commits a transaction implicitly when DROP TABLE is executed, however not
- * if DROP TEMPORARY TABLE is executed.
- */
- public function getDropTemporaryTableSQL($table)
- {
- if ($table instanceof Table) {
- $table = $table->getQuotedName($this);
- } elseif (! is_string($table)) {
- throw new InvalidArgumentException('getDropTemporaryTableSQL() expects $table parameter to be string or \Doctrine\DBAL\Schema\Table.');
- }
-
- return 'DROP TEMPORARY TABLE ' . $table;
- }
-
- /**
- * Gets the SQL Snippet used to declare a BLOB column type.
- * TINYBLOB : 2 ^ 8 - 1 = 255
- * BLOB : 2 ^ 16 - 1 = 65535
- * MEDIUMBLOB : 2 ^ 24 - 1 = 16777215
- * LONGBLOB : 2 ^ 32 - 1 = 4294967295
- *
- * {@inheritDoc}
- */
- public function getBlobTypeDeclarationSQL(array $field)
- {
- if (! empty($field['length']) && is_numeric($field['length'])) {
- $length = $field['length'];
-
- if ($length <= static::LENGTH_LIMIT_TINYBLOB) {
- return 'TINYBLOB';
- }
-
- if ($length <= static::LENGTH_LIMIT_BLOB) {
- return 'BLOB';
- }
-
- if ($length <= static::LENGTH_LIMIT_MEDIUMBLOB) {
- return 'MEDIUMBLOB';
- }
- }
-
- return 'LONGBLOB';
- }
-
- /**
- * {@inheritdoc}
- */
- public function quoteStringLiteral($str)
- {
- $str = str_replace('\\', '\\\\', $str); // MySQL requires backslashes to be escaped aswell.
-
- return parent::quoteStringLiteral($str);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDefaultTransactionIsolationLevel()
- {
- return TransactionIsolationLevel::REPEATABLE_READ;
- }
-
- /**
- * {@inheritdoc}
- */
- public function supportsColumnLengthIndexes() : bool
- {
- return true;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/OraclePlatform.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/OraclePlatform.php
deleted file mode 100644
index 21b13a2d6..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/OraclePlatform.php
+++ /dev/null
@@ -1,1206 +0,0 @@
-getBitAndComparisonExpression($value1, $value2)
- . '+' . $value2 . ')';
- }
-
- /**
- * {@inheritDoc}
- *
- * Need to specifiy minvalue, since start with is hidden in the system and MINVALUE <= START WITH.
- * Therefore we can use MINVALUE to be able to get a hint what START WITH was for later introspection
- * in {@see listSequences()}
- */
- public function getCreateSequenceSQL(Sequence $sequence)
- {
- return 'CREATE SEQUENCE ' . $sequence->getQuotedName($this) .
- ' START WITH ' . $sequence->getInitialValue() .
- ' MINVALUE ' . $sequence->getInitialValue() .
- ' INCREMENT BY ' . $sequence->getAllocationSize() .
- $this->getSequenceCacheSQL($sequence);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getAlterSequenceSQL(Sequence $sequence)
- {
- return 'ALTER SEQUENCE ' . $sequence->getQuotedName($this) .
- ' INCREMENT BY ' . $sequence->getAllocationSize()
- . $this->getSequenceCacheSQL($sequence);
- }
-
- /**
- * Cache definition for sequences
- *
- * @return string
- */
- private function getSequenceCacheSQL(Sequence $sequence)
- {
- if ($sequence->getCache() === 0) {
- return ' NOCACHE';
- }
-
- if ($sequence->getCache() === 1) {
- return ' NOCACHE';
- }
-
- if ($sequence->getCache() > 1) {
- return ' CACHE ' . $sequence->getCache();
- }
-
- return '';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getSequenceNextValSQL($sequenceName)
- {
- return 'SELECT ' . $sequenceName . '.nextval FROM DUAL';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getSetTransactionIsolationSQL($level)
- {
- return 'SET TRANSACTION ISOLATION LEVEL ' . $this->_getTransactionIsolationLevelSQL($level);
- }
-
- /**
- * {@inheritDoc}
- */
- protected function _getTransactionIsolationLevelSQL($level)
- {
- switch ($level) {
- case TransactionIsolationLevel::READ_UNCOMMITTED:
- return 'READ UNCOMMITTED';
- case TransactionIsolationLevel::READ_COMMITTED:
- return 'READ COMMITTED';
- case TransactionIsolationLevel::REPEATABLE_READ:
- case TransactionIsolationLevel::SERIALIZABLE:
- return 'SERIALIZABLE';
- default:
- return parent::_getTransactionIsolationLevelSQL($level);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public function getBooleanTypeDeclarationSQL(array $field)
- {
- return 'NUMBER(1)';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getIntegerTypeDeclarationSQL(array $field)
- {
- return 'NUMBER(10)';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getBigIntTypeDeclarationSQL(array $field)
- {
- return 'NUMBER(20)';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getSmallIntTypeDeclarationSQL(array $field)
- {
- return 'NUMBER(5)';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateTimeTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'TIMESTAMP(0)';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateTimeTzTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'TIMESTAMP(0) WITH TIME ZONE';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'DATE';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getTimeTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'DATE';
- }
-
- /**
- * {@inheritDoc}
- */
- protected function _getCommonIntegerTypeDeclarationSQL(array $columnDef)
- {
- return '';
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed)
- {
- return $fixed ? ($length ? 'CHAR(' . $length . ')' : 'CHAR(2000)')
- : ($length ? 'VARCHAR2(' . $length . ')' : 'VARCHAR2(4000)');
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getBinaryTypeDeclarationSQLSnippet($length, $fixed)
- {
- return 'RAW(' . ($length ?: $this->getBinaryMaxLength()) . ')';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getBinaryMaxLength()
- {
- return 2000;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getClobTypeDeclarationSQL(array $field)
- {
- return 'CLOB';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListDatabasesSQL()
- {
- return 'SELECT username FROM all_users';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListSequencesSQL($database)
- {
- $database = $this->normalizeIdentifier($database);
- $database = $this->quoteStringLiteral($database->getName());
-
- return 'SELECT sequence_name, min_value, increment_by FROM sys.all_sequences ' .
- 'WHERE SEQUENCE_OWNER = ' . $database;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function _getCreateTableSQL($table, array $columns, array $options = [])
- {
- $indexes = $options['indexes'] ?? [];
- $options['indexes'] = [];
- $sql = parent::_getCreateTableSQL($table, $columns, $options);
-
- foreach ($columns as $name => $column) {
- if (isset($column['sequence'])) {
- $sql[] = $this->getCreateSequenceSQL($column['sequence']);
- }
-
- if (! isset($column['autoincrement']) || ! $column['autoincrement'] &&
- (! isset($column['autoinc']) || ! $column['autoinc'])) {
- continue;
- }
-
- $sql = array_merge($sql, $this->getCreateAutoincrementSql($name, $table));
- }
-
- if (isset($indexes) && ! empty($indexes)) {
- foreach ($indexes as $index) {
- $sql[] = $this->getCreateIndexSQL($index, $table);
- }
- }
-
- return $sql;
- }
-
- /**
- * {@inheritDoc}
- *
- * @link http://ezcomponents.org/docs/api/trunk/DatabaseSchema/ezcDbSchemaOracleReader.html
- */
- public function getListTableIndexesSQL($table, $currentDatabase = null)
- {
- $table = $this->normalizeIdentifier($table);
- $table = $this->quoteStringLiteral($table->getName());
-
- return "SELECT uind_col.index_name AS name,
- (
- SELECT uind.index_type
- FROM user_indexes uind
- WHERE uind.index_name = uind_col.index_name
- ) AS type,
- decode(
- (
- SELECT uind.uniqueness
- FROM user_indexes uind
- WHERE uind.index_name = uind_col.index_name
- ),
- 'NONUNIQUE',
- 0,
- 'UNIQUE',
- 1
- ) AS is_unique,
- uind_col.column_name AS column_name,
- uind_col.column_position AS column_pos,
- (
- SELECT ucon.constraint_type
- FROM user_constraints ucon
- WHERE ucon.index_name = uind_col.index_name
- ) AS is_primary
- FROM user_ind_columns uind_col
- WHERE uind_col.table_name = " . $table . '
- ORDER BY uind_col.column_position ASC';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTablesSQL()
- {
- return 'SELECT * FROM sys.user_tables';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListViewsSQL($database)
- {
- return 'SELECT view_name, text FROM sys.user_views';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCreateViewSQL($name, $sql)
- {
- return 'CREATE VIEW ' . $name . ' AS ' . $sql;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDropViewSQL($name)
- {
- return 'DROP VIEW ' . $name;
- }
-
- /**
- * @param string $name
- * @param string $table
- * @param int $start
- *
- * @return string[]
- */
- public function getCreateAutoincrementSql($name, $table, $start = 1)
- {
- $tableIdentifier = $this->normalizeIdentifier($table);
- $quotedTableName = $tableIdentifier->getQuotedName($this);
- $unquotedTableName = $tableIdentifier->getName();
-
- $nameIdentifier = $this->normalizeIdentifier($name);
- $quotedName = $nameIdentifier->getQuotedName($this);
- $unquotedName = $nameIdentifier->getName();
-
- $sql = [];
-
- $autoincrementIdentifierName = $this->getAutoincrementIdentifierName($tableIdentifier);
-
- $idx = new Index($autoincrementIdentifierName, [$quotedName], true, true);
-
- $sql[] = 'DECLARE
- constraints_Count NUMBER;
-BEGIN
- SELECT COUNT(CONSTRAINT_NAME) INTO constraints_Count FROM USER_CONSTRAINTS WHERE TABLE_NAME = \'' . $unquotedTableName . '\' AND CONSTRAINT_TYPE = \'P\';
- IF constraints_Count = 0 OR constraints_Count = \'\' THEN
- EXECUTE IMMEDIATE \'' . $this->getCreateConstraintSQL($idx, $quotedTableName) . '\';
- END IF;
-END;';
-
- $sequenceName = $this->getIdentitySequenceName(
- $tableIdentifier->isQuoted() ? $quotedTableName : $unquotedTableName,
- $nameIdentifier->isQuoted() ? $quotedName : $unquotedName
- );
- $sequence = new Sequence($sequenceName, $start);
- $sql[] = $this->getCreateSequenceSQL($sequence);
-
- $sql[] = 'CREATE TRIGGER ' . $autoincrementIdentifierName . '
- BEFORE INSERT
- ON ' . $quotedTableName . '
- FOR EACH ROW
-DECLARE
- last_Sequence NUMBER;
- last_InsertID NUMBER;
-BEGIN
- SELECT ' . $sequenceName . '.NEXTVAL INTO :NEW.' . $quotedName . ' FROM DUAL;
- IF (:NEW.' . $quotedName . ' IS NULL OR :NEW.' . $quotedName . ' = 0) THEN
- SELECT ' . $sequenceName . '.NEXTVAL INTO :NEW.' . $quotedName . ' FROM DUAL;
- ELSE
- SELECT NVL(Last_Number, 0) INTO last_Sequence
- FROM User_Sequences
- WHERE Sequence_Name = \'' . $sequence->getName() . '\';
- SELECT :NEW.' . $quotedName . ' INTO last_InsertID FROM DUAL;
- WHILE (last_InsertID > last_Sequence) LOOP
- SELECT ' . $sequenceName . '.NEXTVAL INTO last_Sequence FROM DUAL;
- END LOOP;
- END IF;
-END;';
-
- return $sql;
- }
-
- /**
- * Returns the SQL statements to drop the autoincrement for the given table name.
- *
- * @param string $table The table name to drop the autoincrement for.
- *
- * @return string[]
- */
- public function getDropAutoincrementSql($table)
- {
- $table = $this->normalizeIdentifier($table);
- $autoincrementIdentifierName = $this->getAutoincrementIdentifierName($table);
- $identitySequenceName = $this->getIdentitySequenceName(
- $table->isQuoted() ? $table->getQuotedName($this) : $table->getName(),
- ''
- );
-
- return [
- 'DROP TRIGGER ' . $autoincrementIdentifierName,
- $this->getDropSequenceSQL($identitySequenceName),
- $this->getDropConstraintSQL($autoincrementIdentifierName, $table->getQuotedName($this)),
- ];
- }
-
- /**
- * Normalizes the given identifier.
- *
- * Uppercases the given identifier if it is not quoted by intention
- * to reflect Oracle's internal auto uppercasing strategy of unquoted identifiers.
- *
- * @param string $name The identifier to normalize.
- *
- * @return Identifier The normalized identifier.
- */
- private function normalizeIdentifier($name)
- {
- $identifier = new Identifier($name);
-
- return $identifier->isQuoted() ? $identifier : new Identifier(strtoupper($name));
- }
-
- /**
- * Returns the autoincrement primary key identifier name for the given table identifier.
- *
- * Quotes the autoincrement primary key identifier name
- * if the given table name is quoted by intention.
- *
- * @param Identifier $table The table identifier to return the autoincrement primary key identifier name for.
- *
- * @return string
- */
- private function getAutoincrementIdentifierName(Identifier $table)
- {
- $identifierName = $table->getName() . '_AI_PK';
-
- return $table->isQuoted()
- ? $this->quoteSingleIdentifier($identifierName)
- : $identifierName;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTableForeignKeysSQL($table)
- {
- $table = $this->normalizeIdentifier($table);
- $table = $this->quoteStringLiteral($table->getName());
-
- return "SELECT alc.constraint_name,
- alc.DELETE_RULE,
- cols.column_name \"local_column\",
- cols.position,
- (
- SELECT r_cols.table_name
- FROM user_cons_columns r_cols
- WHERE alc.r_constraint_name = r_cols.constraint_name
- AND r_cols.position = cols.position
- ) AS \"references_table\",
- (
- SELECT r_cols.column_name
- FROM user_cons_columns r_cols
- WHERE alc.r_constraint_name = r_cols.constraint_name
- AND r_cols.position = cols.position
- ) AS \"foreign_column\"
- FROM user_cons_columns cols
- JOIN user_constraints alc
- ON alc.constraint_name = cols.constraint_name
- AND alc.constraint_type = 'R'
- AND alc.table_name = " . $table . '
- ORDER BY cols.constraint_name ASC, cols.position ASC';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTableConstraintsSQL($table)
- {
- $table = $this->normalizeIdentifier($table);
- $table = $this->quoteStringLiteral($table->getName());
-
- return 'SELECT * FROM user_constraints WHERE table_name = ' . $table;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTableColumnsSQL($table, $database = null)
- {
- $table = $this->normalizeIdentifier($table);
- $table = $this->quoteStringLiteral($table->getName());
-
- $tabColumnsTableName = 'user_tab_columns';
- $colCommentsTableName = 'user_col_comments';
- $tabColumnsOwnerCondition = '';
- $colCommentsOwnerCondition = '';
-
- if ($database !== null && $database !== '/') {
- $database = $this->normalizeIdentifier($database);
- $database = $this->quoteStringLiteral($database->getName());
- $tabColumnsTableName = 'all_tab_columns';
- $colCommentsTableName = 'all_col_comments';
- $tabColumnsOwnerCondition = ' AND c.owner = ' . $database;
- $colCommentsOwnerCondition = ' AND d.OWNER = c.OWNER';
- }
-
- return sprintf(
- <<<'SQL'
-SELECT c.*,
- (
- SELECT d.comments
- FROM %s d
- WHERE d.TABLE_NAME = c.TABLE_NAME%s
- AND d.COLUMN_NAME = c.COLUMN_NAME
- ) AS comments
-FROM %s c
-WHERE c.table_name = %s%s
-ORDER BY c.column_id
-SQL
- ,
- $colCommentsTableName,
- $colCommentsOwnerCondition,
- $tabColumnsTableName,
- $table,
- $tabColumnsOwnerCondition
- );
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDropSequenceSQL($sequence)
- {
- if ($sequence instanceof Sequence) {
- $sequence = $sequence->getQuotedName($this);
- }
-
- return 'DROP SEQUENCE ' . $sequence;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDropForeignKeySQL($foreignKey, $table)
- {
- if (! $foreignKey instanceof ForeignKeyConstraint) {
- $foreignKey = new Identifier($foreignKey);
- }
-
- if (! $table instanceof Table) {
- $table = new Identifier($table);
- }
-
- $foreignKey = $foreignKey->getQuotedName($this);
- $table = $table->getQuotedName($this);
-
- return 'ALTER TABLE ' . $table . ' DROP CONSTRAINT ' . $foreignKey;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getAdvancedForeignKeyOptionsSQL(ForeignKeyConstraint $foreignKey)
- {
- $referentialAction = null;
-
- if ($foreignKey->hasOption('onDelete')) {
- $referentialAction = $this->getForeignKeyReferentialActionSQL($foreignKey->getOption('onDelete'));
- }
-
- return $referentialAction ? ' ON DELETE ' . $referentialAction : '';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getForeignKeyReferentialActionSQL($action)
- {
- $action = strtoupper($action);
-
- switch ($action) {
- case 'RESTRICT': // RESTRICT is not supported, therefore falling back to NO ACTION.
- case 'NO ACTION':
- // NO ACTION cannot be declared explicitly,
- // therefore returning empty string to indicate to OMIT the referential clause.
- return '';
-
- case 'CASCADE':
- case 'SET NULL':
- return $action;
-
- default:
- // SET DEFAULT is not supported, throw exception instead.
- throw new InvalidArgumentException('Invalid foreign key action: ' . $action);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDropDatabaseSQL($database)
- {
- return 'DROP USER ' . $database . ' CASCADE';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getAlterTableSQL(TableDiff $diff)
- {
- $sql = [];
- $commentsSQL = [];
- $columnSql = [];
-
- $fields = [];
-
- foreach ($diff->addedColumns as $column) {
- if ($this->onSchemaAlterTableAddColumn($column, $diff, $columnSql)) {
- continue;
- }
-
- $fields[] = $this->getColumnDeclarationSQL($column->getQuotedName($this), $column->toArray());
- $comment = $this->getColumnComment($column);
-
- if (! $comment) {
- continue;
- }
-
- $commentsSQL[] = $this->getCommentOnColumnSQL(
- $diff->getName($this)->getQuotedName($this),
- $column->getQuotedName($this),
- $comment
- );
- }
-
- if (count($fields)) {
- $sql[] = 'ALTER TABLE ' . $diff->getName($this)->getQuotedName($this) . ' ADD (' . implode(', ', $fields) . ')';
- }
-
- $fields = [];
- foreach ($diff->changedColumns as $columnDiff) {
- if ($this->onSchemaAlterTableChangeColumn($columnDiff, $diff, $columnSql)) {
- continue;
- }
-
- $column = $columnDiff->column;
-
- // Do not generate column alteration clause if type is binary and only fixed property has changed.
- // Oracle only supports binary type columns with variable length.
- // Avoids unnecessary table alteration statements.
- if ($column->getType() instanceof BinaryType &&
- $columnDiff->hasChanged('fixed') &&
- count($columnDiff->changedProperties) === 1
- ) {
- continue;
- }
-
- $columnHasChangedComment = $columnDiff->hasChanged('comment');
-
- /**
- * Do not add query part if only comment has changed
- */
- if (! ($columnHasChangedComment && count($columnDiff->changedProperties) === 1)) {
- $columnInfo = $column->toArray();
-
- if (! $columnDiff->hasChanged('notnull')) {
- unset($columnInfo['notnull']);
- }
-
- $fields[] = $column->getQuotedName($this) . $this->getColumnDeclarationSQL('', $columnInfo);
- }
-
- if (! $columnHasChangedComment) {
- continue;
- }
-
- $commentsSQL[] = $this->getCommentOnColumnSQL(
- $diff->getName($this)->getQuotedName($this),
- $column->getQuotedName($this),
- $this->getColumnComment($column)
- );
- }
-
- if (count($fields)) {
- $sql[] = 'ALTER TABLE ' . $diff->getName($this)->getQuotedName($this) . ' MODIFY (' . implode(', ', $fields) . ')';
- }
-
- foreach ($diff->renamedColumns as $oldColumnName => $column) {
- if ($this->onSchemaAlterTableRenameColumn($oldColumnName, $column, $diff, $columnSql)) {
- continue;
- }
-
- $oldColumnName = new Identifier($oldColumnName);
-
- $sql[] = 'ALTER TABLE ' . $diff->getName($this)->getQuotedName($this) .
- ' RENAME COLUMN ' . $oldColumnName->getQuotedName($this) . ' TO ' . $column->getQuotedName($this);
- }
-
- $fields = [];
- foreach ($diff->removedColumns as $column) {
- if ($this->onSchemaAlterTableRemoveColumn($column, $diff, $columnSql)) {
- continue;
- }
-
- $fields[] = $column->getQuotedName($this);
- }
-
- if (count($fields)) {
- $sql[] = 'ALTER TABLE ' . $diff->getName($this)->getQuotedName($this) . ' DROP (' . implode(', ', $fields) . ')';
- }
-
- $tableSql = [];
-
- if (! $this->onSchemaAlterTable($diff, $tableSql)) {
- $sql = array_merge($sql, $commentsSQL);
-
- $newName = $diff->getNewName();
-
- if ($newName !== false) {
- $sql[] = sprintf(
- 'ALTER TABLE %s RENAME TO %s',
- $diff->getName($this)->getQuotedName($this),
- $newName->getQuotedName($this)
- );
- }
-
- $sql = array_merge(
- $this->getPreAlterTableIndexForeignKeySQL($diff),
- $sql,
- $this->getPostAlterTableIndexForeignKeySQL($diff)
- );
- }
-
- return array_merge($sql, $tableSql, $columnSql);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getColumnDeclarationSQL($name, array $field)
- {
- if (isset($field['columnDefinition'])) {
- $columnDef = $this->getCustomTypeDeclarationSQL($field);
- } else {
- $default = $this->getDefaultValueDeclarationSQL($field);
-
- $notnull = '';
-
- if (isset($field['notnull'])) {
- $notnull = $field['notnull'] ? ' NOT NULL' : ' NULL';
- }
-
- $unique = isset($field['unique']) && $field['unique'] ?
- ' ' . $this->getUniqueFieldDeclarationSQL() : '';
-
- $check = isset($field['check']) && $field['check'] ?
- ' ' . $field['check'] : '';
-
- $typeDecl = $field['type']->getSQLDeclaration($field, $this);
- $columnDef = $typeDecl . $default . $notnull . $unique . $check;
- }
-
- return $name . ' ' . $columnDef;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getRenameIndexSQL($oldIndexName, Index $index, $tableName)
- {
- if (strpos($tableName, '.') !== false) {
- [$schema] = explode('.', $tableName);
- $oldIndexName = $schema . '.' . $oldIndexName;
- }
-
- return ['ALTER INDEX ' . $oldIndexName . ' RENAME TO ' . $index->getQuotedName($this)];
- }
-
- /**
- * {@inheritDoc}
- */
- public function prefersSequences()
- {
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function usesSequenceEmulatedIdentityColumns()
- {
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getIdentitySequenceName($tableName, $columnName)
- {
- $table = new Identifier($tableName);
-
- // No usage of column name to preserve BC compatibility with <2.5
- $identitySequenceName = $table->getName() . '_SEQ';
-
- if ($table->isQuoted()) {
- $identitySequenceName = '"' . $identitySequenceName . '"';
- }
-
- $identitySequenceIdentifier = $this->normalizeIdentifier($identitySequenceName);
-
- return $identitySequenceIdentifier->getQuotedName($this);
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsCommentOnStatement()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getName()
- {
- return 'oracle';
- }
-
- /**
- * {@inheritDoc}
- */
- protected function doModifyLimitQuery($query, $limit, $offset = null)
- {
- if ($limit === null && $offset <= 0) {
- return $query;
- }
-
- if (preg_match('/^\s*SELECT/i', $query)) {
- if (! preg_match('/\sFROM\s/i', $query)) {
- $query .= ' FROM dual';
- }
-
- $columns = ['a.*'];
-
- if ($offset > 0) {
- $columns[] = 'ROWNUM AS doctrine_rownum';
- }
-
- $query = sprintf('SELECT %s FROM (%s) a', implode(', ', $columns), $query);
-
- if ($limit !== null) {
- $query .= sprintf(' WHERE ROWNUM <= %d', $offset + $limit);
- }
-
- if ($offset > 0) {
- $query = sprintf('SELECT * FROM (%s) WHERE doctrine_rownum >= %d', $query, $offset + 1);
- }
- }
-
- return $query;
- }
-
- /**
- * {@inheritDoc}
- *
- * Oracle returns all column names in SQL result sets in uppercase.
- */
- public function getSQLResultCasing($column)
- {
- return strtoupper($column);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCreateTemporaryTableSnippetSQL()
- {
- return 'CREATE GLOBAL TEMPORARY TABLE';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateTimeTzFormatString()
- {
- return 'Y-m-d H:i:sP';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateFormatString()
- {
- return 'Y-m-d 00:00:00';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getTimeFormatString()
- {
- return '1900-01-01 H:i:s';
- }
-
- /**
- * {@inheritDoc}
- */
- public function fixSchemaElementName($schemaElementName)
- {
- if (strlen($schemaElementName) > 30) {
- // Trim it
- return substr($schemaElementName, 0, 30);
- }
-
- return $schemaElementName;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getMaxIdentifierLength()
- {
- return 30;
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsSequences()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsForeignKeyOnUpdate()
- {
- return false;
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsReleaseSavepoints()
- {
- return false;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getTruncateTableSQL($tableName, $cascade = false)
- {
- $tableIdentifier = new Identifier($tableName);
-
- return 'TRUNCATE TABLE ' . $tableIdentifier->getQuotedName($this);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDummySelectSQL()
- {
- $expression = func_num_args() > 0 ? func_get_arg(0) : '1';
-
- return sprintf('SELECT %s FROM DUAL', $expression);
- }
-
- /**
- * {@inheritDoc}
- */
- protected function initializeDoctrineTypeMappings()
- {
- $this->doctrineTypeMapping = [
- 'integer' => 'integer',
- 'number' => 'integer',
- 'pls_integer' => 'boolean',
- 'binary_integer' => 'boolean',
- 'varchar' => 'string',
- 'varchar2' => 'string',
- 'nvarchar2' => 'string',
- 'char' => 'string',
- 'nchar' => 'string',
- 'date' => 'date',
- 'timestamp' => 'datetime',
- 'timestamptz' => 'datetimetz',
- 'float' => 'float',
- 'binary_float' => 'float',
- 'binary_double' => 'float',
- 'long' => 'string',
- 'clob' => 'text',
- 'nclob' => 'text',
- 'raw' => 'binary',
- 'long raw' => 'blob',
- 'rowid' => 'string',
- 'urowid' => 'string',
- 'blob' => 'blob',
- ];
- }
-
- /**
- * {@inheritDoc}
- */
- public function releaseSavePoint($savepoint)
- {
- return '';
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getReservedKeywordsClass()
- {
- return Keywords\OracleKeywords::class;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getBlobTypeDeclarationSQL(array $field)
- {
- return 'BLOB';
- }
-
- public function getListTableCommentsSQL(string $table, ?string $database = null) : string
- {
- $tableCommentsName = 'user_tab_comments';
- $ownerCondition = '';
-
- if ($database !== null && $database !== '/') {
- $tableCommentsName = 'all_tab_comments';
- $ownerCondition = ' AND owner = ' . $this->quoteStringLiteral($this->normalizeIdentifier($database)->getName());
- }
-
- return sprintf(
- <<<'SQL'
-SELECT comments FROM %s WHERE table_name = %s%s
-SQL
- ,
- $tableCommentsName,
- $this->quoteStringLiteral($this->normalizeIdentifier($table)->getName()),
- $ownerCondition
- );
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSQL100Platform.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSQL100Platform.php
deleted file mode 100644
index cfb079f94..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSQL100Platform.php
+++ /dev/null
@@ -1,33 +0,0 @@
-quoteStringLiteral($database) . "
- AND sequence_schema NOT LIKE 'pg\_%'
- AND sequence_schema != 'information_schema'";
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSQL91Platform.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSQL91Platform.php
deleted file mode 100644
index f55840983..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSQL91Platform.php
+++ /dev/null
@@ -1,46 +0,0 @@
-quoteSingleIdentifier($collation);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTableColumnsSQL($table, $database = null)
- {
- $sql = parent::getListTableColumnsSQL($table, $database);
- $parts = explode('AS complete_type,', $sql, 2);
-
- return $parts[0] . 'AS complete_type, (SELECT tc.collcollate FROM pg_catalog.pg_collation tc WHERE tc.oid = a.attcollation) AS collation,' . $parts[1];
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSQL92Platform.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSQL92Platform.php
deleted file mode 100644
index 170305614..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSQL92Platform.php
+++ /dev/null
@@ -1,69 +0,0 @@
-doctrineTypeMapping['json'] = Types::JSON;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getCloseActiveDatabaseConnectionsSQL($database)
- {
- return sprintf(
- 'SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = %s',
- $this->quoteStringLiteral($database)
- );
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSQL94Platform.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSQL94Platform.php
deleted file mode 100644
index fb559dea2..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSQL94Platform.php
+++ /dev/null
@@ -1,41 +0,0 @@
-doctrineTypeMapping['jsonb'] = Types::JSON;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSqlPlatform.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSqlPlatform.php
deleted file mode 100644
index e570dc04a..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/PostgreSqlPlatform.php
+++ /dev/null
@@ -1,1270 +0,0 @@
- [
- 't',
- 'true',
- 'y',
- 'yes',
- 'on',
- '1',
- ],
- 'false' => [
- 'f',
- 'false',
- 'n',
- 'no',
- 'off',
- '0',
- ],
- ];
-
- /**
- * PostgreSQL has different behavior with some drivers
- * with regard to how booleans have to be handled.
- *
- * Enables use of 'true'/'false' or otherwise 1 and 0 instead.
- *
- * @param bool $flag
- */
- public function setUseBooleanTrueFalseStrings($flag)
- {
- $this->useBooleanTrueFalseStrings = (bool) $flag;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getSubstringExpression($value, $from, $length = null)
- {
- if ($length === null) {
- return 'SUBSTRING(' . $value . ' FROM ' . $from . ')';
- }
-
- return 'SUBSTRING(' . $value . ' FROM ' . $from . ' FOR ' . $length . ')';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getNowExpression()
- {
- return 'LOCALTIMESTAMP(0)';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getRegexpExpression()
- {
- return 'SIMILAR TO';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getLocateExpression($str, $substr, $startPos = false)
- {
- if ($startPos !== false) {
- $str = $this->getSubstringExpression($str, $startPos);
-
- return 'CASE WHEN (POSITION(' . $substr . ' IN ' . $str . ') = 0) THEN 0 ELSE (POSITION(' . $substr . ' IN ' . $str . ') + ' . ($startPos-1) . ') END';
- }
-
- return 'POSITION(' . $substr . ' IN ' . $str . ')';
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getDateArithmeticIntervalExpression($date, $operator, $interval, $unit)
- {
- if ($unit === DateIntervalUnit::QUARTER) {
- $interval *= 3;
- $unit = DateIntervalUnit::MONTH;
- }
-
- return '(' . $date . ' ' . $operator . ' (' . $interval . " || ' " . $unit . "')::interval)";
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateDiffExpression($date1, $date2)
- {
- return '(DATE(' . $date1 . ')-DATE(' . $date2 . '))';
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsSequences()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsSchemas()
- {
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDefaultSchemaName()
- {
- return 'public';
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsIdentityColumns()
- {
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function supportsPartialIndexes()
- {
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function usesSequenceEmulatedIdentityColumns()
- {
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getIdentitySequenceName($tableName, $columnName)
- {
- return $tableName . '_' . $columnName . '_seq';
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsCommentOnStatement()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function prefersSequences()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function hasNativeGuidType()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListDatabasesSQL()
- {
- return 'SELECT datname FROM pg_database';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListNamespacesSQL()
- {
- return "SELECT schema_name AS nspname
- FROM information_schema.schemata
- WHERE schema_name NOT LIKE 'pg\_%'
- AND schema_name != 'information_schema'";
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListSequencesSQL($database)
- {
- return "SELECT sequence_name AS relname,
- sequence_schema AS schemaname
- FROM information_schema.sequences
- WHERE sequence_schema NOT LIKE 'pg\_%'
- AND sequence_schema != 'information_schema'";
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTablesSQL()
- {
- return "SELECT quote_ident(table_name) AS table_name,
- table_schema AS schema_name
- FROM information_schema.tables
- WHERE table_schema NOT LIKE 'pg\_%'
- AND table_schema != 'information_schema'
- AND table_name != 'geometry_columns'
- AND table_name != 'spatial_ref_sys'
- AND table_type != 'VIEW'";
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListViewsSQL($database)
- {
- return 'SELECT quote_ident(table_name) AS viewname,
- table_schema AS schemaname,
- view_definition AS definition
- FROM information_schema.views
- WHERE view_definition IS NOT NULL';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTableForeignKeysSQL($table, $database = null)
- {
- return 'SELECT quote_ident(r.conname) as conname, pg_catalog.pg_get_constraintdef(r.oid, true) as condef
- FROM pg_catalog.pg_constraint r
- WHERE r.conrelid =
- (
- SELECT c.oid
- FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n
- WHERE ' . $this->getTableWhereClause($table) . " AND n.oid = c.relnamespace
- )
- AND r.contype = 'f'";
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCreateViewSQL($name, $sql)
- {
- return 'CREATE VIEW ' . $name . ' AS ' . $sql;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDropViewSQL($name)
- {
- return 'DROP VIEW ' . $name;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTableConstraintsSQL($table)
- {
- $table = new Identifier($table);
- $table = $this->quoteStringLiteral($table->getName());
-
- return sprintf(
- <<<'SQL'
-SELECT
- quote_ident(relname) as relname
-FROM
- pg_class
-WHERE oid IN (
- SELECT indexrelid
- FROM pg_index, pg_class
- WHERE pg_class.relname = %s
- AND pg_class.oid = pg_index.indrelid
- AND (indisunique = 't' OR indisprimary = 't')
- )
-SQL
- ,
- $table
- );
- }
-
- /**
- * {@inheritDoc}
- *
- * @link http://ezcomponents.org/docs/api/trunk/DatabaseSchema/ezcDbSchemaPgsqlReader.html
- */
- public function getListTableIndexesSQL($table, $currentDatabase = null)
- {
- return 'SELECT quote_ident(relname) as relname, pg_index.indisunique, pg_index.indisprimary,
- pg_index.indkey, pg_index.indrelid,
- pg_get_expr(indpred, indrelid) AS where
- FROM pg_class, pg_index
- WHERE oid IN (
- SELECT indexrelid
- FROM pg_index si, pg_class sc, pg_namespace sn
- WHERE ' . $this->getTableWhereClause($table, 'sc', 'sn') . ' AND sc.oid=si.indrelid AND sc.relnamespace = sn.oid
- ) AND pg_index.indexrelid = oid';
- }
-
- /**
- * @param string $table
- * @param string $classAlias
- * @param string $namespaceAlias
- *
- * @return string
- */
- private function getTableWhereClause($table, $classAlias = 'c', $namespaceAlias = 'n')
- {
- $whereClause = $namespaceAlias . ".nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') AND ";
- if (strpos($table, '.') !== false) {
- [$schema, $table] = explode('.', $table);
- $schema = $this->quoteStringLiteral($schema);
- } else {
- $schema = "ANY(string_to_array((select replace(replace(setting,'\"\$user\"',user),' ','') from pg_catalog.pg_settings where name = 'search_path'),','))";
- }
-
- $table = new Identifier($table);
- $table = $this->quoteStringLiteral($table->getName());
-
- return $whereClause . sprintf(
- '%s.relname = %s AND %s.nspname = %s',
- $classAlias,
- $table,
- $namespaceAlias,
- $schema
- );
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTableColumnsSQL($table, $database = null)
- {
- return "SELECT
- a.attnum,
- quote_ident(a.attname) AS field,
- t.typname AS type,
- format_type(a.atttypid, a.atttypmod) AS complete_type,
- (SELECT t1.typname FROM pg_catalog.pg_type t1 WHERE t1.oid = t.typbasetype) AS domain_type,
- (SELECT format_type(t2.typbasetype, t2.typtypmod) FROM
- pg_catalog.pg_type t2 WHERE t2.typtype = 'd' AND t2.oid = a.atttypid) AS domain_complete_type,
- a.attnotnull AS isnotnull,
- (SELECT 't'
- FROM pg_index
- WHERE c.oid = pg_index.indrelid
- AND pg_index.indkey[0] = a.attnum
- AND pg_index.indisprimary = 't'
- ) AS pri,
- (SELECT pg_get_expr(adbin, adrelid)
- FROM pg_attrdef
- WHERE c.oid = pg_attrdef.adrelid
- AND pg_attrdef.adnum=a.attnum
- ) AS default,
- (SELECT pg_description.description
- FROM pg_description WHERE pg_description.objoid = c.oid AND a.attnum = pg_description.objsubid
- ) AS comment
- FROM pg_attribute a, pg_class c, pg_type t, pg_namespace n
- WHERE " . $this->getTableWhereClause($table, 'c', 'n') . '
- AND a.attnum > 0
- AND a.attrelid = c.oid
- AND a.atttypid = t.oid
- AND n.oid = c.relnamespace
- ORDER BY a.attnum';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCreateDatabaseSQL($name)
- {
- return 'CREATE DATABASE ' . $name;
- }
-
- /**
- * Returns the SQL statement for disallowing new connections on the given database.
- *
- * This is useful to force DROP DATABASE operations which could fail because of active connections.
- *
- * @param string $database The name of the database to disallow new connections for.
- *
- * @return string
- */
- public function getDisallowDatabaseConnectionsSQL($database)
- {
- return "UPDATE pg_database SET datallowconn = 'false' WHERE datname = " . $this->quoteStringLiteral($database);
- }
-
- /**
- * Returns the SQL statement for closing currently active connections on the given database.
- *
- * This is useful to force DROP DATABASE operations which could fail because of active connections.
- *
- * @param string $database The name of the database to close currently active connections for.
- *
- * @return string
- */
- public function getCloseActiveDatabaseConnectionsSQL($database)
- {
- return 'SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE datname = '
- . $this->quoteStringLiteral($database);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getAdvancedForeignKeyOptionsSQL(ForeignKeyConstraint $foreignKey)
- {
- $query = '';
-
- if ($foreignKey->hasOption('match')) {
- $query .= ' MATCH ' . $foreignKey->getOption('match');
- }
-
- $query .= parent::getAdvancedForeignKeyOptionsSQL($foreignKey);
-
- if ($foreignKey->hasOption('deferrable') && $foreignKey->getOption('deferrable') !== false) {
- $query .= ' DEFERRABLE';
- } else {
- $query .= ' NOT DEFERRABLE';
- }
-
- if (($foreignKey->hasOption('feferred') && $foreignKey->getOption('feferred') !== false)
- || ($foreignKey->hasOption('deferred') && $foreignKey->getOption('deferred') !== false)
- ) {
- $query .= ' INITIALLY DEFERRED';
- } else {
- $query .= ' INITIALLY IMMEDIATE';
- }
-
- return $query;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getAlterTableSQL(TableDiff $diff)
- {
- $sql = [];
- $commentsSQL = [];
- $columnSql = [];
-
- foreach ($diff->addedColumns as $column) {
- if ($this->onSchemaAlterTableAddColumn($column, $diff, $columnSql)) {
- continue;
- }
-
- $query = 'ADD ' . $this->getColumnDeclarationSQL($column->getQuotedName($this), $column->toArray());
- $sql[] = 'ALTER TABLE ' . $diff->getName($this)->getQuotedName($this) . ' ' . $query;
-
- $comment = $this->getColumnComment($column);
-
- if ($comment === null || $comment === '') {
- continue;
- }
-
- $commentsSQL[] = $this->getCommentOnColumnSQL(
- $diff->getName($this)->getQuotedName($this),
- $column->getQuotedName($this),
- $comment
- );
- }
-
- foreach ($diff->removedColumns as $column) {
- if ($this->onSchemaAlterTableRemoveColumn($column, $diff, $columnSql)) {
- continue;
- }
-
- $query = 'DROP ' . $column->getQuotedName($this);
- $sql[] = 'ALTER TABLE ' . $diff->getName($this)->getQuotedName($this) . ' ' . $query;
- }
-
- foreach ($diff->changedColumns as $columnDiff) {
- /** @var $columnDiff \Doctrine\DBAL\Schema\ColumnDiff */
- if ($this->onSchemaAlterTableChangeColumn($columnDiff, $diff, $columnSql)) {
- continue;
- }
-
- if ($this->isUnchangedBinaryColumn($columnDiff)) {
- continue;
- }
-
- $oldColumnName = $columnDiff->getOldColumnName()->getQuotedName($this);
- $column = $columnDiff->column;
-
- if ($columnDiff->hasChanged('type') || $columnDiff->hasChanged('precision') || $columnDiff->hasChanged('scale') || $columnDiff->hasChanged('fixed')) {
- $type = $column->getType();
-
- // SERIAL/BIGSERIAL are not "real" types and we can't alter a column to that type
- $columnDefinition = $column->toArray();
- $columnDefinition['autoincrement'] = false;
-
- // here was a server version check before, but DBAL API does not support this anymore.
- $query = 'ALTER ' . $oldColumnName . ' TYPE ' . $type->getSQLDeclaration($columnDefinition, $this);
- $sql[] = 'ALTER TABLE ' . $diff->getName($this)->getQuotedName($this) . ' ' . $query;
- }
-
- if ($columnDiff->hasChanged('default') || $this->typeChangeBreaksDefaultValue($columnDiff)) {
- $defaultClause = $column->getDefault() === null
- ? ' DROP DEFAULT'
- : ' SET' . $this->getDefaultValueDeclarationSQL($column->toArray());
- $query = 'ALTER ' . $oldColumnName . $defaultClause;
- $sql[] = 'ALTER TABLE ' . $diff->getName($this)->getQuotedName($this) . ' ' . $query;
- }
-
- if ($columnDiff->hasChanged('notnull')) {
- $query = 'ALTER ' . $oldColumnName . ' ' . ($column->getNotnull() ? 'SET' : 'DROP') . ' NOT NULL';
- $sql[] = 'ALTER TABLE ' . $diff->getName($this)->getQuotedName($this) . ' ' . $query;
- }
-
- if ($columnDiff->hasChanged('autoincrement')) {
- if ($column->getAutoincrement()) {
- // add autoincrement
- $seqName = $this->getIdentitySequenceName($diff->name, $oldColumnName);
-
- $sql[] = 'CREATE SEQUENCE ' . $seqName;
- $sql[] = "SELECT setval('" . $seqName . "', (SELECT MAX(" . $oldColumnName . ') FROM ' . $diff->getName($this)->getQuotedName($this) . '))';
- $query = 'ALTER ' . $oldColumnName . " SET DEFAULT nextval('" . $seqName . "')";
- $sql[] = 'ALTER TABLE ' . $diff->getName($this)->getQuotedName($this) . ' ' . $query;
- } else {
- // Drop autoincrement, but do NOT drop the sequence. It might be re-used by other tables or have
- $query = 'ALTER ' . $oldColumnName . ' DROP DEFAULT';
- $sql[] = 'ALTER TABLE ' . $diff->getName($this)->getQuotedName($this) . ' ' . $query;
- }
- }
-
- $newComment = $this->getColumnComment($column);
- $oldComment = $this->getOldColumnComment($columnDiff);
-
- if ($columnDiff->hasChanged('comment') || ($columnDiff->fromColumn !== null && $oldComment !== $newComment)) {
- $commentsSQL[] = $this->getCommentOnColumnSQL(
- $diff->getName($this)->getQuotedName($this),
- $column->getQuotedName($this),
- $newComment
- );
- }
-
- if (! $columnDiff->hasChanged('length')) {
- continue;
- }
-
- $query = 'ALTER ' . $oldColumnName . ' TYPE ' . $column->getType()->getSQLDeclaration($column->toArray(), $this);
- $sql[] = 'ALTER TABLE ' . $diff->getName($this)->getQuotedName($this) . ' ' . $query;
- }
-
- foreach ($diff->renamedColumns as $oldColumnName => $column) {
- if ($this->onSchemaAlterTableRenameColumn($oldColumnName, $column, $diff, $columnSql)) {
- continue;
- }
-
- $oldColumnName = new Identifier($oldColumnName);
-
- $sql[] = 'ALTER TABLE ' . $diff->getName($this)->getQuotedName($this) .
- ' RENAME COLUMN ' . $oldColumnName->getQuotedName($this) . ' TO ' . $column->getQuotedName($this);
- }
-
- $tableSql = [];
-
- if (! $this->onSchemaAlterTable($diff, $tableSql)) {
- $sql = array_merge($sql, $commentsSQL);
-
- $newName = $diff->getNewName();
-
- if ($newName !== false) {
- $sql[] = sprintf(
- 'ALTER TABLE %s RENAME TO %s',
- $diff->getName($this)->getQuotedName($this),
- $newName->getQuotedName($this)
- );
- }
-
- $sql = array_merge(
- $this->getPreAlterTableIndexForeignKeySQL($diff),
- $sql,
- $this->getPostAlterTableIndexForeignKeySQL($diff)
- );
- }
-
- return array_merge($sql, $tableSql, $columnSql);
- }
-
- /**
- * Checks whether a given column diff is a logically unchanged binary type column.
- *
- * Used to determine whether a column alteration for a binary type column can be skipped.
- * Doctrine's {@link \Doctrine\DBAL\Types\BinaryType} and {@link \Doctrine\DBAL\Types\BlobType}
- * are mapped to the same database column type on this platform as this platform
- * does not have a native VARBINARY/BINARY column type. Therefore the {@link \Doctrine\DBAL\Schema\Comparator}
- * might detect differences for binary type columns which do not have to be propagated
- * to database as there actually is no difference at database level.
- *
- * @param ColumnDiff $columnDiff The column diff to check against.
- *
- * @return bool True if the given column diff is an unchanged binary type column, false otherwise.
- */
- private function isUnchangedBinaryColumn(ColumnDiff $columnDiff)
- {
- $columnType = $columnDiff->column->getType();
-
- if (! $columnType instanceof BinaryType && ! $columnType instanceof BlobType) {
- return false;
- }
-
- $fromColumn = $columnDiff->fromColumn instanceof Column ? $columnDiff->fromColumn : null;
-
- if ($fromColumn) {
- $fromColumnType = $fromColumn->getType();
-
- if (! $fromColumnType instanceof BinaryType && ! $fromColumnType instanceof BlobType) {
- return false;
- }
-
- return count(array_diff($columnDiff->changedProperties, ['type', 'length', 'fixed'])) === 0;
- }
-
- if ($columnDiff->hasChanged('type')) {
- return false;
- }
-
- return count(array_diff($columnDiff->changedProperties, ['length', 'fixed'])) === 0;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getRenameIndexSQL($oldIndexName, Index $index, $tableName)
- {
- if (strpos($tableName, '.') !== false) {
- [$schema] = explode('.', $tableName);
- $oldIndexName = $schema . '.' . $oldIndexName;
- }
-
- return ['ALTER INDEX ' . $oldIndexName . ' RENAME TO ' . $index->getQuotedName($this)];
- }
-
- /**
- * {@inheritdoc}
- */
- public function getCommentOnColumnSQL($tableName, $columnName, $comment)
- {
- $tableName = new Identifier($tableName);
- $columnName = new Identifier($columnName);
- $comment = $comment === null ? 'NULL' : $this->quoteStringLiteral($comment);
-
- return sprintf(
- 'COMMENT ON COLUMN %s.%s IS %s',
- $tableName->getQuotedName($this),
- $columnName->getQuotedName($this),
- $comment
- );
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCreateSequenceSQL(Sequence $sequence)
- {
- return 'CREATE SEQUENCE ' . $sequence->getQuotedName($this) .
- ' INCREMENT BY ' . $sequence->getAllocationSize() .
- ' MINVALUE ' . $sequence->getInitialValue() .
- ' START ' . $sequence->getInitialValue() .
- $this->getSequenceCacheSQL($sequence);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getAlterSequenceSQL(Sequence $sequence)
- {
- return 'ALTER SEQUENCE ' . $sequence->getQuotedName($this) .
- ' INCREMENT BY ' . $sequence->getAllocationSize() .
- $this->getSequenceCacheSQL($sequence);
- }
-
- /**
- * Cache definition for sequences
- *
- * @return string
- */
- private function getSequenceCacheSQL(Sequence $sequence)
- {
- if ($sequence->getCache() > 1) {
- return ' CACHE ' . $sequence->getCache();
- }
-
- return '';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDropSequenceSQL($sequence)
- {
- if ($sequence instanceof Sequence) {
- $sequence = $sequence->getQuotedName($this);
- }
-
- return 'DROP SEQUENCE ' . $sequence . ' CASCADE';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCreateSchemaSQL($schemaName)
- {
- return 'CREATE SCHEMA ' . $schemaName;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDropForeignKeySQL($foreignKey, $table)
- {
- return $this->getDropConstraintSQL($foreignKey, $table);
- }
-
- /**
- * {@inheritDoc}
- */
- protected function _getCreateTableSQL($tableName, array $columns, array $options = [])
- {
- $queryFields = $this->getColumnDeclarationListSQL($columns);
-
- if (isset($options['primary']) && ! empty($options['primary'])) {
- $keyColumns = array_unique(array_values($options['primary']));
- $queryFields .= ', PRIMARY KEY(' . implode(', ', $keyColumns) . ')';
- }
-
- $query = 'CREATE TABLE ' . $tableName . ' (' . $queryFields . ')';
-
- $sql = [$query];
-
- if (isset($options['indexes']) && ! empty($options['indexes'])) {
- foreach ($options['indexes'] as $index) {
- $sql[] = $this->getCreateIndexSQL($index, $tableName);
- }
- }
-
- if (isset($options['foreignKeys'])) {
- foreach ((array) $options['foreignKeys'] as $definition) {
- $sql[] = $this->getCreateForeignKeySQL($definition, $tableName);
- }
- }
-
- return $sql;
- }
-
- /**
- * Converts a single boolean value.
- *
- * First converts the value to its native PHP boolean type
- * and passes it to the given callback function to be reconverted
- * into any custom representation.
- *
- * @param mixed $value The value to convert.
- * @param callable $callback The callback function to use for converting the real boolean value.
- *
- * @return mixed
- *
- * @throws UnexpectedValueException
- */
- private function convertSingleBooleanValue($value, $callback)
- {
- if ($value === null) {
- return $callback(null);
- }
-
- if (is_bool($value) || is_numeric($value)) {
- return $callback((bool) $value);
- }
-
- if (! is_string($value)) {
- return $callback(true);
- }
-
- /**
- * Better safe than sorry: http://php.net/in_array#106319
- */
- if (in_array(strtolower(trim($value)), $this->booleanLiterals['false'], true)) {
- return $callback(false);
- }
-
- if (in_array(strtolower(trim($value)), $this->booleanLiterals['true'], true)) {
- return $callback(true);
- }
-
- throw new UnexpectedValueException("Unrecognized boolean literal '${value}'");
- }
-
- /**
- * Converts one or multiple boolean values.
- *
- * First converts the value(s) to their native PHP boolean type
- * and passes them to the given callback function to be reconverted
- * into any custom representation.
- *
- * @param mixed $item The value(s) to convert.
- * @param callable $callback The callback function to use for converting the real boolean value(s).
- *
- * @return mixed
- */
- private function doConvertBooleans($item, $callback)
- {
- if (is_array($item)) {
- foreach ($item as $key => $value) {
- $item[$key] = $this->convertSingleBooleanValue($value, $callback);
- }
-
- return $item;
- }
-
- return $this->convertSingleBooleanValue($item, $callback);
- }
-
- /**
- * {@inheritDoc}
- *
- * Postgres wants boolean values converted to the strings 'true'/'false'.
- */
- public function convertBooleans($item)
- {
- if (! $this->useBooleanTrueFalseStrings) {
- return parent::convertBooleans($item);
- }
-
- return $this->doConvertBooleans(
- $item,
- static function ($boolean) {
- if ($boolean === null) {
- return 'NULL';
- }
-
- return $boolean === true ? 'true' : 'false';
- }
- );
- }
-
- /**
- * {@inheritDoc}
- */
- public function convertBooleansToDatabaseValue($item)
- {
- if (! $this->useBooleanTrueFalseStrings) {
- return parent::convertBooleansToDatabaseValue($item);
- }
-
- return $this->doConvertBooleans(
- $item,
- static function ($boolean) {
- return $boolean === null ? null : (int) $boolean;
- }
- );
- }
-
- /**
- * {@inheritDoc}
- */
- public function convertFromBoolean($item)
- {
- if (in_array(strtolower($item), $this->booleanLiterals['false'], true)) {
- return false;
- }
-
- return parent::convertFromBoolean($item);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getSequenceNextValSQL($sequenceName)
- {
- return "SELECT NEXTVAL('" . $sequenceName . "')";
- }
-
- /**
- * {@inheritDoc}
- */
- public function getSetTransactionIsolationSQL($level)
- {
- return 'SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL '
- . $this->_getTransactionIsolationLevelSQL($level);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getBooleanTypeDeclarationSQL(array $field)
- {
- return 'BOOLEAN';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getIntegerTypeDeclarationSQL(array $field)
- {
- if (! empty($field['autoincrement'])) {
- return 'SERIAL';
- }
-
- return 'INT';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getBigIntTypeDeclarationSQL(array $field)
- {
- if (! empty($field['autoincrement'])) {
- return 'BIGSERIAL';
- }
-
- return 'BIGINT';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getSmallIntTypeDeclarationSQL(array $field)
- {
- return 'SMALLINT';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getGuidTypeDeclarationSQL(array $field)
- {
- return 'UUID';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateTimeTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'TIMESTAMP(0) WITHOUT TIME ZONE';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateTimeTzTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'TIMESTAMP(0) WITH TIME ZONE';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'DATE';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getTimeTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'TIME(0) WITHOUT TIME ZONE';
- }
-
- /**
- * {@inheritDoc}
- *
- * @deprecated Use application-generated UUIDs instead
- */
- public function getGuidExpression()
- {
- return 'UUID_GENERATE_V4()';
- }
-
- /**
- * {@inheritDoc}
- */
- protected function _getCommonIntegerTypeDeclarationSQL(array $columnDef)
- {
- return '';
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed)
- {
- return $fixed ? ($length ? 'CHAR(' . $length . ')' : 'CHAR(255)')
- : ($length ? 'VARCHAR(' . $length . ')' : 'VARCHAR(255)');
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getBinaryTypeDeclarationSQLSnippet($length, $fixed)
- {
- return 'BYTEA';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getClobTypeDeclarationSQL(array $field)
- {
- return 'TEXT';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getName()
- {
- return 'postgresql';
- }
-
- /**
- * {@inheritDoc}
- *
- * PostgreSQL returns all column names in SQL result sets in lowercase.
- */
- public function getSQLResultCasing($column)
- {
- return strtolower($column);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateTimeTzFormatString()
- {
- return 'Y-m-d H:i:sO';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getEmptyIdentityInsertSQL($quotedTableName, $quotedIdentifierColumnName)
- {
- return 'INSERT INTO ' . $quotedTableName . ' (' . $quotedIdentifierColumnName . ') VALUES (DEFAULT)';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getTruncateTableSQL($tableName, $cascade = false)
- {
- $tableIdentifier = new Identifier($tableName);
- $sql = 'TRUNCATE ' . $tableIdentifier->getQuotedName($this);
-
- if ($cascade) {
- $sql .= ' CASCADE';
- }
-
- return $sql;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getReadLockSQL()
- {
- return 'FOR SHARE';
- }
-
- /**
- * {@inheritDoc}
- */
- protected function initializeDoctrineTypeMappings()
- {
- $this->doctrineTypeMapping = [
- 'smallint' => 'smallint',
- 'int2' => 'smallint',
- 'serial' => 'integer',
- 'serial4' => 'integer',
- 'int' => 'integer',
- 'int4' => 'integer',
- 'integer' => 'integer',
- 'bigserial' => 'bigint',
- 'serial8' => 'bigint',
- 'bigint' => 'bigint',
- 'int8' => 'bigint',
- 'bool' => 'boolean',
- 'boolean' => 'boolean',
- 'text' => 'text',
- 'tsvector' => 'text',
- 'varchar' => 'string',
- 'interval' => 'string',
- '_varchar' => 'string',
- 'char' => 'string',
- 'bpchar' => 'string',
- 'inet' => 'string',
- 'date' => 'date',
- 'datetime' => 'datetime',
- 'timestamp' => 'datetime',
- 'timestamptz' => 'datetimetz',
- 'time' => 'time',
- 'timetz' => 'time',
- 'float' => 'float',
- 'float4' => 'float',
- 'float8' => 'float',
- 'double' => 'float',
- 'double precision' => 'float',
- 'real' => 'float',
- 'decimal' => 'decimal',
- 'money' => 'decimal',
- 'numeric' => 'decimal',
- 'year' => 'date',
- 'uuid' => 'guid',
- 'bytea' => 'blob',
- ];
- }
-
- /**
- * {@inheritDoc}
- */
- public function getVarcharMaxLength()
- {
- return 65535;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getBinaryMaxLength()
- {
- return 0;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getBinaryDefaultLength()
- {
- return 0;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getReservedKeywordsClass()
- {
- return Keywords\PostgreSQLKeywords::class;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getBlobTypeDeclarationSQL(array $field)
- {
- return 'BYTEA';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDefaultValueDeclarationSQL($field)
- {
- if ($this->isSerialField($field)) {
- return '';
- }
-
- return parent::getDefaultValueDeclarationSQL($field);
- }
-
- /**
- * @param mixed[] $field
- */
- private function isSerialField(array $field) : bool
- {
- return isset($field['type'], $field['autoincrement'])
- && $field['autoincrement'] === true
- && $this->isNumericType($field['type']);
- }
-
- /**
- * Check whether the type of a column is changed in a way that invalidates the default value for the column
- */
- private function typeChangeBreaksDefaultValue(ColumnDiff $columnDiff) : bool
- {
- if (! $columnDiff->fromColumn) {
- return $columnDiff->hasChanged('type');
- }
-
- $oldTypeIsNumeric = $this->isNumericType($columnDiff->fromColumn->getType());
- $newTypeIsNumeric = $this->isNumericType($columnDiff->column->getType());
-
- // default should not be changed when switching between numeric types and the default comes from a sequence
- return $columnDiff->hasChanged('type')
- && ! ($oldTypeIsNumeric && $newTypeIsNumeric && $columnDiff->column->getAutoincrement());
- }
-
- private function isNumericType(Type $type) : bool
- {
- return $type instanceof IntegerType || $type instanceof BigIntType;
- }
-
- private function getOldColumnComment(ColumnDiff $columnDiff) : ?string
- {
- return $columnDiff->fromColumn ? $this->getColumnComment($columnDiff->fromColumn) : null;
- }
-
- public function getListTableMetadataSQL(string $table, ?string $schema = null) : string
- {
- if ($schema !== null) {
- $table = $schema . '.' . $table;
- }
-
- return sprintf(
- <<<'SQL'
-SELECT obj_description(%s::regclass) AS table_comment;
-SQL
- ,
- $this->quoteStringLiteral($table)
- );
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLAnywhere11Platform.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLAnywhere11Platform.php
deleted file mode 100644
index a46ae9352..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLAnywhere11Platform.php
+++ /dev/null
@@ -1,26 +0,0 @@
-getQuotedName($this) .
- ' INCREMENT BY ' . $sequence->getAllocationSize() .
- ' START WITH ' . $sequence->getInitialValue() .
- ' MINVALUE ' . $sequence->getInitialValue();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getAlterSequenceSQL(Sequence $sequence)
- {
- return 'ALTER SEQUENCE ' . $sequence->getQuotedName($this) .
- ' INCREMENT BY ' . $sequence->getAllocationSize();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDateTimeTzFormatString()
- {
- return 'Y-m-d H:i:s.uP';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDateTimeTzTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'TIMESTAMP WITH TIME ZONE';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDropSequenceSQL($sequence)
- {
- if ($sequence instanceof Sequence) {
- $sequence = $sequence->getQuotedName($this);
- }
-
- return 'DROP SEQUENCE ' . $sequence;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getListSequencesSQL($database)
- {
- return 'SELECT sequence_name, increment_by, start_with, min_value FROM SYS.SYSSEQUENCE';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getSequenceNextValSQL($sequenceName)
- {
- return 'SELECT ' . $sequenceName . '.NEXTVAL';
- }
-
- /**
- * {@inheritdoc}
- */
- public function supportsSequences()
- {
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getAdvancedIndexOptionsSQL(Index $index)
- {
- if (! $index->isPrimary() && $index->isUnique() && $index->hasFlag('with_nulls_not_distinct')) {
- return ' WITH NULLS NOT DISTINCT' . parent::getAdvancedIndexOptionsSQL($index);
- }
-
- return parent::getAdvancedIndexOptionsSQL($index);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getReservedKeywordsClass()
- {
- return Keywords\SQLAnywhere12Keywords::class;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function initializeDoctrineTypeMappings()
- {
- parent::initializeDoctrineTypeMappings();
- $this->doctrineTypeMapping['timestamp with time zone'] = 'datetime';
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLAnywhere16Platform.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLAnywhere16Platform.php
deleted file mode 100644
index 35d4238e4..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLAnywhere16Platform.php
+++ /dev/null
@@ -1,39 +0,0 @@
-hasFlag('with_nulls_distinct') && $index->hasFlag('with_nulls_not_distinct')) {
- throw new UnexpectedValueException(
- 'An Index can either have a "with_nulls_distinct" or "with_nulls_not_distinct" flag but not both.'
- );
- }
-
- if (! $index->isPrimary() && $index->isUnique() && $index->hasFlag('with_nulls_distinct')) {
- return ' WITH NULLS DISTINCT' . parent::getAdvancedIndexOptionsSQL($index);
- }
-
- return parent::getAdvancedIndexOptionsSQL($index);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getReservedKeywordsClass()
- {
- return Keywords\SQLAnywhere16Keywords::class;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLAnywherePlatform.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLAnywherePlatform.php
deleted file mode 100644
index 6e3b2fcb9..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLAnywherePlatform.php
+++ /dev/null
@@ -1,1512 +0,0 @@
-getMaxIdentifierLength();
-
- if (strlen($schemaElementName) > $maxIdentifierLength) {
- return substr($schemaElementName, 0, $maxIdentifierLength);
- }
-
- return $schemaElementName;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getAdvancedForeignKeyOptionsSQL(ForeignKeyConstraint $foreignKey)
- {
- $query = '';
-
- if ($foreignKey->hasOption('match')) {
- $query = ' MATCH ' . $this->getForeignKeyMatchClauseSQL($foreignKey->getOption('match'));
- }
-
- $query .= parent::getAdvancedForeignKeyOptionsSQL($foreignKey);
-
- if ($foreignKey->hasOption('check_on_commit') && (bool) $foreignKey->getOption('check_on_commit')) {
- $query .= ' CHECK ON COMMIT';
- }
-
- if ($foreignKey->hasOption('clustered') && (bool) $foreignKey->getOption('clustered')) {
- $query .= ' CLUSTERED';
- }
-
- if ($foreignKey->hasOption('for_olap_workload') && (bool) $foreignKey->getOption('for_olap_workload')) {
- $query .= ' FOR OLAP WORKLOAD';
- }
-
- return $query;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getAlterTableSQL(TableDiff $diff)
- {
- $sql = [];
- $columnSql = [];
- $commentsSQL = [];
- $tableSql = [];
- $alterClauses = [];
-
- foreach ($diff->addedColumns as $column) {
- if ($this->onSchemaAlterTableAddColumn($column, $diff, $columnSql)) {
- continue;
- }
-
- $alterClauses[] = $this->getAlterTableAddColumnClause($column);
-
- $comment = $this->getColumnComment($column);
-
- if ($comment === null || $comment === '') {
- continue;
- }
-
- $commentsSQL[] = $this->getCommentOnColumnSQL(
- $diff->getName($this)->getQuotedName($this),
- $column->getQuotedName($this),
- $comment
- );
- }
-
- foreach ($diff->removedColumns as $column) {
- if ($this->onSchemaAlterTableRemoveColumn($column, $diff, $columnSql)) {
- continue;
- }
-
- $alterClauses[] = $this->getAlterTableRemoveColumnClause($column);
- }
-
- foreach ($diff->changedColumns as $columnDiff) {
- if ($this->onSchemaAlterTableChangeColumn($columnDiff, $diff, $columnSql)) {
- continue;
- }
-
- $alterClause = $this->getAlterTableChangeColumnClause($columnDiff);
-
- if ($alterClause !== null) {
- $alterClauses[] = $alterClause;
- }
-
- if (! $columnDiff->hasChanged('comment')) {
- continue;
- }
-
- $column = $columnDiff->column;
-
- $commentsSQL[] = $this->getCommentOnColumnSQL(
- $diff->getName($this)->getQuotedName($this),
- $column->getQuotedName($this),
- $this->getColumnComment($column)
- );
- }
-
- foreach ($diff->renamedColumns as $oldColumnName => $column) {
- if ($this->onSchemaAlterTableRenameColumn($oldColumnName, $column, $diff, $columnSql)) {
- continue;
- }
-
- $sql[] = $this->getAlterTableClause($diff->getName($this)) . ' ' .
- $this->getAlterTableRenameColumnClause($oldColumnName, $column);
- }
-
- if (! $this->onSchemaAlterTable($diff, $tableSql)) {
- if (! empty($alterClauses)) {
- $sql[] = $this->getAlterTableClause($diff->getName($this)) . ' ' . implode(', ', $alterClauses);
- }
-
- $sql = array_merge($sql, $commentsSQL);
-
- $newName = $diff->getNewName();
-
- if ($newName !== false) {
- $sql[] = $this->getAlterTableClause($diff->getName($this)) . ' ' .
- $this->getAlterTableRenameTableClause($newName);
- }
-
- $sql = array_merge(
- $this->getPreAlterTableIndexForeignKeySQL($diff),
- $sql,
- $this->getPostAlterTableIndexForeignKeySQL($diff)
- );
- }
-
- return array_merge($sql, $tableSql, $columnSql);
- }
-
- /**
- * Returns the SQL clause for creating a column in a table alteration.
- *
- * @param Column $column The column to add.
- *
- * @return string
- */
- protected function getAlterTableAddColumnClause(Column $column)
- {
- return 'ADD ' . $this->getColumnDeclarationSQL($column->getQuotedName($this), $column->toArray());
- }
-
- /**
- * Returns the SQL clause for altering a table.
- *
- * @param Identifier $tableName The quoted name of the table to alter.
- *
- * @return string
- */
- protected function getAlterTableClause(Identifier $tableName)
- {
- return 'ALTER TABLE ' . $tableName->getQuotedName($this);
- }
-
- /**
- * Returns the SQL clause for dropping a column in a table alteration.
- *
- * @param Column $column The column to drop.
- *
- * @return string
- */
- protected function getAlterTableRemoveColumnClause(Column $column)
- {
- return 'DROP ' . $column->getQuotedName($this);
- }
-
- /**
- * Returns the SQL clause for renaming a column in a table alteration.
- *
- * @param string $oldColumnName The quoted name of the column to rename.
- * @param Column $column The column to rename to.
- *
- * @return string
- */
- protected function getAlterTableRenameColumnClause($oldColumnName, Column $column)
- {
- $oldColumnName = new Identifier($oldColumnName);
-
- return 'RENAME ' . $oldColumnName->getQuotedName($this) . ' TO ' . $column->getQuotedName($this);
- }
-
- /**
- * Returns the SQL clause for renaming a table in a table alteration.
- *
- * @param Identifier $newTableName The quoted name of the table to rename to.
- *
- * @return string
- */
- protected function getAlterTableRenameTableClause(Identifier $newTableName)
- {
- return 'RENAME ' . $newTableName->getQuotedName($this);
- }
-
- /**
- * Returns the SQL clause for altering a column in a table alteration.
- *
- * This method returns null in case that only the column comment has changed.
- * Changes in column comments have to be handled differently.
- *
- * @param ColumnDiff $columnDiff The diff of the column to alter.
- *
- * @return string|null
- */
- protected function getAlterTableChangeColumnClause(ColumnDiff $columnDiff)
- {
- $column = $columnDiff->column;
-
- // Do not return alter clause if only comment has changed.
- if (! ($columnDiff->hasChanged('comment') && count($columnDiff->changedProperties) === 1)) {
- $columnAlterationClause = 'ALTER ' .
- $this->getColumnDeclarationSQL($column->getQuotedName($this), $column->toArray());
-
- if ($columnDiff->hasChanged('default') && $column->getDefault() === null) {
- $columnAlterationClause .= ', ALTER ' . $column->getQuotedName($this) . ' DROP DEFAULT';
- }
-
- return $columnAlterationClause;
- }
-
- return null;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getBigIntTypeDeclarationSQL(array $columnDef)
- {
- $columnDef['integer_type'] = 'BIGINT';
-
- return $this->_getCommonIntegerTypeDeclarationSQL($columnDef);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getBinaryDefaultLength()
- {
- return 1;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getBinaryMaxLength()
- {
- return 32767;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getBlobTypeDeclarationSQL(array $field)
- {
- return 'LONG BINARY';
- }
-
- /**
- * {@inheritdoc}
- *
- * BIT type columns require an explicit NULL declaration
- * in SQL Anywhere if they shall be nullable.
- * Otherwise by just omitting the NOT NULL clause,
- * SQL Anywhere will declare them NOT NULL nonetheless.
- */
- public function getBooleanTypeDeclarationSQL(array $columnDef)
- {
- $nullClause = isset($columnDef['notnull']) && (bool) $columnDef['notnull'] === false ? ' NULL' : '';
-
- return 'BIT' . $nullClause;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getClobTypeDeclarationSQL(array $field)
- {
- return 'TEXT';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getCommentOnColumnSQL($tableName, $columnName, $comment)
- {
- $tableName = new Identifier($tableName);
- $columnName = new Identifier($columnName);
- $comment = $comment === null ? 'NULL' : $this->quoteStringLiteral($comment);
-
- return sprintf(
- 'COMMENT ON COLUMN %s.%s IS %s',
- $tableName->getQuotedName($this),
- $columnName->getQuotedName($this),
- $comment
- );
- }
-
- /**
- * {@inheritdoc}
- */
- public function getConcatExpression()
- {
- return 'STRING(' . implode(', ', (array) func_get_args()) . ')';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getCreateConstraintSQL(Constraint $constraint, $table)
- {
- if ($constraint instanceof ForeignKeyConstraint) {
- return $this->getCreateForeignKeySQL($constraint, $table);
- }
-
- if ($table instanceof Table) {
- $table = $table->getQuotedName($this);
- }
-
- return 'ALTER TABLE ' . $table .
- ' ADD ' . $this->getTableConstraintDeclarationSQL($constraint, $constraint->getQuotedName($this));
- }
-
- /**
- * {@inheritdoc}
- */
- public function getCreateDatabaseSQL($database)
- {
- $database = new Identifier($database);
-
- return "CREATE DATABASE '" . $database->getName() . "'";
- }
-
- /**
- * {@inheritdoc}
- *
- * Appends SQL Anywhere specific flags if given.
- */
- public function getCreateIndexSQL(Index $index, $table)
- {
- return parent::getCreateIndexSQL($index, $table) . $this->getAdvancedIndexOptionsSQL($index);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getCreatePrimaryKeySQL(Index $index, $table)
- {
- if ($table instanceof Table) {
- $table = $table->getQuotedName($this);
- }
-
- return 'ALTER TABLE ' . $table . ' ADD ' . $this->getPrimaryKeyDeclarationSQL($index);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getCreateTemporaryTableSnippetSQL()
- {
- return 'CREATE ' . $this->getTemporaryTableSQL() . ' TABLE';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getCreateViewSQL($name, $sql)
- {
- return 'CREATE VIEW ' . $name . ' AS ' . $sql;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getCurrentDateSQL()
- {
- return 'CURRENT DATE';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getCurrentTimeSQL()
- {
- return 'CURRENT TIME';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getCurrentTimestampSQL()
- {
- return 'CURRENT TIMESTAMP';
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getDateArithmeticIntervalExpression($date, $operator, $interval, $unit)
- {
- $factorClause = '';
-
- if ($operator === '-') {
- $factorClause = '-1 * ';
- }
-
- return 'DATEADD(' . $unit . ', ' . $factorClause . $interval . ', ' . $date . ')';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDateDiffExpression($date1, $date2)
- {
- return 'DATEDIFF(day, ' . $date2 . ', ' . $date1 . ')';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDateTimeFormatString()
- {
- return 'Y-m-d H:i:s.u';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDateTimeTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'DATETIME';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDateTimeTzFormatString()
- {
- return $this->getDateTimeFormatString();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDateTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'DATE';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDefaultTransactionIsolationLevel()
- {
- return TransactionIsolationLevel::READ_UNCOMMITTED;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDropDatabaseSQL($database)
- {
- $database = new Identifier($database);
-
- return "DROP DATABASE '" . $database->getName() . "'";
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDropIndexSQL($index, $table = null)
- {
- if ($index instanceof Index) {
- $index = $index->getQuotedName($this);
- }
-
- if (! is_string($index)) {
- throw new InvalidArgumentException(
- 'SQLAnywherePlatform::getDropIndexSQL() expects $index parameter to be string or ' . Index::class . '.'
- );
- }
-
- if (! isset($table)) {
- return 'DROP INDEX ' . $index;
- }
-
- if ($table instanceof Table) {
- $table = $table->getQuotedName($this);
- }
-
- if (! is_string($table)) {
- throw new InvalidArgumentException(
- 'SQLAnywherePlatform::getDropIndexSQL() expects $table parameter to be string or ' . Index::class . '.'
- );
- }
-
- return 'DROP INDEX ' . $table . '.' . $index;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDropViewSQL($name)
- {
- return 'DROP VIEW ' . $name;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getForeignKeyBaseDeclarationSQL(ForeignKeyConstraint $foreignKey)
- {
- $sql = '';
- $foreignKeyName = $foreignKey->getName();
- $localColumns = $foreignKey->getQuotedLocalColumns($this);
- $foreignColumns = $foreignKey->getQuotedForeignColumns($this);
- $foreignTableName = $foreignKey->getQuotedForeignTableName($this);
-
- if (! empty($foreignKeyName)) {
- $sql .= 'CONSTRAINT ' . $foreignKey->getQuotedName($this) . ' ';
- }
-
- if (empty($localColumns)) {
- throw new InvalidArgumentException("Incomplete definition. 'local' required.");
- }
-
- if (empty($foreignColumns)) {
- throw new InvalidArgumentException("Incomplete definition. 'foreign' required.");
- }
-
- if (empty($foreignTableName)) {
- throw new InvalidArgumentException("Incomplete definition. 'foreignTable' required.");
- }
-
- if ($foreignKey->hasOption('notnull') && (bool) $foreignKey->getOption('notnull')) {
- $sql .= 'NOT NULL ';
- }
-
- return $sql .
- 'FOREIGN KEY (' . $this->getIndexFieldDeclarationListSQL($localColumns) . ') ' .
- 'REFERENCES ' . $foreignKey->getQuotedForeignTableName($this) .
- ' (' . $this->getIndexFieldDeclarationListSQL($foreignColumns) . ')';
- }
-
- /**
- * Returns foreign key MATCH clause for given type.
- *
- * @param int $type The foreign key match type
- *
- * @return string
- *
- * @throws InvalidArgumentException If unknown match type given.
- */
- public function getForeignKeyMatchClauseSQL($type)
- {
- switch ((int) $type) {
- case self::FOREIGN_KEY_MATCH_SIMPLE:
- return 'SIMPLE';
-
- break;
- case self::FOREIGN_KEY_MATCH_FULL:
- return 'FULL';
-
- break;
- case self::FOREIGN_KEY_MATCH_SIMPLE_UNIQUE:
- return 'UNIQUE SIMPLE';
-
- break;
- case self::FOREIGN_KEY_MATCH_FULL_UNIQUE:
- return 'UNIQUE FULL';
- default:
- throw new InvalidArgumentException('Invalid foreign key match type: ' . $type);
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function getForeignKeyReferentialActionSQL($action)
- {
- // NO ACTION is not supported, therefore falling back to RESTRICT.
- if (strtoupper($action) === 'NO ACTION') {
- return 'RESTRICT';
- }
-
- return parent::getForeignKeyReferentialActionSQL($action);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getForUpdateSQL()
- {
- return '';
- }
-
- /**
- * {@inheritdoc}
- *
- * @deprecated Use application-generated UUIDs instead
- */
- public function getGuidExpression()
- {
- return 'NEWID()';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getGuidTypeDeclarationSQL(array $field)
- {
- return 'UNIQUEIDENTIFIER';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getIndexDeclarationSQL($name, Index $index)
- {
- // Index declaration in statements like CREATE TABLE is not supported.
- throw DBALException::notSupported(__METHOD__);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getIntegerTypeDeclarationSQL(array $columnDef)
- {
- $columnDef['integer_type'] = 'INT';
-
- return $this->_getCommonIntegerTypeDeclarationSQL($columnDef);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getListDatabasesSQL()
- {
- return 'SELECT db_name(number) AS name FROM sa_db_list()';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getListTableColumnsSQL($table, $database = null)
- {
- $user = 'USER_NAME()';
-
- if (strpos($table, '.') !== false) {
- [$user, $table] = explode('.', $table);
- $user = $this->quoteStringLiteral($user);
- }
-
- return sprintf(
- <<<'SQL'
-SELECT col.column_name,
- COALESCE(def.user_type_name, def.domain_name) AS 'type',
- def.declared_width AS 'length',
- def.scale,
- CHARINDEX('unsigned', def.domain_name) AS 'unsigned',
- IF col.nulls = 'Y' THEN 0 ELSE 1 ENDIF AS 'notnull',
- col."default",
- def.is_autoincrement AS 'autoincrement',
- rem.remarks AS 'comment'
-FROM sa_describe_query('SELECT * FROM "%s"') AS def
-JOIN SYS.SYSTABCOL AS col
-ON col.table_id = def.base_table_id AND col.column_id = def.base_column_id
-LEFT JOIN SYS.SYSREMARK AS rem
-ON col.object_id = rem.object_id
-WHERE def.base_owner_name = %s
-ORDER BY def.base_column_id ASC
-SQL
- ,
- $table,
- $user
- );
- }
-
- /**
- * {@inheritdoc}
- *
- * @todo Where is this used? Which information should be retrieved?
- */
- public function getListTableConstraintsSQL($table)
- {
- $user = '';
-
- if (strpos($table, '.') !== false) {
- [$user, $table] = explode('.', $table);
- $user = $this->quoteStringLiteral($user);
- $table = $this->quoteStringLiteral($table);
- } else {
- $table = $this->quoteStringLiteral($table);
- }
-
- return sprintf(
- <<<'SQL'
-SELECT con.*
-FROM SYS.SYSCONSTRAINT AS con
-JOIN SYS.SYSTAB AS tab ON con.table_object_id = tab.object_id
-WHERE tab.table_name = %s
-AND tab.creator = USER_ID(%s)
-SQL
- ,
- $table,
- $user
- );
- }
-
- /**
- * {@inheritdoc}
- */
- public function getListTableForeignKeysSQL($table)
- {
- $user = '';
-
- if (strpos($table, '.') !== false) {
- [$user, $table] = explode('.', $table);
- $user = $this->quoteStringLiteral($user);
- $table = $this->quoteStringLiteral($table);
- } else {
- $table = $this->quoteStringLiteral($table);
- }
-
- return sprintf(
- <<<'SQL'
-SELECT fcol.column_name AS local_column,
- ptbl.table_name AS foreign_table,
- pcol.column_name AS foreign_column,
- idx.index_name,
- IF fk.nulls = 'N'
- THEN 1
- ELSE NULL
- ENDIF AS notnull,
- CASE ut.referential_action
- WHEN 'C' THEN 'CASCADE'
- WHEN 'D' THEN 'SET DEFAULT'
- WHEN 'N' THEN 'SET NULL'
- WHEN 'R' THEN 'RESTRICT'
- ELSE NULL
- END AS on_update,
- CASE dt.referential_action
- WHEN 'C' THEN 'CASCADE'
- WHEN 'D' THEN 'SET DEFAULT'
- WHEN 'N' THEN 'SET NULL'
- WHEN 'R' THEN 'RESTRICT'
- ELSE NULL
- END AS on_delete,
- IF fk.check_on_commit = 'Y'
- THEN 1
- ELSE NULL
- ENDIF AS check_on_commit, -- check_on_commit flag
- IF ftbl.clustered_index_id = idx.index_id
- THEN 1
- ELSE NULL
- ENDIF AS 'clustered', -- clustered flag
- IF fk.match_type = 0
- THEN NULL
- ELSE fk.match_type
- ENDIF AS 'match', -- match option
- IF pidx.max_key_distance = 1
- THEN 1
- ELSE NULL
- ENDIF AS for_olap_workload -- for_olap_workload flag
-FROM SYS.SYSFKEY AS fk
-JOIN SYS.SYSIDX AS idx
-ON fk.foreign_table_id = idx.table_id
-AND fk.foreign_index_id = idx.index_id
-JOIN SYS.SYSPHYSIDX pidx
-ON idx.table_id = pidx.table_id
-AND idx.phys_index_id = pidx.phys_index_id
-JOIN SYS.SYSTAB AS ptbl
-ON fk.primary_table_id = ptbl.table_id
-JOIN SYS.SYSTAB AS ftbl
-ON fk.foreign_table_id = ftbl.table_id
-JOIN SYS.SYSIDXCOL AS idxcol
-ON idx.table_id = idxcol.table_id
-AND idx.index_id = idxcol.index_id
-JOIN SYS.SYSTABCOL AS pcol
-ON ptbl.table_id = pcol.table_id
-AND idxcol.primary_column_id = pcol.column_id
-JOIN SYS.SYSTABCOL AS fcol
-ON ftbl.table_id = fcol.table_id
-AND idxcol.column_id = fcol.column_id
-LEFT JOIN SYS.SYSTRIGGER ut
-ON fk.foreign_table_id = ut.foreign_table_id
-AND fk.foreign_index_id = ut.foreign_key_id
-AND ut.event = 'C'
-LEFT JOIN SYS.SYSTRIGGER dt
-ON fk.foreign_table_id = dt.foreign_table_id
-AND fk.foreign_index_id = dt.foreign_key_id
-AND dt.event = 'D'
-WHERE ftbl.table_name = %s
-AND ftbl.creator = USER_ID(%s)
-ORDER BY fk.foreign_index_id ASC, idxcol.sequence ASC
-SQL
- ,
- $table,
- $user
- );
- }
-
- /**
- * {@inheritdoc}
- */
- public function getListTableIndexesSQL($table, $currentDatabase = null)
- {
- $user = '';
-
- if (strpos($table, '.') !== false) {
- [$user, $table] = explode('.', $table);
- $user = $this->quoteStringLiteral($user);
- $table = $this->quoteStringLiteral($table);
- } else {
- $table = $this->quoteStringLiteral($table);
- }
-
- return sprintf(
- <<<'SQL'
-SELECT idx.index_name AS key_name,
- IF idx.index_category = 1
- THEN 1
- ELSE 0
- ENDIF AS 'primary',
- col.column_name,
- IF idx."unique" IN(1, 2, 5)
- THEN 0
- ELSE 1
- ENDIF AS non_unique,
- IF tbl.clustered_index_id = idx.index_id
- THEN 1
- ELSE NULL
- ENDIF AS 'clustered', -- clustered flag
- IF idx."unique" = 5
- THEN 1
- ELSE NULL
- ENDIF AS with_nulls_not_distinct, -- with_nulls_not_distinct flag
- IF pidx.max_key_distance = 1
- THEN 1
- ELSE NULL
- ENDIF AS for_olap_workload -- for_olap_workload flag
-FROM SYS.SYSIDX AS idx
-JOIN SYS.SYSPHYSIDX pidx
-ON idx.table_id = pidx.table_id
-AND idx.phys_index_id = pidx.phys_index_id
-JOIN SYS.SYSIDXCOL AS idxcol
-ON idx.table_id = idxcol.table_id AND idx.index_id = idxcol.index_id
-JOIN SYS.SYSTABCOL AS col
-ON idxcol.table_id = col.table_id AND idxcol.column_id = col.column_id
-JOIN SYS.SYSTAB AS tbl
-ON idx.table_id = tbl.table_id
-WHERE tbl.table_name = %s
-AND tbl.creator = USER_ID(%s)
-AND idx.index_category != 2 -- exclude indexes implicitly created by foreign key constraints
-ORDER BY idx.index_id ASC, idxcol.sequence ASC
-SQL
- ,
- $table,
- $user
- );
- }
-
- /**
- * {@inheritdoc}
- */
- public function getListTablesSQL()
- {
- return "SELECT tbl.table_name
- FROM SYS.SYSTAB AS tbl
- JOIN SYS.SYSUSER AS usr ON tbl.creator = usr.user_id
- JOIN dbo.SYSOBJECTS AS obj ON tbl.object_id = obj.id
- WHERE tbl.table_type IN(1, 3) -- 'BASE', 'GBL TEMP'
- AND usr.user_name NOT IN('SYS', 'dbo', 'rs_systabgroup') -- exclude system users
- AND obj.type = 'U' -- user created tables only
- ORDER BY tbl.table_name ASC";
- }
-
- /**
- * {@inheritdoc}
- *
- * @todo Where is this used? Which information should be retrieved?
- */
- public function getListUsersSQL()
- {
- return 'SELECT * FROM SYS.SYSUSER ORDER BY user_name ASC';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getListViewsSQL($database)
- {
- return "SELECT tbl.table_name, v.view_def
- FROM SYS.SYSVIEW v
- JOIN SYS.SYSTAB tbl ON v.view_object_id = tbl.object_id
- JOIN SYS.SYSUSER usr ON tbl.creator = usr.user_id
- JOIN dbo.SYSOBJECTS obj ON tbl.object_id = obj.id
- WHERE usr.user_name NOT IN('SYS', 'dbo', 'rs_systabgroup') -- exclude system users
- ORDER BY tbl.table_name ASC";
- }
-
- /**
- * {@inheritdoc}
- */
- public function getLocateExpression($str, $substr, $startPos = false)
- {
- if ($startPos === false) {
- return 'LOCATE(' . $str . ', ' . $substr . ')';
- }
-
- return 'LOCATE(' . $str . ', ' . $substr . ', ' . $startPos . ')';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getMaxIdentifierLength()
- {
- return 128;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getMd5Expression($column)
- {
- return 'HASH(' . $column . ", 'MD5')";
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return 'sqlanywhere';
- }
-
- /**
- * Obtain DBMS specific SQL code portion needed to set a primary key
- * declaration to be used in statements like ALTER TABLE.
- *
- * @param Index $index Index definition
- * @param string $name Name of the primary key
- *
- * @return string DBMS specific SQL code portion needed to set a primary key
- *
- * @throws InvalidArgumentException If the given index is not a primary key.
- */
- public function getPrimaryKeyDeclarationSQL(Index $index, $name = null)
- {
- if (! $index->isPrimary()) {
- throw new InvalidArgumentException(
- 'Can only create primary key declarations with getPrimaryKeyDeclarationSQL()'
- );
- }
-
- return $this->getTableConstraintDeclarationSQL($index, $name);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getSetTransactionIsolationSQL($level)
- {
- return 'SET TEMPORARY OPTION isolation_level = ' . $this->_getTransactionIsolationLevelSQL($level);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getSmallIntTypeDeclarationSQL(array $columnDef)
- {
- $columnDef['integer_type'] = 'SMALLINT';
-
- return $this->_getCommonIntegerTypeDeclarationSQL($columnDef);
- }
-
- /**
- * Returns the SQL statement for starting an existing database.
- *
- * In SQL Anywhere you can start and stop databases on a
- * database server instance.
- * This is a required statement after having created a new database
- * as it has to be explicitly started to be usable.
- * SQL Anywhere does not automatically start a database after creation!
- *
- * @param string $database Name of the database to start.
- *
- * @return string
- */
- public function getStartDatabaseSQL($database)
- {
- $database = new Identifier($database);
-
- return "START DATABASE '" . $database->getName() . "' AUTOSTOP OFF";
- }
-
- /**
- * Returns the SQL statement for stopping a running database.
- *
- * In SQL Anywhere you can start and stop databases on a
- * database server instance.
- * This is a required statement before dropping an existing database
- * as it has to be explicitly stopped before it can be dropped.
- *
- * @param string $database Name of the database to stop.
- *
- * @return string
- */
- public function getStopDatabaseSQL($database)
- {
- $database = new Identifier($database);
-
- return 'STOP DATABASE "' . $database->getName() . '" UNCONDITIONALLY';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getSubstringExpression($value, $from, $length = null)
- {
- if ($length === null) {
- return 'SUBSTRING(' . $value . ', ' . $from . ')';
- }
-
- return 'SUBSTRING(' . $value . ', ' . $from . ', ' . $length . ')';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getTemporaryTableSQL()
- {
- return 'GLOBAL TEMPORARY';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getTimeFormatString()
- {
- return 'H:i:s.u';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getTimeTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'TIME';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getTrimExpression($str, $pos = TrimMode::UNSPECIFIED, $char = false)
- {
- if (! $char) {
- switch ($pos) {
- case TrimMode::LEADING:
- return $this->getLtrimExpression($str);
- case TrimMode::TRAILING:
- return $this->getRtrimExpression($str);
- default:
- return 'TRIM(' . $str . ')';
- }
- }
-
- $pattern = "'%[^' + " . $char . " + ']%'";
-
- switch ($pos) {
- case TrimMode::LEADING:
- return 'SUBSTR(' . $str . ', PATINDEX(' . $pattern . ', ' . $str . '))';
- case TrimMode::TRAILING:
- return 'REVERSE(SUBSTR(REVERSE(' . $str . '), PATINDEX(' . $pattern . ', REVERSE(' . $str . '))))';
- default:
- return 'REVERSE(SUBSTR(REVERSE(SUBSTR(' . $str . ', PATINDEX(' . $pattern . ', ' . $str . '))), ' .
- 'PATINDEX(' . $pattern . ', REVERSE(SUBSTR(' . $str . ', PATINDEX(' . $pattern . ', ' . $str . '))))))';
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function getTruncateTableSQL($tableName, $cascade = false)
- {
- $tableIdentifier = new Identifier($tableName);
-
- return 'TRUNCATE TABLE ' . $tableIdentifier->getQuotedName($this);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getUniqueConstraintDeclarationSQL($name, Index $index)
- {
- if ($index->isPrimary()) {
- throw new InvalidArgumentException(
- 'Cannot create primary key constraint declarations with getUniqueConstraintDeclarationSQL().'
- );
- }
-
- if (! $index->isUnique()) {
- throw new InvalidArgumentException(
- 'Can only create unique constraint declarations, no common index declarations with ' .
- 'getUniqueConstraintDeclarationSQL().'
- );
- }
-
- return $this->getTableConstraintDeclarationSQL($index, $name);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getVarcharDefaultLength()
- {
- return 1;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getVarcharMaxLength()
- {
- return 32767;
- }
-
- /**
- * {@inheritdoc}
- */
- public function hasNativeGuidType()
- {
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function prefersIdentityColumns()
- {
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function supportsCommentOnStatement()
- {
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function supportsIdentityColumns()
- {
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getCommonIntegerTypeDeclarationSQL(array $columnDef)
- {
- $unsigned = ! empty($columnDef['unsigned']) ? 'UNSIGNED ' : '';
- $autoincrement = ! empty($columnDef['autoincrement']) ? ' IDENTITY' : '';
-
- return $unsigned . $columnDef['integer_type'] . $autoincrement;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getCreateTableSQL($tableName, array $columns, array $options = [])
- {
- $columnListSql = $this->getColumnDeclarationListSQL($columns);
- $indexSql = [];
-
- if (! empty($options['uniqueConstraints'])) {
- foreach ((array) $options['uniqueConstraints'] as $name => $definition) {
- $columnListSql .= ', ' . $this->getUniqueConstraintDeclarationSQL($name, $definition);
- }
- }
-
- if (! empty($options['indexes'])) {
- /** @var Index $index */
- foreach ((array) $options['indexes'] as $index) {
- $indexSql[] = $this->getCreateIndexSQL($index, $tableName);
- }
- }
-
- if (! empty($options['primary'])) {
- $flags = '';
-
- if (isset($options['primary_index']) && $options['primary_index']->hasFlag('clustered')) {
- $flags = ' CLUSTERED ';
- }
-
- $columnListSql .= ', PRIMARY KEY' . $flags . ' (' . implode(', ', array_unique(array_values((array) $options['primary']))) . ')';
- }
-
- if (! empty($options['foreignKeys'])) {
- foreach ((array) $options['foreignKeys'] as $definition) {
- $columnListSql .= ', ' . $this->getForeignKeyDeclarationSQL($definition);
- }
- }
-
- $query = 'CREATE TABLE ' . $tableName . ' (' . $columnListSql;
- $check = $this->getCheckDeclarationSQL($columns);
-
- if (! empty($check)) {
- $query .= ', ' . $check;
- }
-
- $query .= ')';
-
- return array_merge([$query], $indexSql);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getTransactionIsolationLevelSQL($level)
- {
- switch ($level) {
- case TransactionIsolationLevel::READ_UNCOMMITTED:
- return 0;
- case TransactionIsolationLevel::READ_COMMITTED:
- return 1;
- case TransactionIsolationLevel::REPEATABLE_READ:
- return 2;
- case TransactionIsolationLevel::SERIALIZABLE:
- return 3;
- default:
- throw new InvalidArgumentException('Invalid isolation level:' . $level);
- }
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doModifyLimitQuery($query, $limit, $offset)
- {
- $limitOffsetClause = $this->getTopClauseSQL($limit, $offset);
-
- if ($limitOffsetClause === '') {
- return $query;
- }
-
- if (! preg_match('/^\s*(SELECT\s+(DISTINCT\s+)?)(.*)/i', $query, $matches)) {
- return $query;
- }
-
- return $matches[1] . $limitOffsetClause . ' ' . $matches[3];
- }
-
- private function getTopClauseSQL(?int $limit, ?int $offset) : string
- {
- if ($offset > 0) {
- return sprintf('TOP %s START AT %d', $limit ?? 'ALL', $offset + 1);
- }
-
- return $limit === null ? '' : 'TOP ' . $limit;
- }
-
- /**
- * Return the INDEX query section dealing with non-standard
- * SQL Anywhere options.
- *
- * @param Index $index Index definition
- *
- * @return string
- */
- protected function getAdvancedIndexOptionsSQL(Index $index)
- {
- $sql = '';
-
- if (! $index->isPrimary() && $index->hasFlag('for_olap_workload')) {
- $sql .= ' FOR OLAP WORKLOAD';
- }
-
- return $sql;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getBinaryTypeDeclarationSQLSnippet($length, $fixed)
- {
- return $fixed
- ? 'BINARY(' . ($length ?: $this->getBinaryDefaultLength()) . ')'
- : 'VARBINARY(' . ($length ?: $this->getBinaryDefaultLength()) . ')';
- }
-
- /**
- * Returns the SQL snippet for creating a table constraint.
- *
- * @param Constraint $constraint The table constraint to create the SQL snippet for.
- * @param string|null $name The table constraint name to use if any.
- *
- * @return string
- *
- * @throws InvalidArgumentException If the given table constraint type is not supported by this method.
- */
- protected function getTableConstraintDeclarationSQL(Constraint $constraint, $name = null)
- {
- if ($constraint instanceof ForeignKeyConstraint) {
- return $this->getForeignKeyDeclarationSQL($constraint);
- }
-
- if (! $constraint instanceof Index) {
- throw new InvalidArgumentException('Unsupported constraint type: ' . get_class($constraint));
- }
-
- if (! $constraint->isPrimary() && ! $constraint->isUnique()) {
- throw new InvalidArgumentException(
- 'Can only create primary, unique or foreign key constraint declarations, no common index declarations ' .
- 'with getTableConstraintDeclarationSQL().'
- );
- }
-
- $constraintColumns = $constraint->getQuotedColumns($this);
-
- if (empty($constraintColumns)) {
- throw new InvalidArgumentException("Incomplete definition. 'columns' required.");
- }
-
- $sql = '';
- $flags = '';
-
- if (! empty($name)) {
- $name = new Identifier($name);
- $sql .= 'CONSTRAINT ' . $name->getQuotedName($this) . ' ';
- }
-
- if ($constraint->hasFlag('clustered')) {
- $flags = 'CLUSTERED ';
- }
-
- if ($constraint->isPrimary()) {
- return $sql . 'PRIMARY KEY ' . $flags . '(' . $this->getIndexFieldDeclarationListSQL($constraintColumns) . ')';
- }
-
- return $sql . 'UNIQUE ' . $flags . '(' . $this->getIndexFieldDeclarationListSQL($constraintColumns) . ')';
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getCreateIndexSQLFlags(Index $index)
- {
- $type = '';
- if ($index->hasFlag('virtual')) {
- $type .= 'VIRTUAL ';
- }
-
- if ($index->isUnique()) {
- $type .= 'UNIQUE ';
- }
-
- if ($index->hasFlag('clustered')) {
- $type .= 'CLUSTERED ';
- }
-
- return $type;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getRenameIndexSQL($oldIndexName, Index $index, $tableName)
- {
- return ['ALTER INDEX ' . $oldIndexName . ' ON ' . $tableName . ' RENAME TO ' . $index->getQuotedName($this)];
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getReservedKeywordsClass()
- {
- return Keywords\SQLAnywhereKeywords::class;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed)
- {
- return $fixed
- ? ($length ? 'CHAR(' . $length . ')' : 'CHAR(' . $this->getVarcharDefaultLength() . ')')
- : ($length ? 'VARCHAR(' . $length . ')' : 'VARCHAR(' . $this->getVarcharDefaultLength() . ')');
- }
-
- /**
- * {@inheritdoc}
- */
- protected function initializeDoctrineTypeMappings()
- {
- $this->doctrineTypeMapping = [
- 'char' => 'string',
- 'long nvarchar' => 'text',
- 'long varchar' => 'text',
- 'nchar' => 'string',
- 'ntext' => 'text',
- 'nvarchar' => 'string',
- 'text' => 'text',
- 'uniqueidentifierstr' => 'guid',
- 'varchar' => 'string',
- 'xml' => 'text',
- 'bigint' => 'bigint',
- 'unsigned bigint' => 'bigint',
- 'bit' => 'boolean',
- 'decimal' => 'decimal',
- 'double' => 'float',
- 'float' => 'float',
- 'int' => 'integer',
- 'integer' => 'integer',
- 'unsigned int' => 'integer',
- 'numeric' => 'decimal',
- 'smallint' => 'smallint',
- 'unsigned smallint' => 'smallint',
- 'tinyint' => 'smallint',
- 'unsigned tinyint' => 'smallint',
- 'money' => 'decimal',
- 'smallmoney' => 'decimal',
- 'long varbit' => 'text',
- 'varbit' => 'string',
- 'date' => 'date',
- 'datetime' => 'datetime',
- 'smalldatetime' => 'datetime',
- 'time' => 'time',
- 'timestamp' => 'datetime',
- 'binary' => 'binary',
- 'image' => 'blob',
- 'long binary' => 'blob',
- 'uniqueidentifier' => 'guid',
- 'varbinary' => 'binary',
- ];
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLAzurePlatform.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLAzurePlatform.php
deleted file mode 100644
index a104848f8..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLAzurePlatform.php
+++ /dev/null
@@ -1,33 +0,0 @@
-hasOption('azure.federatedOnColumnName')) {
- $distributionName = $table->getOption('azure.federatedOnDistributionName');
- $columnName = $table->getOption('azure.federatedOnColumnName');
- $stmt = ' FEDERATED ON (' . $distributionName . ' = ' . $columnName . ')';
-
- $sql[0] .= $stmt;
- }
-
- return $sql;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLServer2005Platform.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLServer2005Platform.php
deleted file mode 100644
index 1026a934f..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLServer2005Platform.php
+++ /dev/null
@@ -1,46 +0,0 @@
-doctrineTypeMapping['datetime2'] = 'datetime';
- $this->doctrineTypeMapping['date'] = 'date';
- $this->doctrineTypeMapping['time'] = 'time';
- $this->doctrineTypeMapping['datetimeoffset'] = 'datetimetz';
- }
-
- /**
- * {@inheritdoc}
- *
- * Returns Microsoft SQL Server 2008 specific keywords class
- */
- protected function getReservedKeywordsClass()
- {
- return Keywords\SQLServer2008Keywords::class;
- }
-
- protected function getLikeWildcardCharacters() : string
- {
- return parent::getLikeWildcardCharacters() . '[]^';
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLServer2012Platform.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLServer2012Platform.php
deleted file mode 100644
index 009a37d33..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLServer2012Platform.php
+++ /dev/null
@@ -1,143 +0,0 @@
-getQuotedName($this) .
- ' INCREMENT BY ' . $sequence->getAllocationSize();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getCreateSequenceSQL(Sequence $sequence)
- {
- return 'CREATE SEQUENCE ' . $sequence->getQuotedName($this) .
- ' START WITH ' . $sequence->getInitialValue() .
- ' INCREMENT BY ' . $sequence->getAllocationSize() .
- ' MINVALUE ' . $sequence->getInitialValue();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDropSequenceSQL($sequence)
- {
- if ($sequence instanceof Sequence) {
- $sequence = $sequence->getQuotedName($this);
- }
-
- return 'DROP SEQUENCE ' . $sequence;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getListSequencesSQL($database)
- {
- return 'SELECT seq.name,
- CAST(
- seq.increment AS VARCHAR(MAX)
- ) AS increment, -- CAST avoids driver error for sql_variant type
- CAST(
- seq.start_value AS VARCHAR(MAX)
- ) AS start_value -- CAST avoids driver error for sql_variant type
- FROM sys.sequences AS seq';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getSequenceNextValSQL($sequenceName)
- {
- return 'SELECT NEXT VALUE FOR ' . $sequenceName;
- }
-
- /**
- * {@inheritdoc}
- */
- public function supportsSequences()
- {
- return true;
- }
-
- /**
- * {@inheritdoc}
- *
- * Returns Microsoft SQL Server 2012 specific keywords class
- */
- protected function getReservedKeywordsClass()
- {
- return Keywords\SQLServer2012Keywords::class;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doModifyLimitQuery($query, $limit, $offset = null)
- {
- if ($limit === null && $offset <= 0) {
- return $query;
- }
-
- // Queries using OFFSET... FETCH MUST have an ORDER BY clause
- // Find the position of the last instance of ORDER BY and ensure it is not within a parenthetical statement
- // but can be in a newline
- $matches = [];
- $matchesCount = preg_match_all('/[\\s]+order\\s+by\\s/im', $query, $matches, PREG_OFFSET_CAPTURE);
- $orderByPos = false;
- if ($matchesCount > 0) {
- $orderByPos = $matches[0][($matchesCount - 1)][1];
- }
-
- if ($orderByPos === false
- || substr_count($query, '(', $orderByPos) - substr_count($query, ')', $orderByPos)
- ) {
- if (preg_match('/^SELECT\s+DISTINCT/im', $query)) {
- // SQL Server won't let us order by a non-selected column in a DISTINCT query,
- // so we have to do this madness. This says, order by the first column in the
- // result. SQL Server's docs say that a nonordered query's result order is non-
- // deterministic anyway, so this won't do anything that a bunch of update and
- // deletes to the table wouldn't do anyway.
- $query .= ' ORDER BY 1';
- } else {
- // In another DBMS, we could do ORDER BY 0, but SQL Server gets angry if you
- // use constant expressions in the order by list.
- $query .= ' ORDER BY (SELECT 0)';
- }
- }
-
- if ($offset === null) {
- $offset = 0;
- }
-
- // This looks somewhat like MYSQL, but limit/offset are in inverse positions
- // Supposedly SQL:2008 core standard.
- // Per TSQL spec, FETCH NEXT n ROWS ONLY is not valid without OFFSET n ROWS.
- $query .= ' OFFSET ' . (int) $offset . ' ROWS';
-
- if ($limit !== null) {
- $query .= ' FETCH NEXT ' . (int) $limit . ' ROWS ONLY';
- }
-
- return $query;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLServerPlatform.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLServerPlatform.php
deleted file mode 100644
index a37f7c939..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SQLServerPlatform.php
+++ /dev/null
@@ -1,1695 +0,0 @@
-getConvertExpression('date', 'GETDATE()');
- }
-
- /**
- * {@inheritdoc}
- */
- public function getCurrentTimeSQL()
- {
- return $this->getConvertExpression('time', 'GETDATE()');
- }
-
- /**
- * Returns an expression that converts an expression of one data type to another.
- *
- * @param string $dataType The target native data type. Alias data types cannot be used.
- * @param string $expression The SQL expression to convert.
- *
- * @return string
- */
- private function getConvertExpression($dataType, $expression)
- {
- return sprintf('CONVERT(%s, %s)', $dataType, $expression);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getDateArithmeticIntervalExpression($date, $operator, $interval, $unit)
- {
- $factorClause = '';
-
- if ($operator === '-') {
- $factorClause = '-1 * ';
- }
-
- return 'DATEADD(' . $unit . ', ' . $factorClause . $interval . ', ' . $date . ')';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateDiffExpression($date1, $date2)
- {
- return 'DATEDIFF(day, ' . $date2 . ',' . $date1 . ')';
- }
-
- /**
- * {@inheritDoc}
- *
- * Microsoft SQL Server prefers "autoincrement" identity columns
- * since sequences can only be emulated with a table.
- */
- public function prefersIdentityColumns()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- *
- * Microsoft SQL Server supports this through AUTO_INCREMENT columns.
- */
- public function supportsIdentityColumns()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsReleaseSavepoints()
- {
- return false;
- }
-
- /**
- * {@inheritdoc}
- */
- public function supportsSchemas()
- {
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDefaultSchemaName()
- {
- return 'dbo';
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsColumnCollation()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function hasNativeGuidType()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCreateDatabaseSQL($name)
- {
- return 'CREATE DATABASE ' . $name;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDropDatabaseSQL($name)
- {
- return 'DROP DATABASE ' . $name;
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsCreateDropDatabase()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCreateSchemaSQL($schemaName)
- {
- return 'CREATE SCHEMA ' . $schemaName;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDropForeignKeySQL($foreignKey, $table)
- {
- if (! $foreignKey instanceof ForeignKeyConstraint) {
- $foreignKey = new Identifier($foreignKey);
- }
-
- if (! $table instanceof Table) {
- $table = new Identifier($table);
- }
-
- $foreignKey = $foreignKey->getQuotedName($this);
- $table = $table->getQuotedName($this);
-
- return 'ALTER TABLE ' . $table . ' DROP CONSTRAINT ' . $foreignKey;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDropIndexSQL($index, $table = null)
- {
- if ($index instanceof Index) {
- $index = $index->getQuotedName($this);
- } elseif (! is_string($index)) {
- throw new InvalidArgumentException('AbstractPlatform::getDropIndexSQL() expects $index parameter to be string or \Doctrine\DBAL\Schema\Index.');
- }
-
- if (! isset($table)) {
- return 'DROP INDEX ' . $index;
- }
-
- if ($table instanceof Table) {
- $table = $table->getQuotedName($this);
- }
-
- return sprintf(
- <<getCommentOnTableSQL($tableName, $tableComment);
- }
-
- // @todo does other code breaks because of this?
- // force primary keys to be not null
- foreach ($columns as &$column) {
- if (isset($column['primary']) && $column['primary']) {
- $column['notnull'] = true;
- }
-
- // Build default constraints SQL statements.
- if (isset($column['default'])) {
- $defaultConstraintsSql[] = 'ALTER TABLE ' . $tableName .
- ' ADD' . $this->getDefaultConstraintDeclarationSQL($tableName, $column);
- }
-
- if (empty($column['comment']) && ! is_numeric($column['comment'])) {
- continue;
- }
-
- $commentsSql[] = $this->getCreateColumnCommentSQL($tableName, $column['name'], $column['comment']);
- }
-
- $columnListSql = $this->getColumnDeclarationListSQL($columns);
-
- if (isset($options['uniqueConstraints']) && ! empty($options['uniqueConstraints'])) {
- foreach ($options['uniqueConstraints'] as $name => $definition) {
- $columnListSql .= ', ' . $this->getUniqueConstraintDeclarationSQL($name, $definition);
- }
- }
-
- if (isset($options['primary']) && ! empty($options['primary'])) {
- $flags = '';
- if (isset($options['primary_index']) && $options['primary_index']->hasFlag('nonclustered')) {
- $flags = ' NONCLUSTERED';
- }
- $columnListSql .= ', PRIMARY KEY' . $flags . ' (' . implode(', ', array_unique(array_values($options['primary']))) . ')';
- }
-
- $query = 'CREATE TABLE ' . $tableName . ' (' . $columnListSql;
-
- $check = $this->getCheckDeclarationSQL($columns);
- if (! empty($check)) {
- $query .= ', ' . $check;
- }
- $query .= ')';
-
- $sql = [$query];
-
- if (isset($options['indexes']) && ! empty($options['indexes'])) {
- foreach ($options['indexes'] as $index) {
- $sql[] = $this->getCreateIndexSQL($index, $tableName);
- }
- }
-
- if (isset($options['foreignKeys'])) {
- foreach ((array) $options['foreignKeys'] as $definition) {
- $sql[] = $this->getCreateForeignKeySQL($definition, $tableName);
- }
- }
-
- return array_merge($sql, $commentsSql, $defaultConstraintsSql);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCreatePrimaryKeySQL(Index $index, $table)
- {
- if ($table instanceof Table) {
- $identifier = $table->getQuotedName($this);
- } else {
- $identifier = $table;
- }
-
- $sql = 'ALTER TABLE ' . $identifier . ' ADD PRIMARY KEY';
-
- if ($index->hasFlag('nonclustered')) {
- $sql .= ' NONCLUSTERED';
- }
-
- return $sql . ' (' . $this->getIndexFieldDeclarationListSQL($index) . ')';
- }
-
- /**
- * Returns the SQL statement for creating a column comment.
- *
- * SQL Server does not support native column comments,
- * therefore the extended properties functionality is used
- * as a workaround to store them.
- * The property name used to store column comments is "MS_Description"
- * which provides compatibility with SQL Server Management Studio,
- * as column comments are stored in the same property there when
- * specifying a column's "Description" attribute.
- *
- * @param string $tableName The quoted table name to which the column belongs.
- * @param string $columnName The quoted column name to create the comment for.
- * @param string|null $comment The column's comment.
- *
- * @return string
- */
- protected function getCreateColumnCommentSQL($tableName, $columnName, $comment)
- {
- if (strpos($tableName, '.') !== false) {
- [$schemaSQL, $tableSQL] = explode('.', $tableName);
- $schemaSQL = $this->quoteStringLiteral($schemaSQL);
- $tableSQL = $this->quoteStringLiteral($tableSQL);
- } else {
- $schemaSQL = "'dbo'";
- $tableSQL = $this->quoteStringLiteral($tableName);
- }
-
- return $this->getAddExtendedPropertySQL(
- 'MS_Description',
- $comment,
- 'SCHEMA',
- $schemaSQL,
- 'TABLE',
- $tableSQL,
- 'COLUMN',
- $columnName
- );
- }
-
- /**
- * Returns the SQL snippet for declaring a default constraint.
- *
- * @param string $table Name of the table to return the default constraint declaration for.
- * @param mixed[] $column Column definition.
- *
- * @return string
- *
- * @throws InvalidArgumentException
- */
- public function getDefaultConstraintDeclarationSQL($table, array $column)
- {
- if (! isset($column['default'])) {
- throw new InvalidArgumentException("Incomplete column definition. 'default' required.");
- }
-
- $columnName = new Identifier($column['name']);
-
- return ' CONSTRAINT ' .
- $this->generateDefaultConstraintName($table, $column['name']) .
- $this->getDefaultValueDeclarationSQL($column) .
- ' FOR ' . $columnName->getQuotedName($this);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getUniqueConstraintDeclarationSQL($name, Index $index)
- {
- $constraint = parent::getUniqueConstraintDeclarationSQL($name, $index);
-
- $constraint = $this->_appendUniqueConstraintDefinition($constraint, $index);
-
- return $constraint;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCreateIndexSQL(Index $index, $table)
- {
- $constraint = parent::getCreateIndexSQL($index, $table);
-
- if ($index->isUnique() && ! $index->isPrimary()) {
- $constraint = $this->_appendUniqueConstraintDefinition($constraint, $index);
- }
-
- return $constraint;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getCreateIndexSQLFlags(Index $index)
- {
- $type = '';
- if ($index->isUnique()) {
- $type .= 'UNIQUE ';
- }
-
- if ($index->hasFlag('clustered')) {
- $type .= 'CLUSTERED ';
- } elseif ($index->hasFlag('nonclustered')) {
- $type .= 'NONCLUSTERED ';
- }
-
- return $type;
- }
-
- /**
- * Extend unique key constraint with required filters
- *
- * @param string $sql
- *
- * @return string
- */
- private function _appendUniqueConstraintDefinition($sql, Index $index)
- {
- $fields = [];
-
- foreach ($index->getQuotedColumns($this) as $field) {
- $fields[] = $field . ' IS NOT NULL';
- }
-
- return $sql . ' WHERE ' . implode(' AND ', $fields);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getAlterTableSQL(TableDiff $diff)
- {
- $queryParts = [];
- $sql = [];
- $columnSql = [];
- $commentsSql = [];
-
- foreach ($diff->addedColumns as $column) {
- if ($this->onSchemaAlterTableAddColumn($column, $diff, $columnSql)) {
- continue;
- }
-
- $columnDef = $column->toArray();
- $queryParts[] = 'ADD ' . $this->getColumnDeclarationSQL($column->getQuotedName($this), $columnDef);
-
- if (isset($columnDef['default'])) {
- $queryParts[] = $this->getAlterTableAddDefaultConstraintClause($diff->name, $column);
- }
-
- $comment = $this->getColumnComment($column);
-
- if (empty($comment) && ! is_numeric($comment)) {
- continue;
- }
-
- $commentsSql[] = $this->getCreateColumnCommentSQL(
- $diff->name,
- $column->getQuotedName($this),
- $comment
- );
- }
-
- foreach ($diff->removedColumns as $column) {
- if ($this->onSchemaAlterTableRemoveColumn($column, $diff, $columnSql)) {
- continue;
- }
-
- $queryParts[] = 'DROP COLUMN ' . $column->getQuotedName($this);
- }
-
- foreach ($diff->changedColumns as $columnDiff) {
- if ($this->onSchemaAlterTableChangeColumn($columnDiff, $diff, $columnSql)) {
- continue;
- }
-
- $column = $columnDiff->column;
- $comment = $this->getColumnComment($column);
- $hasComment = ! empty($comment) || is_numeric($comment);
-
- if ($columnDiff->fromColumn instanceof Column) {
- $fromComment = $this->getColumnComment($columnDiff->fromColumn);
- $hasFromComment = ! empty($fromComment) || is_numeric($fromComment);
-
- if ($hasFromComment && $hasComment && $fromComment !== $comment) {
- $commentsSql[] = $this->getAlterColumnCommentSQL(
- $diff->name,
- $column->getQuotedName($this),
- $comment
- );
- } elseif ($hasFromComment && ! $hasComment) {
- $commentsSql[] = $this->getDropColumnCommentSQL($diff->name, $column->getQuotedName($this));
- } elseif ($hasComment) {
- $commentsSql[] = $this->getCreateColumnCommentSQL(
- $diff->name,
- $column->getQuotedName($this),
- $comment
- );
- }
- }
-
- // Do not add query part if only comment has changed.
- if ($columnDiff->hasChanged('comment') && count($columnDiff->changedProperties) === 1) {
- continue;
- }
-
- $requireDropDefaultConstraint = $this->alterColumnRequiresDropDefaultConstraint($columnDiff);
-
- if ($requireDropDefaultConstraint) {
- $queryParts[] = $this->getAlterTableDropDefaultConstraintClause(
- $diff->name,
- $columnDiff->oldColumnName
- );
- }
-
- $columnDef = $column->toArray();
-
- $queryParts[] = 'ALTER COLUMN ' .
- $this->getColumnDeclarationSQL($column->getQuotedName($this), $columnDef);
-
- if (! isset($columnDef['default']) || (! $requireDropDefaultConstraint && ! $columnDiff->hasChanged('default'))) {
- continue;
- }
-
- $queryParts[] = $this->getAlterTableAddDefaultConstraintClause($diff->name, $column);
- }
-
- foreach ($diff->renamedColumns as $oldColumnName => $column) {
- if ($this->onSchemaAlterTableRenameColumn($oldColumnName, $column, $diff, $columnSql)) {
- continue;
- }
-
- $oldColumnName = new Identifier($oldColumnName);
-
- $sql[] = "sp_RENAME '" .
- $diff->getName($this)->getQuotedName($this) . '.' . $oldColumnName->getQuotedName($this) .
- "', '" . $column->getQuotedName($this) . "', 'COLUMN'";
-
- // Recreate default constraint with new column name if necessary (for future reference).
- if ($column->getDefault() === null) {
- continue;
- }
-
- $queryParts[] = $this->getAlterTableDropDefaultConstraintClause(
- $diff->name,
- $oldColumnName->getQuotedName($this)
- );
- $queryParts[] = $this->getAlterTableAddDefaultConstraintClause($diff->name, $column);
- }
-
- $tableSql = [];
-
- if ($this->onSchemaAlterTable($diff, $tableSql)) {
- return array_merge($tableSql, $columnSql);
- }
-
- foreach ($queryParts as $query) {
- $sql[] = 'ALTER TABLE ' . $diff->getName($this)->getQuotedName($this) . ' ' . $query;
- }
-
- $sql = array_merge($sql, $commentsSql);
-
- $newName = $diff->getNewName();
-
- if ($newName !== false) {
- $sql[] = "sp_RENAME '" . $diff->getName($this)->getQuotedName($this) . "', '" . $newName->getName() . "'";
-
- /**
- * Rename table's default constraints names
- * to match the new table name.
- * This is necessary to ensure that the default
- * constraints can be referenced in future table
- * alterations as the table name is encoded in
- * default constraints' names.
- */
- $sql[] = "DECLARE @sql NVARCHAR(MAX) = N''; " .
- "SELECT @sql += N'EXEC sp_rename N''' + dc.name + ''', N''' " .
- "+ REPLACE(dc.name, '" . $this->generateIdentifierName($diff->name) . "', " .
- "'" . $this->generateIdentifierName($newName->getName()) . "') + ''', ''OBJECT'';' " .
- 'FROM sys.default_constraints dc ' .
- 'JOIN sys.tables tbl ON dc.parent_object_id = tbl.object_id ' .
- "WHERE tbl.name = '" . $newName->getName() . "';" .
- 'EXEC sp_executesql @sql';
- }
-
- $sql = array_merge(
- $this->getPreAlterTableIndexForeignKeySQL($diff),
- $sql,
- $this->getPostAlterTableIndexForeignKeySQL($diff)
- );
-
- return array_merge($sql, $tableSql, $columnSql);
- }
-
- /**
- * Returns the SQL clause for adding a default constraint in an ALTER TABLE statement.
- *
- * @param string $tableName The name of the table to generate the clause for.
- * @param Column $column The column to generate the clause for.
- *
- * @return string
- */
- private function getAlterTableAddDefaultConstraintClause($tableName, Column $column)
- {
- $columnDef = $column->toArray();
- $columnDef['name'] = $column->getQuotedName($this);
-
- return 'ADD' . $this->getDefaultConstraintDeclarationSQL($tableName, $columnDef);
- }
-
- /**
- * Returns the SQL clause for dropping an existing default constraint in an ALTER TABLE statement.
- *
- * @param string $tableName The name of the table to generate the clause for.
- * @param string $columnName The name of the column to generate the clause for.
- *
- * @return string
- */
- private function getAlterTableDropDefaultConstraintClause($tableName, $columnName)
- {
- return 'DROP CONSTRAINT ' . $this->generateDefaultConstraintName($tableName, $columnName);
- }
-
- /**
- * Checks whether a column alteration requires dropping its default constraint first.
- *
- * Different to other database vendors SQL Server implements column default values
- * as constraints and therefore changes in a column's default value as well as changes
- * in a column's type require dropping the default constraint first before being to
- * alter the particular column to the new definition.
- *
- * @param ColumnDiff $columnDiff The column diff to evaluate.
- *
- * @return bool True if the column alteration requires dropping its default constraint first, false otherwise.
- */
- private function alterColumnRequiresDropDefaultConstraint(ColumnDiff $columnDiff)
- {
- // We can only decide whether to drop an existing default constraint
- // if we know the original default value.
- if (! $columnDiff->fromColumn instanceof Column) {
- return false;
- }
-
- // We only need to drop an existing default constraint if we know the
- // column was defined with a default value before.
- if ($columnDiff->fromColumn->getDefault() === null) {
- return false;
- }
-
- // We need to drop an existing default constraint if the column was
- // defined with a default value before and it has changed.
- if ($columnDiff->hasChanged('default')) {
- return true;
- }
-
- // We need to drop an existing default constraint if the column was
- // defined with a default value before and the native column type has changed.
- return $columnDiff->hasChanged('type') || $columnDiff->hasChanged('fixed');
- }
-
- /**
- * Returns the SQL statement for altering a column comment.
- *
- * SQL Server does not support native column comments,
- * therefore the extended properties functionality is used
- * as a workaround to store them.
- * The property name used to store column comments is "MS_Description"
- * which provides compatibility with SQL Server Management Studio,
- * as column comments are stored in the same property there when
- * specifying a column's "Description" attribute.
- *
- * @param string $tableName The quoted table name to which the column belongs.
- * @param string $columnName The quoted column name to alter the comment for.
- * @param string|null $comment The column's comment.
- *
- * @return string
- */
- protected function getAlterColumnCommentSQL($tableName, $columnName, $comment)
- {
- if (strpos($tableName, '.') !== false) {
- [$schemaSQL, $tableSQL] = explode('.', $tableName);
- $schemaSQL = $this->quoteStringLiteral($schemaSQL);
- $tableSQL = $this->quoteStringLiteral($tableSQL);
- } else {
- $schemaSQL = "'dbo'";
- $tableSQL = $this->quoteStringLiteral($tableName);
- }
-
- return $this->getUpdateExtendedPropertySQL(
- 'MS_Description',
- $comment,
- 'SCHEMA',
- $schemaSQL,
- 'TABLE',
- $tableSQL,
- 'COLUMN',
- $columnName
- );
- }
-
- /**
- * Returns the SQL statement for dropping a column comment.
- *
- * SQL Server does not support native column comments,
- * therefore the extended properties functionality is used
- * as a workaround to store them.
- * The property name used to store column comments is "MS_Description"
- * which provides compatibility with SQL Server Management Studio,
- * as column comments are stored in the same property there when
- * specifying a column's "Description" attribute.
- *
- * @param string $tableName The quoted table name to which the column belongs.
- * @param string $columnName The quoted column name to drop the comment for.
- *
- * @return string
- */
- protected function getDropColumnCommentSQL($tableName, $columnName)
- {
- if (strpos($tableName, '.') !== false) {
- [$schemaSQL, $tableSQL] = explode('.', $tableName);
- $schemaSQL = $this->quoteStringLiteral($schemaSQL);
- $tableSQL = $this->quoteStringLiteral($tableSQL);
- } else {
- $schemaSQL = "'dbo'";
- $tableSQL = $this->quoteStringLiteral($tableName);
- }
-
- return $this->getDropExtendedPropertySQL(
- 'MS_Description',
- 'SCHEMA',
- $schemaSQL,
- 'TABLE',
- $tableSQL,
- 'COLUMN',
- $columnName
- );
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getRenameIndexSQL($oldIndexName, Index $index, $tableName)
- {
- return [sprintf(
- "EXEC sp_RENAME N'%s.%s', N'%s', N'INDEX'",
- $tableName,
- $oldIndexName,
- $index->getQuotedName($this)
- ),
- ];
- }
-
- /**
- * Returns the SQL statement for adding an extended property to a database object.
- *
- * @link http://msdn.microsoft.com/en-us/library/ms180047%28v=sql.90%29.aspx
- *
- * @param string $name The name of the property to add.
- * @param string|null $value The value of the property to add.
- * @param string|null $level0Type The type of the object at level 0 the property belongs to.
- * @param string|null $level0Name The name of the object at level 0 the property belongs to.
- * @param string|null $level1Type The type of the object at level 1 the property belongs to.
- * @param string|null $level1Name The name of the object at level 1 the property belongs to.
- * @param string|null $level2Type The type of the object at level 2 the property belongs to.
- * @param string|null $level2Name The name of the object at level 2 the property belongs to.
- *
- * @return string
- */
- public function getAddExtendedPropertySQL(
- $name,
- $value = null,
- $level0Type = null,
- $level0Name = null,
- $level1Type = null,
- $level1Name = null,
- $level2Type = null,
- $level2Name = null
- ) {
- return 'EXEC sp_addextendedproperty ' .
- 'N' . $this->quoteStringLiteral($name) . ', N' . $this->quoteStringLiteral((string) $value) . ', ' .
- 'N' . $this->quoteStringLiteral((string) $level0Type) . ', ' . $level0Name . ', ' .
- 'N' . $this->quoteStringLiteral((string) $level1Type) . ', ' . $level1Name . ', ' .
- 'N' . $this->quoteStringLiteral((string) $level2Type) . ', ' . $level2Name;
- }
-
- /**
- * Returns the SQL statement for dropping an extended property from a database object.
- *
- * @link http://technet.microsoft.com/en-gb/library/ms178595%28v=sql.90%29.aspx
- *
- * @param string $name The name of the property to drop.
- * @param string|null $level0Type The type of the object at level 0 the property belongs to.
- * @param string|null $level0Name The name of the object at level 0 the property belongs to.
- * @param string|null $level1Type The type of the object at level 1 the property belongs to.
- * @param string|null $level1Name The name of the object at level 1 the property belongs to.
- * @param string|null $level2Type The type of the object at level 2 the property belongs to.
- * @param string|null $level2Name The name of the object at level 2 the property belongs to.
- *
- * @return string
- */
- public function getDropExtendedPropertySQL(
- $name,
- $level0Type = null,
- $level0Name = null,
- $level1Type = null,
- $level1Name = null,
- $level2Type = null,
- $level2Name = null
- ) {
- return 'EXEC sp_dropextendedproperty ' .
- 'N' . $this->quoteStringLiteral($name) . ', ' .
- 'N' . $this->quoteStringLiteral((string) $level0Type) . ', ' . $level0Name . ', ' .
- 'N' . $this->quoteStringLiteral((string) $level1Type) . ', ' . $level1Name . ', ' .
- 'N' . $this->quoteStringLiteral((string) $level2Type) . ', ' . $level2Name;
- }
-
- /**
- * Returns the SQL statement for updating an extended property of a database object.
- *
- * @link http://msdn.microsoft.com/en-us/library/ms186885%28v=sql.90%29.aspx
- *
- * @param string $name The name of the property to update.
- * @param string|null $value The value of the property to update.
- * @param string|null $level0Type The type of the object at level 0 the property belongs to.
- * @param string|null $level0Name The name of the object at level 0 the property belongs to.
- * @param string|null $level1Type The type of the object at level 1 the property belongs to.
- * @param string|null $level1Name The name of the object at level 1 the property belongs to.
- * @param string|null $level2Type The type of the object at level 2 the property belongs to.
- * @param string|null $level2Name The name of the object at level 2 the property belongs to.
- *
- * @return string
- */
- public function getUpdateExtendedPropertySQL(
- $name,
- $value = null,
- $level0Type = null,
- $level0Name = null,
- $level1Type = null,
- $level1Name = null,
- $level2Type = null,
- $level2Name = null
- ) {
- return 'EXEC sp_updateextendedproperty ' .
- 'N' . $this->quoteStringLiteral($name) . ', N' . $this->quoteStringLiteral((string) $value) . ', ' .
- 'N' . $this->quoteStringLiteral((string) $level0Type) . ', ' . $level0Name . ', ' .
- 'N' . $this->quoteStringLiteral((string) $level1Type) . ', ' . $level1Name . ', ' .
- 'N' . $this->quoteStringLiteral((string) $level2Type) . ', ' . $level2Name;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getEmptyIdentityInsertSQL($quotedTableName, $quotedIdentifierColumnName)
- {
- return 'INSERT INTO ' . $quotedTableName . ' DEFAULT VALUES';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTablesSQL()
- {
- // "sysdiagrams" table must be ignored as it's internal SQL Server table for Database Diagrams
- // Category 2 must be ignored as it is "MS SQL Server 'pseudo-system' object[s]" for replication
- return "SELECT name FROM sysobjects WHERE type = 'U' AND name != 'sysdiagrams' AND category != 2 ORDER BY name";
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTableColumnsSQL($table, $database = null)
- {
- return "SELECT col.name,
- type.name AS type,
- col.max_length AS length,
- ~col.is_nullable AS notnull,
- def.definition AS [default],
- col.scale,
- col.precision,
- col.is_identity AS autoincrement,
- col.collation_name AS collation,
- CAST(prop.value AS NVARCHAR(MAX)) AS comment -- CAST avoids driver error for sql_variant type
- FROM sys.columns AS col
- JOIN sys.types AS type
- ON col.user_type_id = type.user_type_id
- JOIN sys.objects AS obj
- ON col.object_id = obj.object_id
- JOIN sys.schemas AS scm
- ON obj.schema_id = scm.schema_id
- LEFT JOIN sys.default_constraints def
- ON col.default_object_id = def.object_id
- AND col.object_id = def.parent_object_id
- LEFT JOIN sys.extended_properties AS prop
- ON obj.object_id = prop.major_id
- AND col.column_id = prop.minor_id
- AND prop.name = 'MS_Description'
- WHERE obj.type = 'U'
- AND " . $this->getTableWhereClause($table, 'scm.name', 'obj.name');
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTableForeignKeysSQL($table, $database = null)
- {
- return 'SELECT f.name AS ForeignKey,
- SCHEMA_NAME (f.SCHEMA_ID) AS SchemaName,
- OBJECT_NAME (f.parent_object_id) AS TableName,
- COL_NAME (fc.parent_object_id,fc.parent_column_id) AS ColumnName,
- SCHEMA_NAME (o.SCHEMA_ID) ReferenceSchemaName,
- OBJECT_NAME (f.referenced_object_id) AS ReferenceTableName,
- COL_NAME(fc.referenced_object_id,fc.referenced_column_id) AS ReferenceColumnName,
- f.delete_referential_action_desc,
- f.update_referential_action_desc
- FROM sys.foreign_keys AS f
- INNER JOIN sys.foreign_key_columns AS fc
- INNER JOIN sys.objects AS o ON o.OBJECT_ID = fc.referenced_object_id
- ON f.OBJECT_ID = fc.constraint_object_id
- WHERE ' .
- $this->getTableWhereClause($table, 'SCHEMA_NAME (f.schema_id)', 'OBJECT_NAME (f.parent_object_id)');
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTableIndexesSQL($table, $currentDatabase = null)
- {
- return "SELECT idx.name AS key_name,
- col.name AS column_name,
- ~idx.is_unique AS non_unique,
- idx.is_primary_key AS [primary],
- CASE idx.type
- WHEN '1' THEN 'clustered'
- WHEN '2' THEN 'nonclustered'
- ELSE NULL
- END AS flags
- FROM sys.tables AS tbl
- JOIN sys.schemas AS scm ON tbl.schema_id = scm.schema_id
- JOIN sys.indexes AS idx ON tbl.object_id = idx.object_id
- JOIN sys.index_columns AS idxcol ON idx.object_id = idxcol.object_id AND idx.index_id = idxcol.index_id
- JOIN sys.columns AS col ON idxcol.object_id = col.object_id AND idxcol.column_id = col.column_id
- WHERE " . $this->getTableWhereClause($table, 'scm.name', 'tbl.name') . '
- ORDER BY idx.index_id ASC, idxcol.key_ordinal ASC';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCreateViewSQL($name, $sql)
- {
- return 'CREATE VIEW ' . $name . ' AS ' . $sql;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListViewsSQL($database)
- {
- return "SELECT name FROM sysobjects WHERE type = 'V' ORDER BY name";
- }
-
- /**
- * Returns the where clause to filter schema and table name in a query.
- *
- * @param string $table The full qualified name of the table.
- * @param string $schemaColumn The name of the column to compare the schema to in the where clause.
- * @param string $tableColumn The name of the column to compare the table to in the where clause.
- *
- * @return string
- */
- private function getTableWhereClause($table, $schemaColumn, $tableColumn)
- {
- if (strpos($table, '.') !== false) {
- [$schema, $table] = explode('.', $table);
- $schema = $this->quoteStringLiteral($schema);
- $table = $this->quoteStringLiteral($table);
- } else {
- $schema = 'SCHEMA_NAME()';
- $table = $this->quoteStringLiteral($table);
- }
-
- return sprintf('(%s = %s AND %s = %s)', $tableColumn, $table, $schemaColumn, $schema);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDropViewSQL($name)
- {
- return 'DROP VIEW ' . $name;
- }
-
- /**
- * {@inheritDoc}
- *
- * @deprecated Use application-generated UUIDs instead
- */
- public function getGuidExpression()
- {
- return 'NEWID()';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getLocateExpression($str, $substr, $startPos = false)
- {
- if ($startPos === false) {
- return 'CHARINDEX(' . $substr . ', ' . $str . ')';
- }
-
- return 'CHARINDEX(' . $substr . ', ' . $str . ', ' . $startPos . ')';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getModExpression($expression1, $expression2)
- {
- return $expression1 . ' % ' . $expression2;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getTrimExpression($str, $pos = TrimMode::UNSPECIFIED, $char = false)
- {
- if (! $char) {
- switch ($pos) {
- case TrimMode::LEADING:
- $trimFn = 'LTRIM';
- break;
-
- case TrimMode::TRAILING:
- $trimFn = 'RTRIM';
- break;
-
- default:
- return 'LTRIM(RTRIM(' . $str . '))';
- }
-
- return $trimFn . '(' . $str . ')';
- }
-
- /** Original query used to get those expressions
- declare @c varchar(100) = 'xxxBarxxx', @trim_char char(1) = 'x';
- declare @pat varchar(10) = '%[^' + @trim_char + ']%';
- select @c as string
- , @trim_char as trim_char
- , stuff(@c, 1, patindex(@pat, @c) - 1, null) as trim_leading
- , reverse(stuff(reverse(@c), 1, patindex(@pat, reverse(@c)) - 1, null)) as trim_trailing
- , reverse(stuff(reverse(stuff(@c, 1, patindex(@pat, @c) - 1, null)), 1, patindex(@pat, reverse(stuff(@c, 1, patindex(@pat, @c) - 1, null))) - 1, null)) as trim_both;
- */
- $pattern = "'%[^' + " . $char . " + ']%'";
-
- if ($pos === TrimMode::LEADING) {
- return 'stuff(' . $str . ', 1, patindex(' . $pattern . ', ' . $str . ') - 1, null)';
- }
-
- if ($pos === TrimMode::TRAILING) {
- return 'reverse(stuff(reverse(' . $str . '), 1, patindex(' . $pattern . ', reverse(' . $str . ')) - 1, null))';
- }
-
- return 'reverse(stuff(reverse(stuff(' . $str . ', 1, patindex(' . $pattern . ', ' . $str . ') - 1, null)), 1, patindex(' . $pattern . ', reverse(stuff(' . $str . ', 1, patindex(' . $pattern . ', ' . $str . ') - 1, null))) - 1, null))';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getConcatExpression()
- {
- $args = func_get_args();
-
- return '(' . implode(' + ', $args) . ')';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListDatabasesSQL()
- {
- return 'SELECT * FROM sys.databases';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListNamespacesSQL()
- {
- return "SELECT name FROM sys.schemas WHERE name NOT IN('guest', 'INFORMATION_SCHEMA', 'sys')";
- }
-
- /**
- * {@inheritDoc}
- */
- public function getSubstringExpression($value, $from, $length = null)
- {
- if ($length !== null) {
- return 'SUBSTRING(' . $value . ', ' . $from . ', ' . $length . ')';
- }
-
- return 'SUBSTRING(' . $value . ', ' . $from . ', LEN(' . $value . ') - ' . $from . ' + 1)';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getLengthExpression($column)
- {
- return 'LEN(' . $column . ')';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getSetTransactionIsolationSQL($level)
- {
- return 'SET TRANSACTION ISOLATION LEVEL ' . $this->_getTransactionIsolationLevelSQL($level);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getIntegerTypeDeclarationSQL(array $field)
- {
- return 'INT' . $this->_getCommonIntegerTypeDeclarationSQL($field);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getBigIntTypeDeclarationSQL(array $field)
- {
- return 'BIGINT' . $this->_getCommonIntegerTypeDeclarationSQL($field);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getSmallIntTypeDeclarationSQL(array $field)
- {
- return 'SMALLINT' . $this->_getCommonIntegerTypeDeclarationSQL($field);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getGuidTypeDeclarationSQL(array $field)
- {
- return 'UNIQUEIDENTIFIER';
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed)
- {
- return $fixed ? ($length ? 'NCHAR(' . $length . ')' : 'CHAR(255)') : ($length ? 'NVARCHAR(' . $length . ')' : 'NVARCHAR(255)');
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getBinaryTypeDeclarationSQLSnippet($length, $fixed)
- {
- return $fixed ? 'BINARY(' . ($length ?: 255) . ')' : 'VARBINARY(' . ($length ?: 255) . ')';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getBinaryMaxLength()
- {
- return 8000;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getClobTypeDeclarationSQL(array $field)
- {
- return 'VARCHAR(MAX)';
- }
-
- /**
- * {@inheritDoc}
- */
- protected function _getCommonIntegerTypeDeclarationSQL(array $columnDef)
- {
- return ! empty($columnDef['autoincrement']) ? ' IDENTITY' : '';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateTimeTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'DATETIME';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'DATETIME';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getTimeTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'DATETIME';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getBooleanTypeDeclarationSQL(array $field)
- {
- return 'BIT';
- }
-
- /**
- * {@inheritDoc}
- */
- protected function doModifyLimitQuery($query, $limit, $offset = null)
- {
- $where = [];
-
- if ($offset > 0) {
- $where[] = sprintf('doctrine_rownum >= %d', $offset + 1);
- }
-
- if ($limit !== null) {
- $where[] = sprintf('doctrine_rownum <= %d', $offset + $limit);
- $top = sprintf('TOP %d', $offset + $limit);
- } else {
- $top = 'TOP 9223372036854775807';
- }
-
- if (empty($where)) {
- return $query;
- }
-
- // We'll find a SELECT or SELECT distinct and prepend TOP n to it
- // Even if the TOP n is very large, the use of a CTE will
- // allow the SQL Server query planner to optimize it so it doesn't
- // actually scan the entire range covered by the TOP clause.
- if (! preg_match('/^(\s*SELECT\s+(?:DISTINCT\s+)?)(.*)$/is', $query, $matches)) {
- return $query;
- }
-
- $query = $matches[1] . $top . ' ' . $matches[2];
-
- if (stristr($query, 'ORDER BY')) {
- // Inner order by is not valid in SQL Server for our purposes
- // unless it's in a TOP N subquery.
- $query = $this->scrubInnerOrderBy($query);
- }
-
- // Build a new limited query around the original, using a CTE
- return sprintf(
- 'WITH dctrn_cte AS (%s) '
- . 'SELECT * FROM ('
- . 'SELECT *, ROW_NUMBER() OVER (ORDER BY (SELECT 0)) AS doctrine_rownum FROM dctrn_cte'
- . ') AS doctrine_tbl '
- . 'WHERE %s ORDER BY doctrine_rownum ASC',
- $query,
- implode(' AND ', $where)
- );
- }
-
- /**
- * Remove ORDER BY clauses in subqueries - they're not supported by SQL Server.
- * Caveat: will leave ORDER BY in TOP N subqueries.
- *
- * @param string $query
- *
- * @return string
- */
- private function scrubInnerOrderBy($query)
- {
- $count = substr_count(strtoupper($query), 'ORDER BY');
- $offset = 0;
-
- while ($count-- > 0) {
- $orderByPos = stripos($query, ' ORDER BY', $offset);
- if ($orderByPos === false) {
- break;
- }
-
- $qLen = strlen($query);
- $parenCount = 0;
- $currentPosition = $orderByPos;
-
- while ($parenCount >= 0 && $currentPosition < $qLen) {
- if ($query[$currentPosition] === '(') {
- $parenCount++;
- } elseif ($query[$currentPosition] === ')') {
- $parenCount--;
- }
-
- $currentPosition++;
- }
-
- if ($this->isOrderByInTopNSubquery($query, $orderByPos)) {
- // If the order by clause is in a TOP N subquery, do not remove
- // it and continue iteration from the current position.
- $offset = $currentPosition;
- continue;
- }
-
- if ($currentPosition >= $qLen - 1) {
- continue;
- }
-
- $query = substr($query, 0, $orderByPos) . substr($query, $currentPosition - 1);
- $offset = $orderByPos;
- }
-
- return $query;
- }
-
- /**
- * Check an ORDER BY clause to see if it is in a TOP N query or subquery.
- *
- * @param string $query The query
- * @param int $currentPosition Start position of ORDER BY clause
- *
- * @return bool true if ORDER BY is in a TOP N query, false otherwise
- */
- private function isOrderByInTopNSubquery($query, $currentPosition)
- {
- // Grab query text on the same nesting level as the ORDER BY clause we're examining.
- $subQueryBuffer = '';
- $parenCount = 0;
-
- // If $parenCount goes negative, we've exited the subquery we're examining.
- // If $currentPosition goes negative, we've reached the beginning of the query.
- while ($parenCount >= 0 && $currentPosition >= 0) {
- if ($query[$currentPosition] === '(') {
- $parenCount--;
- } elseif ($query[$currentPosition] === ')') {
- $parenCount++;
- }
-
- // Only yank query text on the same nesting level as the ORDER BY clause.
- $subQueryBuffer = ($parenCount === 0 ? $query[$currentPosition] : ' ') . $subQueryBuffer;
-
- $currentPosition--;
- }
-
- return (bool) preg_match('/SELECT\s+(DISTINCT\s+)?TOP\s/i', $subQueryBuffer);
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsLimitOffset()
- {
- return false;
- }
-
- /**
- * {@inheritDoc}
- */
- public function convertBooleans($item)
- {
- if (is_array($item)) {
- foreach ($item as $key => $value) {
- if (! is_bool($value) && ! is_numeric($value)) {
- continue;
- }
-
- $item[$key] = $value ? 1 : 0;
- }
- } elseif (is_bool($item) || is_numeric($item)) {
- $item = $item ? 1 : 0;
- }
-
- return $item;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCreateTemporaryTableSnippetSQL()
- {
- return 'CREATE TABLE';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getTemporaryTableName($tableName)
- {
- return '#' . $tableName;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateTimeFormatString()
- {
- return 'Y-m-d H:i:s.000';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateFormatString()
- {
- return 'Y-m-d H:i:s.000';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getTimeFormatString()
- {
- return 'Y-m-d H:i:s.000';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateTimeTzFormatString()
- {
- return $this->getDateTimeFormatString();
- }
-
- /**
- * {@inheritDoc}
- */
- public function getName()
- {
- return 'mssql';
- }
-
- /**
- * {@inheritDoc}
- */
- protected function initializeDoctrineTypeMappings()
- {
- $this->doctrineTypeMapping = [
- 'bigint' => 'bigint',
- 'numeric' => 'decimal',
- 'bit' => 'boolean',
- 'smallint' => 'smallint',
- 'decimal' => 'decimal',
- 'smallmoney' => 'integer',
- 'int' => 'integer',
- 'tinyint' => 'smallint',
- 'money' => 'integer',
- 'float' => 'float',
- 'real' => 'float',
- 'double' => 'float',
- 'double precision' => 'float',
- 'smalldatetime' => 'datetime',
- 'datetime' => 'datetime',
- 'char' => 'string',
- 'varchar' => 'string',
- 'text' => 'text',
- 'nchar' => 'string',
- 'nvarchar' => 'string',
- 'ntext' => 'text',
- 'binary' => 'binary',
- 'varbinary' => 'binary',
- 'image' => 'blob',
- 'uniqueidentifier' => 'guid',
- ];
- }
-
- /**
- * {@inheritDoc}
- */
- public function createSavePoint($savepoint)
- {
- return 'SAVE TRANSACTION ' . $savepoint;
- }
-
- /**
- * {@inheritDoc}
- */
- public function releaseSavePoint($savepoint)
- {
- return '';
- }
-
- /**
- * {@inheritDoc}
- */
- public function rollbackSavePoint($savepoint)
- {
- return 'ROLLBACK TRANSACTION ' . $savepoint;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getForeignKeyReferentialActionSQL($action)
- {
- // RESTRICT is not supported, therefore falling back to NO ACTION.
- if (strtoupper($action) === 'RESTRICT') {
- return 'NO ACTION';
- }
-
- return parent::getForeignKeyReferentialActionSQL($action);
- }
-
- /**
- * {@inheritDoc}
- */
- public function appendLockHint($fromClause, $lockMode)
- {
- switch (true) {
- case $lockMode === LockMode::NONE:
- return $fromClause . ' WITH (NOLOCK)';
-
- case $lockMode === LockMode::PESSIMISTIC_READ:
- return $fromClause . ' WITH (HOLDLOCK, ROWLOCK)';
-
- case $lockMode === LockMode::PESSIMISTIC_WRITE:
- return $fromClause . ' WITH (UPDLOCK, ROWLOCK)';
-
- default:
- return $fromClause;
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public function getForUpdateSQL()
- {
- return ' ';
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getReservedKeywordsClass()
- {
- return Keywords\SQLServerKeywords::class;
- }
-
- /**
- * {@inheritDoc}
- */
- public function quoteSingleIdentifier($str)
- {
- return '[' . str_replace(']', '][', $str) . ']';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getTruncateTableSQL($tableName, $cascade = false)
- {
- $tableIdentifier = new Identifier($tableName);
-
- return 'TRUNCATE TABLE ' . $tableIdentifier->getQuotedName($this);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getBlobTypeDeclarationSQL(array $field)
- {
- return 'VARBINARY(MAX)';
- }
-
- /**
- * {@inheritdoc}
- *
- * Modifies column declaration order as it differs in Microsoft SQL Server.
- */
- public function getColumnDeclarationSQL($name, array $field)
- {
- if (isset($field['columnDefinition'])) {
- $columnDef = $this->getCustomTypeDeclarationSQL($field);
- } else {
- $collation = isset($field['collation']) && $field['collation'] ?
- ' ' . $this->getColumnCollationDeclarationSQL($field['collation']) : '';
-
- $notnull = isset($field['notnull']) && $field['notnull'] ? ' NOT NULL' : '';
-
- $unique = isset($field['unique']) && $field['unique'] ?
- ' ' . $this->getUniqueFieldDeclarationSQL() : '';
-
- $check = isset($field['check']) && $field['check'] ?
- ' ' . $field['check'] : '';
-
- $typeDecl = $field['type']->getSQLDeclaration($field, $this);
- $columnDef = $typeDecl . $collation . $notnull . $unique . $check;
- }
-
- return $name . ' ' . $columnDef;
- }
-
- /**
- * Returns a unique default constraint name for a table and column.
- *
- * @param string $table Name of the table to generate the unique default constraint name for.
- * @param string $column Name of the column in the table to generate the unique default constraint name for.
- *
- * @return string
- */
- private function generateDefaultConstraintName($table, $column)
- {
- return 'DF_' . $this->generateIdentifierName($table) . '_' . $this->generateIdentifierName($column);
- }
-
- /**
- * Returns a hash value for a given identifier.
- *
- * @param string $identifier Identifier to generate a hash value for.
- *
- * @return string
- */
- private function generateIdentifierName($identifier)
- {
- // Always generate name for unquoted identifiers to ensure consistency.
- $identifier = new Identifier($identifier);
-
- return strtoupper(dechex(crc32($identifier->getName())));
- }
-
- protected function getCommentOnTableSQL(string $tableName, ?string $comment) : string
- {
- return sprintf(
- <<<'SQL'
-EXEC sys.sp_addextendedproperty @name=N'MS_Description',
- @value=N%s, @level0type=N'SCHEMA', @level0name=N'dbo',
- @level1type=N'TABLE', @level1name=N%s
-SQL
- ,
- $this->quoteStringLiteral((string) $comment),
- $this->quoteStringLiteral($tableName)
- );
- }
-
- public function getListTableMetadataSQL(string $table) : string
- {
- return sprintf(
- <<<'SQL'
-SELECT
- p.value AS [table_comment]
-FROM
- sys.tables AS tbl
- INNER JOIN sys.extended_properties AS p ON p.major_id=tbl.object_id AND p.minor_id=0 AND p.class=1
-WHERE
- (tbl.name=N%s and SCHEMA_NAME(tbl.schema_id)=N'dbo' and p.name=N'MS_Description')
-SQL
- ,
- $this->quoteStringLiteral($table)
- );
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SqlitePlatform.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SqlitePlatform.php
deleted file mode 100644
index 02d2482c8..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/SqlitePlatform.php
+++ /dev/null
@@ -1,1199 +0,0 @@
-_getTransactionIsolationLevelSQL($level);
- }
-
- /**
- * {@inheritDoc}
- */
- public function prefersIdentityColumns()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getBooleanTypeDeclarationSQL(array $field)
- {
- return 'BOOLEAN';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getIntegerTypeDeclarationSQL(array $field)
- {
- return 'INTEGER' . $this->_getCommonIntegerTypeDeclarationSQL($field);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getBigIntTypeDeclarationSQL(array $field)
- {
- // SQLite autoincrement is implicit for INTEGER PKs, but not for BIGINT fields.
- if (! empty($field['autoincrement'])) {
- return $this->getIntegerTypeDeclarationSQL($field);
- }
-
- return 'BIGINT' . $this->_getCommonIntegerTypeDeclarationSQL($field);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getTinyIntTypeDeclarationSql(array $field)
- {
- // SQLite autoincrement is implicit for INTEGER PKs, but not for TINYINT fields.
- if (! empty($field['autoincrement'])) {
- return $this->getIntegerTypeDeclarationSQL($field);
- }
-
- return 'TINYINT' . $this->_getCommonIntegerTypeDeclarationSQL($field);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getSmallIntTypeDeclarationSQL(array $field)
- {
- // SQLite autoincrement is implicit for INTEGER PKs, but not for SMALLINT fields.
- if (! empty($field['autoincrement'])) {
- return $this->getIntegerTypeDeclarationSQL($field);
- }
-
- return 'SMALLINT' . $this->_getCommonIntegerTypeDeclarationSQL($field);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getMediumIntTypeDeclarationSql(array $field)
- {
- // SQLite autoincrement is implicit for INTEGER PKs, but not for MEDIUMINT fields.
- if (! empty($field['autoincrement'])) {
- return $this->getIntegerTypeDeclarationSQL($field);
- }
-
- return 'MEDIUMINT' . $this->_getCommonIntegerTypeDeclarationSQL($field);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateTimeTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'DATETIME';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDateTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'DATE';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getTimeTypeDeclarationSQL(array $fieldDeclaration)
- {
- return 'TIME';
- }
-
- /**
- * {@inheritDoc}
- */
- protected function _getCommonIntegerTypeDeclarationSQL(array $columnDef)
- {
- // sqlite autoincrement is only possible for the primary key
- if (! empty($columnDef['autoincrement'])) {
- return ' PRIMARY KEY AUTOINCREMENT';
- }
-
- return ! empty($columnDef['unsigned']) ? ' UNSIGNED' : '';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getForeignKeyDeclarationSQL(ForeignKeyConstraint $foreignKey)
- {
- return parent::getForeignKeyDeclarationSQL(new ForeignKeyConstraint(
- $foreignKey->getQuotedLocalColumns($this),
- str_replace('.', '__', $foreignKey->getQuotedForeignTableName($this)),
- $foreignKey->getQuotedForeignColumns($this),
- $foreignKey->getName(),
- $foreignKey->getOptions()
- ));
- }
-
- /**
- * {@inheritDoc}
- */
- protected function _getCreateTableSQL($name, array $columns, array $options = [])
- {
- $name = str_replace('.', '__', $name);
- $queryFields = $this->getColumnDeclarationListSQL($columns);
-
- if (isset($options['uniqueConstraints']) && ! empty($options['uniqueConstraints'])) {
- foreach ($options['uniqueConstraints'] as $name => $definition) {
- $queryFields .= ', ' . $this->getUniqueConstraintDeclarationSQL($name, $definition);
- }
- }
-
- $queryFields .= $this->getNonAutoincrementPrimaryKeyDefinition($columns, $options);
-
- if (isset($options['foreignKeys'])) {
- foreach ($options['foreignKeys'] as $foreignKey) {
- $queryFields .= ', ' . $this->getForeignKeyDeclarationSQL($foreignKey);
- }
- }
-
- $tableComment = '';
- if (isset($options['comment'])) {
- $comment = trim($options['comment'], " '");
-
- $tableComment = $this->getInlineTableCommentSQL($comment);
- }
-
- $query = ['CREATE TABLE ' . $name . ' ' . $tableComment . '(' . $queryFields . ')'];
-
- if (isset($options['alter']) && $options['alter'] === true) {
- return $query;
- }
-
- if (isset($options['indexes']) && ! empty($options['indexes'])) {
- foreach ($options['indexes'] as $indexDef) {
- $query[] = $this->getCreateIndexSQL($indexDef, $name);
- }
- }
-
- if (isset($options['unique']) && ! empty($options['unique'])) {
- foreach ($options['unique'] as $indexDef) {
- $query[] = $this->getCreateIndexSQL($indexDef, $name);
- }
- }
-
- return $query;
- }
-
- /**
- * Generate a PRIMARY KEY definition if no autoincrement value is used
- *
- * @param mixed[][] $columns
- * @param mixed[] $options
- */
- private function getNonAutoincrementPrimaryKeyDefinition(array $columns, array $options) : string
- {
- if (empty($options['primary'])) {
- return '';
- }
-
- $keyColumns = array_unique(array_values($options['primary']));
-
- foreach ($keyColumns as $keyColumn) {
- if (! empty($columns[$keyColumn]['autoincrement'])) {
- return '';
- }
- }
-
- return ', PRIMARY KEY(' . implode(', ', $keyColumns) . ')';
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed)
- {
- return $fixed ? ($length ? 'CHAR(' . $length . ')' : 'CHAR(255)')
- : ($length ? 'VARCHAR(' . $length . ')' : 'TEXT');
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getBinaryTypeDeclarationSQLSnippet($length, $fixed)
- {
- return 'BLOB';
- }
-
- /**
- * {@inheritdoc}
- */
- public function getBinaryMaxLength()
- {
- return 0;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getBinaryDefaultLength()
- {
- return 0;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getClobTypeDeclarationSQL(array $field)
- {
- return 'CLOB';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTableConstraintsSQL($table)
- {
- $table = str_replace('.', '__', $table);
-
- return sprintf(
- "SELECT sql FROM sqlite_master WHERE type='index' AND tbl_name = %s AND sql NOT NULL ORDER BY name",
- $this->quoteStringLiteral($table)
- );
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTableColumnsSQL($table, $currentDatabase = null)
- {
- $table = str_replace('.', '__', $table);
-
- return sprintf('PRAGMA table_info(%s)', $this->quoteStringLiteral($table));
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTableIndexesSQL($table, $currentDatabase = null)
- {
- $table = str_replace('.', '__', $table);
-
- return sprintf('PRAGMA index_list(%s)', $this->quoteStringLiteral($table));
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTablesSQL()
- {
- return "SELECT name FROM sqlite_master WHERE type = 'table' AND name != 'sqlite_sequence' AND name != 'geometry_columns' AND name != 'spatial_ref_sys' "
- . 'UNION ALL SELECT name FROM sqlite_temp_master '
- . "WHERE type = 'table' ORDER BY name";
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListViewsSQL($database)
- {
- return "SELECT name, sql FROM sqlite_master WHERE type='view' AND sql NOT NULL";
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCreateViewSQL($name, $sql)
- {
- return 'CREATE VIEW ' . $name . ' AS ' . $sql;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getDropViewSQL($name)
- {
- return 'DROP VIEW ' . $name;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getAdvancedForeignKeyOptionsSQL(ForeignKeyConstraint $foreignKey)
- {
- $query = parent::getAdvancedForeignKeyOptionsSQL($foreignKey);
-
- $query .= ($foreignKey->hasOption('deferrable') && $foreignKey->getOption('deferrable') !== false ? ' ' : ' NOT ') . 'DEFERRABLE';
- $query .= ' INITIALLY ' . ($foreignKey->hasOption('deferred') && $foreignKey->getOption('deferred') !== false ? 'DEFERRED' : 'IMMEDIATE');
-
- return $query;
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsIdentityColumns()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsColumnCollation()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsInlineColumnComments()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getName()
- {
- return 'sqlite';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getTruncateTableSQL($tableName, $cascade = false)
- {
- $tableIdentifier = new Identifier($tableName);
- $tableName = str_replace('.', '__', $tableIdentifier->getQuotedName($this));
-
- return 'DELETE FROM ' . $tableName;
- }
-
- /**
- * User-defined function for Sqlite that is used with PDO::sqliteCreateFunction().
- *
- * @param int|float $value
- *
- * @return float
- */
- public static function udfSqrt($value)
- {
- return sqrt($value);
- }
-
- /**
- * User-defined function for Sqlite that implements MOD(a, b).
- *
- * @param int $a
- * @param int $b
- *
- * @return int
- */
- public static function udfMod($a, $b)
- {
- return $a % $b;
- }
-
- /**
- * @param string $str
- * @param string $substr
- * @param int $offset
- *
- * @return int
- */
- public static function udfLocate($str, $substr, $offset = 0)
- {
- // SQL's LOCATE function works on 1-based positions, while PHP's strpos works on 0-based positions.
- // So we have to make them compatible if an offset is given.
- if ($offset > 0) {
- $offset -= 1;
- }
-
- $pos = strpos($str, $substr, $offset);
-
- if ($pos !== false) {
- return $pos + 1;
- }
-
- return 0;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getForUpdateSql()
- {
- return '';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getInlineColumnCommentSQL($comment)
- {
- return '--' . str_replace("\n", "\n--", $comment) . "\n";
- }
-
- private function getInlineTableCommentSQL(string $comment) : string
- {
- return $this->getInlineColumnCommentSQL($comment);
- }
-
- /**
- * {@inheritDoc}
- */
- protected function initializeDoctrineTypeMappings()
- {
- $this->doctrineTypeMapping = [
- 'boolean' => 'boolean',
- 'tinyint' => 'boolean',
- 'smallint' => 'smallint',
- 'mediumint' => 'integer',
- 'int' => 'integer',
- 'integer' => 'integer',
- 'serial' => 'integer',
- 'bigint' => 'bigint',
- 'bigserial' => 'bigint',
- 'clob' => 'text',
- 'tinytext' => 'text',
- 'mediumtext' => 'text',
- 'longtext' => 'text',
- 'text' => 'text',
- 'varchar' => 'string',
- 'longvarchar' => 'string',
- 'varchar2' => 'string',
- 'nvarchar' => 'string',
- 'image' => 'string',
- 'ntext' => 'string',
- 'char' => 'string',
- 'date' => 'date',
- 'datetime' => 'datetime',
- 'timestamp' => 'datetime',
- 'time' => 'time',
- 'float' => 'float',
- 'double' => 'float',
- 'double precision' => 'float',
- 'real' => 'float',
- 'decimal' => 'decimal',
- 'numeric' => 'decimal',
- 'blob' => 'blob',
- ];
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getReservedKeywordsClass()
- {
- return Keywords\SQLiteKeywords::class;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getPreAlterTableIndexForeignKeySQL(TableDiff $diff)
- {
- if (! $diff->fromTable instanceof Table) {
- throw new DBALException('Sqlite platform requires for alter table the table diff with reference to original table schema');
- }
-
- $sql = [];
- foreach ($diff->fromTable->getIndexes() as $index) {
- if ($index->isPrimary()) {
- continue;
- }
-
- $sql[] = $this->getDropIndexSQL($index, $diff->name);
- }
-
- return $sql;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function getPostAlterTableIndexForeignKeySQL(TableDiff $diff)
- {
- if (! $diff->fromTable instanceof Table) {
- throw new DBALException('Sqlite platform requires for alter table the table diff with reference to original table schema');
- }
-
- $sql = [];
- $tableName = $diff->getNewName();
-
- if ($tableName === false) {
- $tableName = $diff->getName($this);
- }
-
- foreach ($this->getIndexesInAlteredTable($diff) as $index) {
- if ($index->isPrimary()) {
- continue;
- }
-
- $sql[] = $this->getCreateIndexSQL($index, $tableName->getQuotedName($this));
- }
-
- return $sql;
- }
-
- /**
- * {@inheritDoc}
- */
- protected function doModifyLimitQuery($query, $limit, $offset)
- {
- if ($limit === null && $offset > 0) {
- return $query . ' LIMIT -1 OFFSET ' . $offset;
- }
-
- return parent::doModifyLimitQuery($query, $limit, $offset);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getBlobTypeDeclarationSQL(array $field)
- {
- return 'BLOB';
- }
-
- /**
- * {@inheritDoc}
- */
- public function getTemporaryTableName($tableName)
- {
- $tableName = str_replace('.', '__', $tableName);
-
- return $tableName;
- }
-
- /**
- * {@inheritDoc}
- *
- * Sqlite Platform emulates schema by underscoring each dot and generating tables
- * into the default database.
- *
- * This hack is implemented to be able to use SQLite as testdriver when
- * using schema supporting databases.
- */
- public function canEmulateSchemas()
- {
- return true;
- }
-
- /**
- * {@inheritDoc}
- */
- public function supportsForeignKeyConstraints()
- {
- return false;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCreatePrimaryKeySQL(Index $index, $table)
- {
- throw new DBALException('Sqlite platform does not support alter primary key.');
- }
-
- /**
- * {@inheritdoc}
- */
- public function getCreateForeignKeySQL(ForeignKeyConstraint $foreignKey, $table)
- {
- throw new DBALException('Sqlite platform does not support alter foreign key.');
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDropForeignKeySQL($foreignKey, $table)
- {
- throw new DBALException('Sqlite platform does not support alter foreign key.');
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCreateConstraintSQL(Constraint $constraint, $table)
- {
- throw new DBALException('Sqlite platform does not support alter constraint.');
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCreateTableSQL(Table $table, $createFlags = null)
- {
- $createFlags = $createFlags ?? self::CREATE_INDEXES | self::CREATE_FOREIGNKEYS;
-
- return parent::getCreateTableSQL($table, $createFlags);
- }
-
- /**
- * {@inheritDoc}
- */
- public function getListTableForeignKeysSQL($table, $database = null)
- {
- $table = str_replace('.', '__', $table);
-
- return sprintf('PRAGMA foreign_key_list(%s)', $this->quoteStringLiteral($table));
- }
-
- /**
- * {@inheritDoc}
- */
- public function getAlterTableSQL(TableDiff $diff)
- {
- $sql = $this->getSimpleAlterTableSQL($diff);
- if ($sql !== false) {
- return $sql;
- }
-
- $fromTable = $diff->fromTable;
- if (! $fromTable instanceof Table) {
- throw new DBALException('Sqlite platform requires for alter table the table diff with reference to original table schema');
- }
-
- $table = clone $fromTable;
-
- $columns = [];
- $oldColumnNames = [];
- $newColumnNames = [];
- $columnSql = [];
-
- foreach ($table->getColumns() as $columnName => $column) {
- $columnName = strtolower($columnName);
- $columns[$columnName] = $column;
- $oldColumnNames[$columnName] = $newColumnNames[$columnName] = $column->getQuotedName($this);
- }
-
- foreach ($diff->removedColumns as $columnName => $column) {
- if ($this->onSchemaAlterTableRemoveColumn($column, $diff, $columnSql)) {
- continue;
- }
-
- $columnName = strtolower($columnName);
- if (! isset($columns[$columnName])) {
- continue;
- }
-
- unset(
- $columns[$columnName],
- $oldColumnNames[$columnName],
- $newColumnNames[$columnName]
- );
- }
-
- foreach ($diff->renamedColumns as $oldColumnName => $column) {
- if ($this->onSchemaAlterTableRenameColumn($oldColumnName, $column, $diff, $columnSql)) {
- continue;
- }
-
- $oldColumnName = strtolower($oldColumnName);
- if (isset($columns[$oldColumnName])) {
- unset($columns[$oldColumnName]);
- }
-
- $columns[strtolower($column->getName())] = $column;
-
- if (! isset($newColumnNames[$oldColumnName])) {
- continue;
- }
-
- $newColumnNames[$oldColumnName] = $column->getQuotedName($this);
- }
-
- foreach ($diff->changedColumns as $oldColumnName => $columnDiff) {
- if ($this->onSchemaAlterTableChangeColumn($columnDiff, $diff, $columnSql)) {
- continue;
- }
-
- if (isset($columns[$oldColumnName])) {
- unset($columns[$oldColumnName]);
- }
-
- $columns[strtolower($columnDiff->column->getName())] = $columnDiff->column;
-
- if (! isset($newColumnNames[$oldColumnName])) {
- continue;
- }
-
- $newColumnNames[$oldColumnName] = $columnDiff->column->getQuotedName($this);
- }
-
- foreach ($diff->addedColumns as $columnName => $column) {
- if ($this->onSchemaAlterTableAddColumn($column, $diff, $columnSql)) {
- continue;
- }
-
- $columns[strtolower($columnName)] = $column;
- }
-
- $sql = [];
- $tableSql = [];
- if (! $this->onSchemaAlterTable($diff, $tableSql)) {
- $dataTable = new Table('__temp__' . $table->getName());
-
- $newTable = new Table($table->getQuotedName($this), $columns, $this->getPrimaryIndexInAlteredTable($diff), $this->getForeignKeysInAlteredTable($diff), 0, $table->getOptions());
- $newTable->addOption('alter', true);
-
- $sql = $this->getPreAlterTableIndexForeignKeySQL($diff);
- //$sql = array_merge($sql, $this->getCreateTableSQL($dataTable, 0));
- $sql[] = sprintf('CREATE TEMPORARY TABLE %s AS SELECT %s FROM %s', $dataTable->getQuotedName($this), implode(', ', $oldColumnNames), $table->getQuotedName($this));
- $sql[] = $this->getDropTableSQL($fromTable);
-
- $sql = array_merge($sql, $this->getCreateTableSQL($newTable));
- $sql[] = sprintf('INSERT INTO %s (%s) SELECT %s FROM %s', $newTable->getQuotedName($this), implode(', ', $newColumnNames), implode(', ', $oldColumnNames), $dataTable->getQuotedName($this));
- $sql[] = $this->getDropTableSQL($dataTable);
-
- $newName = $diff->getNewName();
-
- if ($newName !== false) {
- $sql[] = sprintf(
- 'ALTER TABLE %s RENAME TO %s',
- $newTable->getQuotedName($this),
- $newName->getQuotedName($this)
- );
- }
-
- $sql = array_merge($sql, $this->getPostAlterTableIndexForeignKeySQL($diff));
- }
-
- return array_merge($sql, $tableSql, $columnSql);
- }
-
- /**
- * @return string[]|false
- */
- private function getSimpleAlterTableSQL(TableDiff $diff)
- {
- // Suppress changes on integer type autoincrement columns.
- foreach ($diff->changedColumns as $oldColumnName => $columnDiff) {
- if (! $columnDiff->fromColumn instanceof Column ||
- ! $columnDiff->column instanceof Column ||
- ! $columnDiff->column->getAutoincrement() ||
- ! $columnDiff->column->getType() instanceof Types\IntegerType
- ) {
- continue;
- }
-
- if (! $columnDiff->hasChanged('type') && $columnDiff->hasChanged('unsigned')) {
- unset($diff->changedColumns[$oldColumnName]);
-
- continue;
- }
-
- $fromColumnType = $columnDiff->fromColumn->getType();
-
- if (! ($fromColumnType instanceof Types\SmallIntType) && ! ($fromColumnType instanceof Types\BigIntType)) {
- continue;
- }
-
- unset($diff->changedColumns[$oldColumnName]);
- }
-
- if (! empty($diff->renamedColumns) || ! empty($diff->addedForeignKeys) || ! empty($diff->addedIndexes)
- || ! empty($diff->changedColumns) || ! empty($diff->changedForeignKeys) || ! empty($diff->changedIndexes)
- || ! empty($diff->removedColumns) || ! empty($diff->removedForeignKeys) || ! empty($diff->removedIndexes)
- || ! empty($diff->renamedIndexes)
- ) {
- return false;
- }
-
- $table = new Table($diff->name);
-
- $sql = [];
- $tableSql = [];
- $columnSql = [];
-
- foreach ($diff->addedColumns as $column) {
- if ($this->onSchemaAlterTableAddColumn($column, $diff, $columnSql)) {
- continue;
- }
-
- $field = array_merge(['unique' => null, 'autoincrement' => null, 'default' => null], $column->toArray());
- $type = $field['type'];
- switch (true) {
- case isset($field['columnDefinition']) || $field['autoincrement'] || $field['unique']:
- case $type instanceof Types\DateTimeType && $field['default'] === $this->getCurrentTimestampSQL():
- case $type instanceof Types\DateType && $field['default'] === $this->getCurrentDateSQL():
- case $type instanceof Types\TimeType && $field['default'] === $this->getCurrentTimeSQL():
- return false;
- }
-
- $field['name'] = $column->getQuotedName($this);
- if ($type instanceof Types\StringType && $field['length'] === null) {
- $field['length'] = 255;
- }
-
- $sql[] = 'ALTER TABLE ' . $table->getQuotedName($this) . ' ADD COLUMN ' . $this->getColumnDeclarationSQL($field['name'], $field);
- }
-
- if (! $this->onSchemaAlterTable($diff, $tableSql)) {
- if ($diff->newName !== false) {
- $newTable = new Identifier($diff->newName);
- $sql[] = 'ALTER TABLE ' . $table->getQuotedName($this) . ' RENAME TO ' . $newTable->getQuotedName($this);
- }
- }
-
- return array_merge($sql, $tableSql, $columnSql);
- }
-
- /**
- * @return string[]
- */
- private function getColumnNamesInAlteredTable(TableDiff $diff)
- {
- $columns = [];
-
- foreach ($diff->fromTable->getColumns() as $columnName => $column) {
- $columns[strtolower($columnName)] = $column->getName();
- }
-
- foreach ($diff->removedColumns as $columnName => $column) {
- $columnName = strtolower($columnName);
- if (! isset($columns[$columnName])) {
- continue;
- }
-
- unset($columns[$columnName]);
- }
-
- foreach ($diff->renamedColumns as $oldColumnName => $column) {
- $columnName = $column->getName();
- $columns[strtolower($oldColumnName)] = $columnName;
- $columns[strtolower($columnName)] = $columnName;
- }
-
- foreach ($diff->changedColumns as $oldColumnName => $columnDiff) {
- $columnName = $columnDiff->column->getName();
- $columns[strtolower($oldColumnName)] = $columnName;
- $columns[strtolower($columnName)] = $columnName;
- }
-
- foreach ($diff->addedColumns as $column) {
- $columnName = $column->getName();
- $columns[strtolower($columnName)] = $columnName;
- }
-
- return $columns;
- }
-
- /**
- * @return Index[]
- */
- private function getIndexesInAlteredTable(TableDiff $diff)
- {
- $indexes = $diff->fromTable->getIndexes();
- $columnNames = $this->getColumnNamesInAlteredTable($diff);
-
- foreach ($indexes as $key => $index) {
- foreach ($diff->renamedIndexes as $oldIndexName => $renamedIndex) {
- if (strtolower($key) !== strtolower($oldIndexName)) {
- continue;
- }
-
- unset($indexes[$key]);
- }
-
- $changed = false;
- $indexColumns = [];
- foreach ($index->getColumns() as $columnName) {
- $normalizedColumnName = strtolower($columnName);
- if (! isset($columnNames[$normalizedColumnName])) {
- unset($indexes[$key]);
- continue 2;
- }
-
- $indexColumns[] = $columnNames[$normalizedColumnName];
- if ($columnName === $columnNames[$normalizedColumnName]) {
- continue;
- }
-
- $changed = true;
- }
-
- if (! $changed) {
- continue;
- }
-
- $indexes[$key] = new Index($index->getName(), $indexColumns, $index->isUnique(), $index->isPrimary(), $index->getFlags());
- }
-
- foreach ($diff->removedIndexes as $index) {
- $indexName = strtolower($index->getName());
- if (! strlen($indexName) || ! isset($indexes[$indexName])) {
- continue;
- }
-
- unset($indexes[$indexName]);
- }
-
- foreach (array_merge($diff->changedIndexes, $diff->addedIndexes, $diff->renamedIndexes) as $index) {
- $indexName = strtolower($index->getName());
- if (strlen($indexName)) {
- $indexes[$indexName] = $index;
- } else {
- $indexes[] = $index;
- }
- }
-
- return $indexes;
- }
-
- /**
- * @return ForeignKeyConstraint[]
- */
- private function getForeignKeysInAlteredTable(TableDiff $diff)
- {
- $foreignKeys = $diff->fromTable->getForeignKeys();
- $columnNames = $this->getColumnNamesInAlteredTable($diff);
-
- foreach ($foreignKeys as $key => $constraint) {
- $changed = false;
- $localColumns = [];
- foreach ($constraint->getLocalColumns() as $columnName) {
- $normalizedColumnName = strtolower($columnName);
- if (! isset($columnNames[$normalizedColumnName])) {
- unset($foreignKeys[$key]);
- continue 2;
- }
-
- $localColumns[] = $columnNames[$normalizedColumnName];
- if ($columnName === $columnNames[$normalizedColumnName]) {
- continue;
- }
-
- $changed = true;
- }
-
- if (! $changed) {
- continue;
- }
-
- $foreignKeys[$key] = new ForeignKeyConstraint($localColumns, $constraint->getForeignTableName(), $constraint->getForeignColumns(), $constraint->getName(), $constraint->getOptions());
- }
-
- foreach ($diff->removedForeignKeys as $constraint) {
- if (! $constraint instanceof ForeignKeyConstraint) {
- $constraint = new Identifier($constraint);
- }
-
- $constraintName = strtolower($constraint->getName());
- if (! strlen($constraintName) || ! isset($foreignKeys[$constraintName])) {
- continue;
- }
-
- unset($foreignKeys[$constraintName]);
- }
-
- foreach (array_merge($diff->changedForeignKeys, $diff->addedForeignKeys) as $constraint) {
- $constraintName = strtolower($constraint->getName());
- if (strlen($constraintName)) {
- $foreignKeys[$constraintName] = $constraint;
- } else {
- $foreignKeys[] = $constraint;
- }
- }
-
- return $foreignKeys;
- }
-
- /**
- * @return Index[]
- */
- private function getPrimaryIndexInAlteredTable(TableDiff $diff)
- {
- $primaryIndex = [];
-
- foreach ($this->getIndexesInAlteredTable($diff) as $index) {
- if (! $index->isPrimary()) {
- continue;
- }
-
- $primaryIndex = [$index->getName() => $index];
- }
-
- return $primaryIndex;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/TrimMode.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/TrimMode.php
deleted file mode 100644
index 0a4b6ea8c..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/TrimMode.php
+++ /dev/null
@@ -1,20 +0,0 @@
-getParams();
- if (isset($params['portability'])) {
- if ($this->getDatabasePlatform()->getName() === 'oracle') {
- $params['portability'] &= self::PORTABILITY_ORACLE;
- } elseif ($this->getDatabasePlatform()->getName() === 'postgresql') {
- $params['portability'] &= self::PORTABILITY_POSTGRESQL;
- } elseif ($this->getDatabasePlatform()->getName() === 'sqlite') {
- $params['portability'] &= self::PORTABILITY_SQLITE;
- } elseif ($this->getDatabasePlatform()->getName() === 'drizzle') {
- $params['portability'] &= self::PORTABILITY_DRIZZLE;
- } elseif ($this->getDatabasePlatform()->getName() === 'sqlanywhere') {
- $params['portability'] &= self::PORTABILITY_SQLANYWHERE;
- } elseif ($this->getDatabasePlatform()->getName() === 'db2') {
- $params['portability'] &= self::PORTABILITY_DB2;
- } elseif ($this->getDatabasePlatform()->getName() === 'mssql') {
- $params['portability'] &= self::PORTABILITY_SQLSRV;
- } else {
- $params['portability'] &= self::PORTABILITY_OTHERVENDORS;
- }
- $this->portability = $params['portability'];
- }
-
- if (isset($params['fetch_case']) && $this->portability & self::PORTABILITY_FIX_CASE) {
- if ($this->_conn instanceof PDOConnection) {
- // make use of c-level support for case handling
- $this->_conn->setAttribute(PDO::ATTR_CASE, $params['fetch_case']);
- } else {
- $this->case = $params['fetch_case'] === ColumnCase::LOWER ? CASE_LOWER : CASE_UPPER;
- }
- }
- }
-
- return $ret;
- }
-
- /**
- * @return int
- */
- public function getPortability()
- {
- return $this->portability;
- }
-
- /**
- * @return int
- */
- public function getFetchCase()
- {
- return $this->case;
- }
-
- /**
- * {@inheritdoc}
- */
- public function executeQuery($query, array $params = [], $types = [], ?QueryCacheProfile $qcp = null)
- {
- $stmt = new Statement(parent::executeQuery($query, $params, $types, $qcp), $this);
- $stmt->setFetchMode($this->defaultFetchMode);
-
- return $stmt;
- }
-
- /**
- * {@inheritdoc}
- */
- public function prepare($statement)
- {
- $stmt = new Statement(parent::prepare($statement), $this);
- $stmt->setFetchMode($this->defaultFetchMode);
-
- return $stmt;
- }
-
- /**
- * {@inheritdoc}
- */
- public function query()
- {
- $connection = $this->getWrappedConnection();
-
- $stmt = $connection->query(...func_get_args());
- $stmt = new Statement($stmt, $this);
- $stmt->setFetchMode($this->defaultFetchMode);
-
- return $stmt;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Portability/Statement.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Portability/Statement.php
deleted file mode 100644
index 514b3be2d..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Portability/Statement.php
+++ /dev/null
@@ -1,247 +0,0 @@
-Statement and applies portability measures.
- *
- * @param DriverStatement|ResultStatement $stmt
- */
- public function __construct($stmt, Connection $conn)
- {
- $this->stmt = $stmt;
- $this->portability = $conn->getPortability();
- $this->case = $conn->getFetchCase();
- }
-
- /**
- * {@inheritdoc}
- */
- public function bindParam($column, &$variable, $type = ParameterType::STRING, $length = null)
- {
- assert($this->stmt instanceof DriverStatement);
-
- return $this->stmt->bindParam($column, $variable, $type, $length);
- }
-
- /**
- * {@inheritdoc}
- */
- public function bindValue($param, $value, $type = ParameterType::STRING)
- {
- assert($this->stmt instanceof DriverStatement);
-
- return $this->stmt->bindValue($param, $value, $type);
- }
-
- /**
- * {@inheritdoc}
- */
- public function closeCursor()
- {
- return $this->stmt->closeCursor();
- }
-
- /**
- * {@inheritdoc}
- */
- public function columnCount()
- {
- return $this->stmt->columnCount();
- }
-
- /**
- * {@inheritdoc}
- */
- public function errorCode()
- {
- assert($this->stmt instanceof DriverStatement);
-
- return $this->stmt->errorCode();
- }
-
- /**
- * {@inheritdoc}
- */
- public function errorInfo()
- {
- assert($this->stmt instanceof DriverStatement);
-
- return $this->stmt->errorInfo();
- }
-
- /**
- * {@inheritdoc}
- */
- public function execute($params = null)
- {
- assert($this->stmt instanceof DriverStatement);
-
- return $this->stmt->execute($params);
- }
-
- /**
- * {@inheritdoc}
- */
- public function setFetchMode($fetchMode, $arg1 = null, $arg2 = null)
- {
- $this->defaultFetchMode = $fetchMode;
-
- return $this->stmt->setFetchMode($fetchMode, $arg1, $arg2);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getIterator()
- {
- return new StatementIterator($this);
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetch($fetchMode = null, $cursorOrientation = PDO::FETCH_ORI_NEXT, $cursorOffset = 0)
- {
- $fetchMode = $fetchMode ?: $this->defaultFetchMode;
-
- $row = $this->stmt->fetch($fetchMode);
-
- $iterateRow = $this->portability & (Connection::PORTABILITY_EMPTY_TO_NULL|Connection::PORTABILITY_RTRIM);
- $fixCase = $this->case !== null
- && ($fetchMode === FetchMode::ASSOCIATIVE || $fetchMode === FetchMode::MIXED)
- && ($this->portability & Connection::PORTABILITY_FIX_CASE);
-
- $row = $this->fixRow($row, $iterateRow, $fixCase);
-
- return $row;
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetchAll($fetchMode = null, $fetchArgument = null, $ctorArgs = null)
- {
- $fetchMode = $fetchMode ?: $this->defaultFetchMode;
-
- if ($fetchArgument) {
- $rows = $this->stmt->fetchAll($fetchMode, $fetchArgument);
- } else {
- $rows = $this->stmt->fetchAll($fetchMode);
- }
-
- $iterateRow = $this->portability & (Connection::PORTABILITY_EMPTY_TO_NULL|Connection::PORTABILITY_RTRIM);
- $fixCase = $this->case !== null
- && ($fetchMode === FetchMode::ASSOCIATIVE || $fetchMode === FetchMode::MIXED)
- && ($this->portability & Connection::PORTABILITY_FIX_CASE);
-
- if (! $iterateRow && ! $fixCase) {
- return $rows;
- }
-
- if ($fetchMode === FetchMode::COLUMN) {
- foreach ($rows as $num => $row) {
- $rows[$num] = [$row];
- }
- }
-
- foreach ($rows as $num => $row) {
- $rows[$num] = $this->fixRow($row, $iterateRow, $fixCase);
- }
-
- if ($fetchMode === FetchMode::COLUMN) {
- foreach ($rows as $num => $row) {
- $rows[$num] = $row[0];
- }
- }
-
- return $rows;
- }
-
- /**
- * @param mixed $row
- * @param int $iterateRow
- * @param bool $fixCase
- *
- * @return mixed
- */
- protected function fixRow($row, $iterateRow, $fixCase)
- {
- if (! $row) {
- return $row;
- }
-
- if ($fixCase) {
- $row = array_change_key_case($row, $this->case);
- }
-
- if ($iterateRow) {
- foreach ($row as $k => $v) {
- if (($this->portability & Connection::PORTABILITY_EMPTY_TO_NULL) && $v === '') {
- $row[$k] = null;
- } elseif (($this->portability & Connection::PORTABILITY_RTRIM) && is_string($v)) {
- $row[$k] = rtrim($v);
- }
- }
- }
-
- return $row;
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetchColumn($columnIndex = 0)
- {
- $value = $this->stmt->fetchColumn($columnIndex);
-
- if ($this->portability & (Connection::PORTABILITY_EMPTY_TO_NULL|Connection::PORTABILITY_RTRIM)) {
- if (($this->portability & Connection::PORTABILITY_EMPTY_TO_NULL) && $value === '') {
- $value = null;
- } elseif (($this->portability & Connection::PORTABILITY_RTRIM) && is_string($value)) {
- $value = rtrim($value);
- }
- }
-
- return $value;
- }
-
- /**
- * {@inheritdoc}
- */
- public function rowCount()
- {
- assert($this->stmt instanceof DriverStatement);
-
- return $this->stmt->rowCount();
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Query/Expression/CompositeExpression.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Query/Expression/CompositeExpression.php
deleted file mode 100644
index 443d71bc3..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Query/Expression/CompositeExpression.php
+++ /dev/null
@@ -1,120 +0,0 @@
-type = $type;
-
- $this->addMultiple($parts);
- }
-
- /**
- * Adds multiple parts to composite expression.
- *
- * @param self[]|string[] $parts
- *
- * @return \Doctrine\DBAL\Query\Expression\CompositeExpression
- */
- public function addMultiple(array $parts = [])
- {
- foreach ($parts as $part) {
- $this->add($part);
- }
-
- return $this;
- }
-
- /**
- * Adds an expression to composite expression.
- *
- * @param mixed $part
- *
- * @return \Doctrine\DBAL\Query\Expression\CompositeExpression
- */
- public function add($part)
- {
- if (empty($part)) {
- return $this;
- }
-
- if ($part instanceof self && count($part) === 0) {
- return $this;
- }
-
- $this->parts[] = $part;
-
- return $this;
- }
-
- /**
- * Retrieves the amount of expressions on composite expression.
- *
- * @return int
- */
- public function count()
- {
- return count($this->parts);
- }
-
- /**
- * Retrieves the string representation of this composite expression.
- *
- * @return string
- */
- public function __toString()
- {
- if ($this->count() === 1) {
- return (string) $this->parts[0];
- }
-
- return '(' . implode(') ' . $this->type . ' (', $this->parts) . ')';
- }
-
- /**
- * Returns the type of this composite expression (AND/OR).
- *
- * @return string
- */
- public function getType()
- {
- return $this->type;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Query/Expression/ExpressionBuilder.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Query/Expression/ExpressionBuilder.php
deleted file mode 100644
index dfcc31ec7..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Query/Expression/ExpressionBuilder.php
+++ /dev/null
@@ -1,298 +0,0 @@
-';
- public const LT = '<';
- public const LTE = '<=';
- public const GT = '>';
- public const GTE = '>=';
-
- /**
- * The DBAL Connection.
- *
- * @var Connection
- */
- private $connection;
-
- /**
- * Initializes a new ExpressionBuilder.
- *
- * @param Connection $connection The DBAL Connection.
- */
- public function __construct(Connection $connection)
- {
- $this->connection = $connection;
- }
-
- /**
- * Creates a conjunction of the given boolean expressions.
- *
- * Example:
- *
- * [php]
- * // (u.type = ?) AND (u.role = ?)
- * $expr->andX('u.type = ?', 'u.role = ?'));
- *
- * @param mixed $x Optional clause. Defaults = null, but requires
- * at least one defined when converting to string.
- *
- * @return CompositeExpression
- */
- public function andX($x = null)
- {
- return new CompositeExpression(CompositeExpression::TYPE_AND, func_get_args());
- }
-
- /**
- * Creates a disjunction of the given boolean expressions.
- *
- * Example:
- *
- * [php]
- * // (u.type = ?) OR (u.role = ?)
- * $qb->where($qb->expr()->orX('u.type = ?', 'u.role = ?'));
- *
- * @param mixed $x Optional clause. Defaults = null, but requires
- * at least one defined when converting to string.
- *
- * @return CompositeExpression
- */
- public function orX($x = null)
- {
- return new CompositeExpression(CompositeExpression::TYPE_OR, func_get_args());
- }
-
- /**
- * Creates a comparison expression.
- *
- * @param mixed $x The left expression.
- * @param string $operator One of the ExpressionBuilder::* constants.
- * @param mixed $y The right expression.
- *
- * @return string
- */
- public function comparison($x, $operator, $y)
- {
- return $x . ' ' . $operator . ' ' . $y;
- }
-
- /**
- * Creates an equality comparison expression with the given arguments.
- *
- * First argument is considered the left expression and the second is the right expression.
- * When converted to string, it will generated a = . Example:
- *
- * [php]
- * // u.id = ?
- * $expr->eq('u.id', '?');
- *
- * @param mixed $x The left expression.
- * @param mixed $y The right expression.
- *
- * @return string
- */
- public function eq($x, $y)
- {
- return $this->comparison($x, self::EQ, $y);
- }
-
- /**
- * Creates a non equality comparison expression with the given arguments.
- * First argument is considered the left expression and the second is the right expression.
- * When converted to string, it will generated a <> . Example:
- *
- * [php]
- * // u.id <> 1
- * $q->where($q->expr()->neq('u.id', '1'));
- *
- * @param mixed $x The left expression.
- * @param mixed $y The right expression.
- *
- * @return string
- */
- public function neq($x, $y)
- {
- return $this->comparison($x, self::NEQ, $y);
- }
-
- /**
- * Creates a lower-than comparison expression with the given arguments.
- * First argument is considered the left expression and the second is the right expression.
- * When converted to string, it will generated a < . Example:
- *
- * [php]
- * // u.id < ?
- * $q->where($q->expr()->lt('u.id', '?'));
- *
- * @param mixed $x The left expression.
- * @param mixed $y The right expression.
- *
- * @return string
- */
- public function lt($x, $y)
- {
- return $this->comparison($x, self::LT, $y);
- }
-
- /**
- * Creates a lower-than-equal comparison expression with the given arguments.
- * First argument is considered the left expression and the second is the right expression.
- * When converted to string, it will generated a <= . Example:
- *
- * [php]
- * // u.id <= ?
- * $q->where($q->expr()->lte('u.id', '?'));
- *
- * @param mixed $x The left expression.
- * @param mixed $y The right expression.
- *
- * @return string
- */
- public function lte($x, $y)
- {
- return $this->comparison($x, self::LTE, $y);
- }
-
- /**
- * Creates a greater-than comparison expression with the given arguments.
- * First argument is considered the left expression and the second is the right expression.
- * When converted to string, it will generated a > . Example:
- *
- * [php]
- * // u.id > ?
- * $q->where($q->expr()->gt('u.id', '?'));
- *
- * @param mixed $x The left expression.
- * @param mixed $y The right expression.
- *
- * @return string
- */
- public function gt($x, $y)
- {
- return $this->comparison($x, self::GT, $y);
- }
-
- /**
- * Creates a greater-than-equal comparison expression with the given arguments.
- * First argument is considered the left expression and the second is the right expression.
- * When converted to string, it will generated a >= . Example:
- *
- * [php]
- * // u.id >= ?
- * $q->where($q->expr()->gte('u.id', '?'));
- *
- * @param mixed $x The left expression.
- * @param mixed $y The right expression.
- *
- * @return string
- */
- public function gte($x, $y)
- {
- return $this->comparison($x, self::GTE, $y);
- }
-
- /**
- * Creates an IS NULL expression with the given arguments.
- *
- * @param string $x The field in string format to be restricted by IS NULL.
- *
- * @return string
- */
- public function isNull($x)
- {
- return $x . ' IS NULL';
- }
-
- /**
- * Creates an IS NOT NULL expression with the given arguments.
- *
- * @param string $x The field in string format to be restricted by IS NOT NULL.
- *
- * @return string
- */
- public function isNotNull($x)
- {
- return $x . ' IS NOT NULL';
- }
-
- /**
- * Creates a LIKE() comparison expression with the given arguments.
- *
- * @param string $x Field in string format to be inspected by LIKE() comparison.
- * @param mixed $y Argument to be used in LIKE() comparison.
- *
- * @return string
- */
- public function like($x, $y/*, ?string $escapeChar = null */)
- {
- return $this->comparison($x, 'LIKE', $y) .
- (func_num_args() >= 3 ? sprintf(' ESCAPE %s', func_get_arg(2)) : '');
- }
-
- /**
- * Creates a NOT LIKE() comparison expression with the given arguments.
- *
- * @param string $x Field in string format to be inspected by NOT LIKE() comparison.
- * @param mixed $y Argument to be used in NOT LIKE() comparison.
- *
- * @return string
- */
- public function notLike($x, $y/*, ?string $escapeChar = null */)
- {
- return $this->comparison($x, 'NOT LIKE', $y) .
- (func_num_args() >= 3 ? sprintf(' ESCAPE %s', func_get_arg(2)) : '');
- }
-
- /**
- * Creates a IN () comparison expression with the given arguments.
- *
- * @param string $x The field in string format to be inspected by IN() comparison.
- * @param string|string[] $y The placeholder or the array of values to be used by IN() comparison.
- *
- * @return string
- */
- public function in($x, $y)
- {
- return $this->comparison($x, 'IN', '(' . implode(', ', (array) $y) . ')');
- }
-
- /**
- * Creates a NOT IN () comparison expression with the given arguments.
- *
- * @param string $x The field in string format to be inspected by NOT IN() comparison.
- * @param string|string[] $y The placeholder or the array of values to be used by NOT IN() comparison.
- *
- * @return string
- */
- public function notIn($x, $y)
- {
- return $this->comparison($x, 'NOT IN', '(' . implode(', ', (array) $y) . ')');
- }
-
- /**
- * Quotes a given input parameter.
- *
- * @param mixed $input The parameter to be quoted.
- * @param int|null $type The type of the parameter.
- *
- * @return string
- */
- public function literal($input, $type = null)
- {
- return $this->connection->quote($input, $type);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Query/QueryBuilder.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Query/QueryBuilder.php
deleted file mode 100644
index 587e26656..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Query/QueryBuilder.php
+++ /dev/null
@@ -1,1373 +0,0 @@
- [],
- 'distinct' => false,
- 'from' => [],
- 'join' => [],
- 'set' => [],
- 'where' => null,
- 'groupBy' => [],
- 'having' => null,
- 'orderBy' => [],
- 'values' => [],
- ];
-
- /**
- * The array of SQL parts collected.
- *
- * @var mixed[]
- */
- private $sqlParts = self::SQL_PARTS_DEFAULTS;
-
- /**
- * The complete SQL string for this query.
- *
- * @var string
- */
- private $sql;
-
- /**
- * The query parameters.
- *
- * @var mixed[]
- */
- private $params = [];
-
- /**
- * The parameter type map of this query.
- *
- * @var int[]|string[]
- */
- private $paramTypes = [];
-
- /**
- * The type of query this is. Can be select, update or delete.
- *
- * @var int
- */
- private $type = self::SELECT;
-
- /**
- * The state of the query object. Can be dirty or clean.
- *
- * @var int
- */
- private $state = self::STATE_CLEAN;
-
- /**
- * The index of the first result to retrieve.
- *
- * @var int
- */
- private $firstResult = null;
-
- /**
- * The maximum number of results to retrieve.
- *
- * @var int
- */
- private $maxResults = null;
-
- /**
- * The counter of bound parameters used with {@see bindValue).
- *
- * @var int
- */
- private $boundCounter = 0;
-
- /**
- * Initializes a new QueryBuilder.
- *
- * @param Connection $connection The DBAL Connection.
- */
- public function __construct(Connection $connection)
- {
- $this->connection = $connection;
- }
-
- /**
- * Gets an ExpressionBuilder used for object-oriented construction of query expressions.
- * This producer method is intended for convenient inline usage. Example:
- *
- *
- * $qb = $conn->createQueryBuilder()
- * ->select('u')
- * ->from('users', 'u')
- * ->where($qb->expr()->eq('u.id', 1));
- *
- *
- * For more complex expression construction, consider storing the expression
- * builder object in a local variable.
- *
- * @return ExpressionBuilder
- */
- public function expr()
- {
- return $this->connection->getExpressionBuilder();
- }
-
- /**
- * Gets the type of the currently built query.
- *
- * @return int
- */
- public function getType()
- {
- return $this->type;
- }
-
- /**
- * Gets the associated DBAL Connection for this query builder.
- *
- * @return Connection
- */
- public function getConnection()
- {
- return $this->connection;
- }
-
- /**
- * Gets the state of this query builder instance.
- *
- * @return int Either QueryBuilder::STATE_DIRTY or QueryBuilder::STATE_CLEAN.
- */
- public function getState()
- {
- return $this->state;
- }
-
- /**
- * Executes this query using the bound parameters and their types.
- *
- * Uses {@see Connection::executeQuery} for select statements and {@see Connection::executeUpdate}
- * for insert, update and delete statements.
- *
- * @return Statement|int
- */
- public function execute()
- {
- if ($this->type === self::SELECT) {
- return $this->connection->executeQuery($this->getSQL(), $this->params, $this->paramTypes);
- }
-
- return $this->connection->executeUpdate($this->getSQL(), $this->params, $this->paramTypes);
- }
-
- /**
- * Gets the complete SQL string formed by the current specifications of this QueryBuilder.
- *
- *
- * $qb = $em->createQueryBuilder()
- * ->select('u')
- * ->from('User', 'u')
- * echo $qb->getSQL(); // SELECT u FROM User u
- *
- *
- * @return string The SQL query string.
- */
- public function getSQL()
- {
- if ($this->sql !== null && $this->state === self::STATE_CLEAN) {
- return $this->sql;
- }
-
- switch ($this->type) {
- case self::INSERT:
- $sql = $this->getSQLForInsert();
- break;
- case self::DELETE:
- $sql = $this->getSQLForDelete();
- break;
-
- case self::UPDATE:
- $sql = $this->getSQLForUpdate();
- break;
-
- case self::SELECT:
- default:
- $sql = $this->getSQLForSelect();
- break;
- }
-
- $this->state = self::STATE_CLEAN;
- $this->sql = $sql;
-
- return $sql;
- }
-
- /**
- * Sets a query parameter for the query being constructed.
- *
- *
- * $qb = $conn->createQueryBuilder()
- * ->select('u')
- * ->from('users', 'u')
- * ->where('u.id = :user_id')
- * ->setParameter(':user_id', 1);
- *
- *
- * @param string|int $key The parameter position or name.
- * @param mixed $value The parameter value.
- * @param string|int|null $type One of the {@link \Doctrine\DBAL\ParameterType} constants.
- *
- * @return $this This QueryBuilder instance.
- */
- public function setParameter($key, $value, $type = null)
- {
- if ($type !== null) {
- $this->paramTypes[$key] = $type;
- }
-
- $this->params[$key] = $value;
-
- return $this;
- }
-
- /**
- * Sets a collection of query parameters for the query being constructed.
- *
- *
- * $qb = $conn->createQueryBuilder()
- * ->select('u')
- * ->from('users', 'u')
- * ->where('u.id = :user_id1 OR u.id = :user_id2')
- * ->setParameters(array(
- * ':user_id1' => 1,
- * ':user_id2' => 2
- * ));
- *
- *
- * @param mixed[] $params The query parameters to set.
- * @param int[]|string[] $types The query parameters types to set.
- *
- * @return $this This QueryBuilder instance.
- */
- public function setParameters(array $params, array $types = [])
- {
- $this->paramTypes = $types;
- $this->params = $params;
-
- return $this;
- }
-
- /**
- * Gets all defined query parameters for the query being constructed indexed by parameter index or name.
- *
- * @return mixed[] The currently defined query parameters indexed by parameter index or name.
- */
- public function getParameters()
- {
- return $this->params;
- }
-
- /**
- * Gets a (previously set) query parameter of the query being constructed.
- *
- * @param mixed $key The key (index or name) of the bound parameter.
- *
- * @return mixed The value of the bound parameter.
- */
- public function getParameter($key)
- {
- return $this->params[$key] ?? null;
- }
-
- /**
- * Gets all defined query parameter types for the query being constructed indexed by parameter index or name.
- *
- * @return int[]|string[] The currently defined query parameter types indexed by parameter index or name.
- */
- public function getParameterTypes()
- {
- return $this->paramTypes;
- }
-
- /**
- * Gets a (previously set) query parameter type of the query being constructed.
- *
- * @param mixed $key The key (index or name) of the bound parameter type.
- *
- * @return mixed The value of the bound parameter type.
- */
- public function getParameterType($key)
- {
- return $this->paramTypes[$key] ?? null;
- }
-
- /**
- * Sets the position of the first result to retrieve (the "offset").
- *
- * @param int $firstResult The first result to return.
- *
- * @return $this This QueryBuilder instance.
- */
- public function setFirstResult($firstResult)
- {
- $this->state = self::STATE_DIRTY;
- $this->firstResult = $firstResult;
-
- return $this;
- }
-
- /**
- * Gets the position of the first result the query object was set to retrieve (the "offset").
- * Returns NULL if {@link setFirstResult} was not applied to this QueryBuilder.
- *
- * @return int The position of the first result.
- */
- public function getFirstResult()
- {
- return $this->firstResult;
- }
-
- /**
- * Sets the maximum number of results to retrieve (the "limit").
- *
- * @param int $maxResults The maximum number of results to retrieve.
- *
- * @return $this This QueryBuilder instance.
- */
- public function setMaxResults($maxResults)
- {
- $this->state = self::STATE_DIRTY;
- $this->maxResults = $maxResults;
-
- return $this;
- }
-
- /**
- * Gets the maximum number of results the query object was set to retrieve (the "limit").
- * Returns NULL if {@link setMaxResults} was not applied to this query builder.
- *
- * @return int The maximum number of results.
- */
- public function getMaxResults()
- {
- return $this->maxResults;
- }
-
- /**
- * Either appends to or replaces a single, generic query part.
- *
- * The available parts are: 'select', 'from', 'set', 'where',
- * 'groupBy', 'having' and 'orderBy'.
- *
- * @param string $sqlPartName
- * @param mixed $sqlPart
- * @param bool $append
- *
- * @return $this This QueryBuilder instance.
- */
- public function add($sqlPartName, $sqlPart, $append = false)
- {
- $isArray = is_array($sqlPart);
- $isMultiple = is_array($this->sqlParts[$sqlPartName]);
-
- if ($isMultiple && ! $isArray) {
- $sqlPart = [$sqlPart];
- }
-
- $this->state = self::STATE_DIRTY;
-
- if ($append) {
- if ($sqlPartName === 'orderBy' || $sqlPartName === 'groupBy' || $sqlPartName === 'select' || $sqlPartName === 'set') {
- foreach ($sqlPart as $part) {
- $this->sqlParts[$sqlPartName][] = $part;
- }
- } elseif ($isArray && is_array($sqlPart[key($sqlPart)])) {
- $key = key($sqlPart);
- $this->sqlParts[$sqlPartName][$key][] = $sqlPart[$key];
- } elseif ($isMultiple) {
- $this->sqlParts[$sqlPartName][] = $sqlPart;
- } else {
- $this->sqlParts[$sqlPartName] = $sqlPart;
- }
-
- return $this;
- }
-
- $this->sqlParts[$sqlPartName] = $sqlPart;
-
- return $this;
- }
-
- /**
- * Specifies an item that is to be returned in the query result.
- * Replaces any previously specified selections, if any.
- *
- *
- * $qb = $conn->createQueryBuilder()
- * ->select('u.id', 'p.id')
- * ->from('users', 'u')
- * ->leftJoin('u', 'phonenumbers', 'p', 'u.id = p.user_id');
- *
- *
- * @param mixed $select The selection expressions.
- *
- * @return $this This QueryBuilder instance.
- */
- public function select($select = null)
- {
- $this->type = self::SELECT;
-
- if (empty($select)) {
- return $this;
- }
-
- $selects = is_array($select) ? $select : func_get_args();
-
- return $this->add('select', $selects);
- }
-
- /**
- * Adds DISTINCT to the query.
- *
- *
- * $qb = $conn->createQueryBuilder()
- * ->select('u.id')
- * ->distinct()
- * ->from('users', 'u')
- *
- *
- * @return $this This QueryBuilder instance.
- */
- public function distinct() : self
- {
- $this->sqlParts['distinct'] = true;
-
- return $this;
- }
-
- /**
- * Adds an item that is to be returned in the query result.
- *
- *
- * $qb = $conn->createQueryBuilder()
- * ->select('u.id')
- * ->addSelect('p.id')
- * ->from('users', 'u')
- * ->leftJoin('u', 'phonenumbers', 'u.id = p.user_id');
- *
- *
- * @param mixed $select The selection expression.
- *
- * @return $this This QueryBuilder instance.
- */
- public function addSelect($select = null)
- {
- $this->type = self::SELECT;
-
- if (empty($select)) {
- return $this;
- }
-
- $selects = is_array($select) ? $select : func_get_args();
-
- return $this->add('select', $selects, true);
- }
-
- /**
- * Turns the query being built into a bulk delete query that ranges over
- * a certain table.
- *
- *
- * $qb = $conn->createQueryBuilder()
- * ->delete('users', 'u')
- * ->where('u.id = :user_id')
- * ->setParameter(':user_id', 1);
- *
- *
- * @param string $delete The table whose rows are subject to the deletion.
- * @param string $alias The table alias used in the constructed query.
- *
- * @return $this This QueryBuilder instance.
- */
- public function delete($delete = null, $alias = null)
- {
- $this->type = self::DELETE;
-
- if (! $delete) {
- return $this;
- }
-
- return $this->add('from', [
- 'table' => $delete,
- 'alias' => $alias,
- ]);
- }
-
- /**
- * Turns the query being built into a bulk update query that ranges over
- * a certain table
- *
- *
- * $qb = $conn->createQueryBuilder()
- * ->update('counters', 'c')
- * ->set('c.value', 'c.value + 1')
- * ->where('c.id = ?');
- *
- *
- * @param string $update The table whose rows are subject to the update.
- * @param string $alias The table alias used in the constructed query.
- *
- * @return $this This QueryBuilder instance.
- */
- public function update($update = null, $alias = null)
- {
- $this->type = self::UPDATE;
-
- if (! $update) {
- return $this;
- }
-
- return $this->add('from', [
- 'table' => $update,
- 'alias' => $alias,
- ]);
- }
-
- /**
- * Turns the query being built into an insert query that inserts into
- * a certain table
- *
- *
- * $qb = $conn->createQueryBuilder()
- * ->insert('users')
- * ->values(
- * array(
- * 'name' => '?',
- * 'password' => '?'
- * )
- * );
- *
- *
- * @param string $insert The table into which the rows should be inserted.
- *
- * @return $this This QueryBuilder instance.
- */
- public function insert($insert = null)
- {
- $this->type = self::INSERT;
-
- if (! $insert) {
- return $this;
- }
-
- return $this->add('from', ['table' => $insert]);
- }
-
- /**
- * Creates and adds a query root corresponding to the table identified by the
- * given alias, forming a cartesian product with any existing query roots.
- *
- *
- * $qb = $conn->createQueryBuilder()
- * ->select('u.id')
- * ->from('users', 'u')
- *
- *
- * @param string $from The table.
- * @param string|null $alias The alias of the table.
- *
- * @return $this This QueryBuilder instance.
- */
- public function from($from, $alias = null)
- {
- return $this->add('from', [
- 'table' => $from,
- 'alias' => $alias,
- ], true);
- }
-
- /**
- * Creates and adds a join to the query.
- *
- *
- * $qb = $conn->createQueryBuilder()
- * ->select('u.name')
- * ->from('users', 'u')
- * ->join('u', 'phonenumbers', 'p', 'p.is_primary = 1');
- *
- *
- * @param string $fromAlias The alias that points to a from clause.
- * @param string $join The table name to join.
- * @param string $alias The alias of the join table.
- * @param string $condition The condition for the join.
- *
- * @return $this This QueryBuilder instance.
- */
- public function join($fromAlias, $join, $alias, $condition = null)
- {
- return $this->innerJoin($fromAlias, $join, $alias, $condition);
- }
-
- /**
- * Creates and adds a join to the query.
- *
- *
- * $qb = $conn->createQueryBuilder()
- * ->select('u.name')
- * ->from('users', 'u')
- * ->innerJoin('u', 'phonenumbers', 'p', 'p.is_primary = 1');
- *
- *
- * @param string $fromAlias The alias that points to a from clause.
- * @param string $join The table name to join.
- * @param string $alias The alias of the join table.
- * @param string $condition The condition for the join.
- *
- * @return $this This QueryBuilder instance.
- */
- public function innerJoin($fromAlias, $join, $alias, $condition = null)
- {
- return $this->add('join', [
- $fromAlias => [
- 'joinType' => 'inner',
- 'joinTable' => $join,
- 'joinAlias' => $alias,
- 'joinCondition' => $condition,
- ],
- ], true);
- }
-
- /**
- * Creates and adds a left join to the query.
- *
- *
- * $qb = $conn->createQueryBuilder()
- * ->select('u.name')
- * ->from('users', 'u')
- * ->leftJoin('u', 'phonenumbers', 'p', 'p.is_primary = 1');
- *
- *
- * @param string $fromAlias The alias that points to a from clause.
- * @param string $join The table name to join.
- * @param string $alias The alias of the join table.
- * @param string $condition The condition for the join.
- *
- * @return $this This QueryBuilder instance.
- */
- public function leftJoin($fromAlias, $join, $alias, $condition = null)
- {
- return $this->add('join', [
- $fromAlias => [
- 'joinType' => 'left',
- 'joinTable' => $join,
- 'joinAlias' => $alias,
- 'joinCondition' => $condition,
- ],
- ], true);
- }
-
- /**
- * Creates and adds a right join to the query.
- *
- *
- * $qb = $conn->createQueryBuilder()
- * ->select('u.name')
- * ->from('users', 'u')
- * ->rightJoin('u', 'phonenumbers', 'p', 'p.is_primary = 1');
- *
- *
- * @param string $fromAlias The alias that points to a from clause.
- * @param string $join The table name to join.
- * @param string $alias The alias of the join table.
- * @param string $condition The condition for the join.
- *
- * @return $this This QueryBuilder instance.
- */
- public function rightJoin($fromAlias, $join, $alias, $condition = null)
- {
- return $this->add('join', [
- $fromAlias => [
- 'joinType' => 'right',
- 'joinTable' => $join,
- 'joinAlias' => $alias,
- 'joinCondition' => $condition,
- ],
- ], true);
- }
-
- /**
- * Sets a new value for a column in a bulk update query.
- *
- *
- * $qb = $conn->createQueryBuilder()
- * ->update('counters', 'c')
- * ->set('c.value', 'c.value + 1')
- * ->where('c.id = ?');
- *
- *
- * @param string $key The column to set.
- * @param string $value The value, expression, placeholder, etc.
- *
- * @return $this This QueryBuilder instance.
- */
- public function set($key, $value)
- {
- return $this->add('set', $key . ' = ' . $value, true);
- }
-
- /**
- * Specifies one or more restrictions to the query result.
- * Replaces any previously specified restrictions, if any.
- *
- *
- * $qb = $conn->createQueryBuilder()
- * ->select('c.value')
- * ->from('counters', 'c')
- * ->where('c.id = ?');
- *
- * // You can optionally programatically build and/or expressions
- * $qb = $conn->createQueryBuilder();
- *
- * $or = $qb->expr()->orx();
- * $or->add($qb->expr()->eq('c.id', 1));
- * $or->add($qb->expr()->eq('c.id', 2));
- *
- * $qb->update('counters', 'c')
- * ->set('c.value', 'c.value + 1')
- * ->where($or);
- *
- *
- * @param mixed $predicates The restriction predicates.
- *
- * @return $this This QueryBuilder instance.
- */
- public function where($predicates)
- {
- if (! (func_num_args() === 1 && $predicates instanceof CompositeExpression)) {
- $predicates = new CompositeExpression(CompositeExpression::TYPE_AND, func_get_args());
- }
-
- return $this->add('where', $predicates);
- }
-
- /**
- * Adds one or more restrictions to the query results, forming a logical
- * conjunction with any previously specified restrictions.
- *
- *
- * $qb = $conn->createQueryBuilder()
- * ->select('u')
- * ->from('users', 'u')
- * ->where('u.username LIKE ?')
- * ->andWhere('u.is_active = 1');
- *
- *
- * @see where()
- *
- * @param mixed $where The query restrictions.
- *
- * @return $this This QueryBuilder instance.
- */
- public function andWhere($where)
- {
- $args = func_get_args();
- $where = $this->getQueryPart('where');
-
- if ($where instanceof CompositeExpression && $where->getType() === CompositeExpression::TYPE_AND) {
- $where->addMultiple($args);
- } else {
- array_unshift($args, $where);
- $where = new CompositeExpression(CompositeExpression::TYPE_AND, $args);
- }
-
- return $this->add('where', $where, true);
- }
-
- /**
- * Adds one or more restrictions to the query results, forming a logical
- * disjunction with any previously specified restrictions.
- *
- *
- * $qb = $em->createQueryBuilder()
- * ->select('u.name')
- * ->from('users', 'u')
- * ->where('u.id = 1')
- * ->orWhere('u.id = 2');
- *
- *
- * @see where()
- *
- * @param mixed $where The WHERE statement.
- *
- * @return $this This QueryBuilder instance.
- */
- public function orWhere($where)
- {
- $args = func_get_args();
- $where = $this->getQueryPart('where');
-
- if ($where instanceof CompositeExpression && $where->getType() === CompositeExpression::TYPE_OR) {
- $where->addMultiple($args);
- } else {
- array_unshift($args, $where);
- $where = new CompositeExpression(CompositeExpression::TYPE_OR, $args);
- }
-
- return $this->add('where', $where, true);
- }
-
- /**
- * Specifies a grouping over the results of the query.
- * Replaces any previously specified groupings, if any.
- *
- *
- * $qb = $conn->createQueryBuilder()
- * ->select('u.name')
- * ->from('users', 'u')
- * ->groupBy('u.id');
- *
- *
- * @param mixed $groupBy The grouping expression.
- *
- * @return $this This QueryBuilder instance.
- */
- public function groupBy($groupBy)
- {
- if (empty($groupBy)) {
- return $this;
- }
-
- $groupBy = is_array($groupBy) ? $groupBy : func_get_args();
-
- return $this->add('groupBy', $groupBy, false);
- }
-
- /**
- * Adds a grouping expression to the query.
- *
- *
- * $qb = $conn->createQueryBuilder()
- * ->select('u.name')
- * ->from('users', 'u')
- * ->groupBy('u.lastLogin')
- * ->addGroupBy('u.createdAt');
- *
- *
- * @param mixed $groupBy The grouping expression.
- *
- * @return $this This QueryBuilder instance.
- */
- public function addGroupBy($groupBy)
- {
- if (empty($groupBy)) {
- return $this;
- }
-
- $groupBy = is_array($groupBy) ? $groupBy : func_get_args();
-
- return $this->add('groupBy', $groupBy, true);
- }
-
- /**
- * Sets a value for a column in an insert query.
- *
- *
- * $qb = $conn->createQueryBuilder()
- * ->insert('users')
- * ->values(
- * array(
- * 'name' => '?'
- * )
- * )
- * ->setValue('password', '?');
- *
- *
- * @param string $column The column into which the value should be inserted.
- * @param string $value The value that should be inserted into the column.
- *
- * @return $this This QueryBuilder instance.
- */
- public function setValue($column, $value)
- {
- $this->sqlParts['values'][$column] = $value;
-
- return $this;
- }
-
- /**
- * Specifies values for an insert query indexed by column names.
- * Replaces any previous values, if any.
- *
- *
- * $qb = $conn->createQueryBuilder()
- * ->insert('users')
- * ->values(
- * array(
- * 'name' => '?',
- * 'password' => '?'
- * )
- * );
- *
- *
- * @param mixed[] $values The values to specify for the insert query indexed by column names.
- *
- * @return $this This QueryBuilder instance.
- */
- public function values(array $values)
- {
- return $this->add('values', $values);
- }
-
- /**
- * Specifies a restriction over the groups of the query.
- * Replaces any previous having restrictions, if any.
- *
- * @param mixed $having The restriction over the groups.
- *
- * @return $this This QueryBuilder instance.
- */
- public function having($having)
- {
- if (! (func_num_args() === 1 && $having instanceof CompositeExpression)) {
- $having = new CompositeExpression(CompositeExpression::TYPE_AND, func_get_args());
- }
-
- return $this->add('having', $having);
- }
-
- /**
- * Adds a restriction over the groups of the query, forming a logical
- * conjunction with any existing having restrictions.
- *
- * @param mixed $having The restriction to append.
- *
- * @return $this This QueryBuilder instance.
- */
- public function andHaving($having)
- {
- $args = func_get_args();
- $having = $this->getQueryPart('having');
-
- if ($having instanceof CompositeExpression && $having->getType() === CompositeExpression::TYPE_AND) {
- $having->addMultiple($args);
- } else {
- array_unshift($args, $having);
- $having = new CompositeExpression(CompositeExpression::TYPE_AND, $args);
- }
-
- return $this->add('having', $having);
- }
-
- /**
- * Adds a restriction over the groups of the query, forming a logical
- * disjunction with any existing having restrictions.
- *
- * @param mixed $having The restriction to add.
- *
- * @return $this This QueryBuilder instance.
- */
- public function orHaving($having)
- {
- $args = func_get_args();
- $having = $this->getQueryPart('having');
-
- if ($having instanceof CompositeExpression && $having->getType() === CompositeExpression::TYPE_OR) {
- $having->addMultiple($args);
- } else {
- array_unshift($args, $having);
- $having = new CompositeExpression(CompositeExpression::TYPE_OR, $args);
- }
-
- return $this->add('having', $having);
- }
-
- /**
- * Specifies an ordering for the query results.
- * Replaces any previously specified orderings, if any.
- *
- * @param string $sort The ordering expression.
- * @param string $order The ordering direction.
- *
- * @return $this This QueryBuilder instance.
- */
- public function orderBy($sort, $order = null)
- {
- return $this->add('orderBy', $sort . ' ' . (! $order ? 'ASC' : $order), false);
- }
-
- /**
- * Adds an ordering to the query results.
- *
- * @param string $sort The ordering expression.
- * @param string $order The ordering direction.
- *
- * @return $this This QueryBuilder instance.
- */
- public function addOrderBy($sort, $order = null)
- {
- return $this->add('orderBy', $sort . ' ' . (! $order ? 'ASC' : $order), true);
- }
-
- /**
- * Gets a query part by its name.
- *
- * @param string $queryPartName
- *
- * @return mixed
- */
- public function getQueryPart($queryPartName)
- {
- return $this->sqlParts[$queryPartName];
- }
-
- /**
- * Gets all query parts.
- *
- * @return mixed[]
- */
- public function getQueryParts()
- {
- return $this->sqlParts;
- }
-
- /**
- * Resets SQL parts.
- *
- * @param string[]|null $queryPartNames
- *
- * @return $this This QueryBuilder instance.
- */
- public function resetQueryParts($queryPartNames = null)
- {
- if ($queryPartNames === null) {
- $queryPartNames = array_keys($this->sqlParts);
- }
-
- foreach ($queryPartNames as $queryPartName) {
- $this->resetQueryPart($queryPartName);
- }
-
- return $this;
- }
-
- /**
- * Resets a single SQL part.
- *
- * @param string $queryPartName
- *
- * @return $this This QueryBuilder instance.
- */
- public function resetQueryPart($queryPartName)
- {
- $this->sqlParts[$queryPartName] = self::SQL_PARTS_DEFAULTS[$queryPartName];
-
- $this->state = self::STATE_DIRTY;
-
- return $this;
- }
-
- /**
- * @return string
- *
- * @throws QueryException
- */
- private function getSQLForSelect()
- {
- $query = 'SELECT ' . ($this->sqlParts['distinct'] ? 'DISTINCT ' : '') .
- implode(', ', $this->sqlParts['select']);
-
- $query .= ($this->sqlParts['from'] ? ' FROM ' . implode(', ', $this->getFromClauses()) : '')
- . ($this->sqlParts['where'] !== null ? ' WHERE ' . ((string) $this->sqlParts['where']) : '')
- . ($this->sqlParts['groupBy'] ? ' GROUP BY ' . implode(', ', $this->sqlParts['groupBy']) : '')
- . ($this->sqlParts['having'] !== null ? ' HAVING ' . ((string) $this->sqlParts['having']) : '')
- . ($this->sqlParts['orderBy'] ? ' ORDER BY ' . implode(', ', $this->sqlParts['orderBy']) : '');
-
- if ($this->isLimitQuery()) {
- return $this->connection->getDatabasePlatform()->modifyLimitQuery(
- $query,
- $this->maxResults,
- $this->firstResult
- );
- }
-
- return $query;
- }
-
- /**
- * @return string[]
- */
- private function getFromClauses()
- {
- $fromClauses = [];
- $knownAliases = [];
-
- // Loop through all FROM clauses
- foreach ($this->sqlParts['from'] as $from) {
- if ($from['alias'] === null) {
- $tableSql = $from['table'];
- $tableReference = $from['table'];
- } else {
- $tableSql = $from['table'] . ' ' . $from['alias'];
- $tableReference = $from['alias'];
- }
-
- $knownAliases[$tableReference] = true;
-
- $fromClauses[$tableReference] = $tableSql . $this->getSQLForJoins($tableReference, $knownAliases);
- }
-
- $this->verifyAllAliasesAreKnown($knownAliases);
-
- return $fromClauses;
- }
-
- /**
- * @param string[] $knownAliases
- *
- * @throws QueryException
- */
- private function verifyAllAliasesAreKnown(array $knownAliases)
- {
- foreach ($this->sqlParts['join'] as $fromAlias => $joins) {
- if (! isset($knownAliases[$fromAlias])) {
- throw QueryException::unknownAlias($fromAlias, array_keys($knownAliases));
- }
- }
- }
-
- /**
- * @return bool
- */
- private function isLimitQuery()
- {
- return $this->maxResults !== null || $this->firstResult !== null;
- }
-
- /**
- * Converts this instance into an INSERT string in SQL.
- *
- * @return string
- */
- private function getSQLForInsert()
- {
- return 'INSERT INTO ' . $this->sqlParts['from']['table'] .
- ' (' . implode(', ', array_keys($this->sqlParts['values'])) . ')' .
- ' VALUES(' . implode(', ', $this->sqlParts['values']) . ')';
- }
-
- /**
- * Converts this instance into an UPDATE string in SQL.
- *
- * @return string
- */
- private function getSQLForUpdate()
- {
- $table = $this->sqlParts['from']['table'] . ($this->sqlParts['from']['alias'] ? ' ' . $this->sqlParts['from']['alias'] : '');
-
- return 'UPDATE ' . $table
- . ' SET ' . implode(', ', $this->sqlParts['set'])
- . ($this->sqlParts['where'] !== null ? ' WHERE ' . ((string) $this->sqlParts['where']) : '');
- }
-
- /**
- * Converts this instance into a DELETE string in SQL.
- *
- * @return string
- */
- private function getSQLForDelete()
- {
- $table = $this->sqlParts['from']['table'] . ($this->sqlParts['from']['alias'] ? ' ' . $this->sqlParts['from']['alias'] : '');
-
- return 'DELETE FROM ' . $table . ($this->sqlParts['where'] !== null ? ' WHERE ' . ((string) $this->sqlParts['where']) : '');
- }
-
- /**
- * Gets a string representation of this QueryBuilder which corresponds to
- * the final SQL query being constructed.
- *
- * @return string The string representation of this QueryBuilder.
- */
- public function __toString()
- {
- return $this->getSQL();
- }
-
- /**
- * Creates a new named parameter and bind the value $value to it.
- *
- * This method provides a shortcut for PDOStatement::bindValue
- * when using prepared statements.
- *
- * The parameter $value specifies the value that you want to bind. If
- * $placeholder is not provided bindValue() will automatically create a
- * placeholder for you. An automatic placeholder will be of the name
- * ':dcValue1', ':dcValue2' etc.
- *
- * For more information see {@link http://php.net/pdostatement-bindparam}
- *
- * Example:
- *
- * $value = 2;
- * $q->eq( 'id', $q->bindValue( $value ) );
- * $stmt = $q->executeQuery(); // executed with 'id = 2'
- *
- *
- * @link http://www.zetacomponents.org
- *
- * @param mixed $value
- * @param mixed $type
- * @param string $placeHolder The name to bind with. The string must start with a colon ':'.
- *
- * @return string the placeholder name used.
- */
- public function createNamedParameter($value, $type = ParameterType::STRING, $placeHolder = null)
- {
- if ($placeHolder === null) {
- $this->boundCounter++;
- $placeHolder = ':dcValue' . $this->boundCounter;
- }
- $this->setParameter(substr($placeHolder, 1), $value, $type);
-
- return $placeHolder;
- }
-
- /**
- * Creates a new positional parameter and bind the given value to it.
- *
- * Attention: If you are using positional parameters with the query builder you have
- * to be very careful to bind all parameters in the order they appear in the SQL
- * statement , otherwise they get bound in the wrong order which can lead to serious
- * bugs in your code.
- *
- * Example:
- *
- * $qb = $conn->createQueryBuilder();
- * $qb->select('u.*')
- * ->from('users', 'u')
- * ->where('u.username = ' . $qb->createPositionalParameter('Foo', ParameterType::STRING))
- * ->orWhere('u.username = ' . $qb->createPositionalParameter('Bar', ParameterType::STRING))
- *
- *
- * @param mixed $value
- * @param int $type
- *
- * @return string
- */
- public function createPositionalParameter($value, $type = ParameterType::STRING)
- {
- $this->boundCounter++;
- $this->setParameter($this->boundCounter, $value, $type);
-
- return '?';
- }
-
- /**
- * @param string $fromAlias
- * @param string[] $knownAliases
- *
- * @return string
- *
- * @throws QueryException
- */
- private function getSQLForJoins($fromAlias, array &$knownAliases)
- {
- $sql = '';
-
- if (isset($this->sqlParts['join'][$fromAlias])) {
- foreach ($this->sqlParts['join'][$fromAlias] as $join) {
- if (array_key_exists($join['joinAlias'], $knownAliases)) {
- throw QueryException::nonUniqueAlias($join['joinAlias'], array_keys($knownAliases));
- }
- $sql .= ' ' . strtoupper($join['joinType'])
- . ' JOIN ' . $join['joinTable'] . ' ' . $join['joinAlias']
- . ' ON ' . ((string) $join['joinCondition']);
- $knownAliases[$join['joinAlias']] = true;
- }
-
- foreach ($this->sqlParts['join'][$fromAlias] as $join) {
- $sql .= $this->getSQLForJoins($join['joinAlias'], $knownAliases);
- }
- }
-
- return $sql;
- }
-
- /**
- * Deep clone of all expression objects in the SQL parts.
- *
- * @return void
- */
- public function __clone()
- {
- foreach ($this->sqlParts as $part => $elements) {
- if (is_array($this->sqlParts[$part])) {
- foreach ($this->sqlParts[$part] as $idx => $element) {
- if (! is_object($element)) {
- continue;
- }
-
- $this->sqlParts[$part][$idx] = clone $element;
- }
- } elseif (is_object($elements)) {
- $this->sqlParts[$part] = clone $elements;
- }
- }
-
- foreach ($this->params as $name => $param) {
- if (! is_object($param)) {
- continue;
- }
-
- $this->params[$name] = clone $param;
- }
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Query/QueryException.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Query/QueryException.php
deleted file mode 100644
index 3fcb3b480..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Query/QueryException.php
+++ /dev/null
@@ -1,35 +0,0 @@
- $type) {
- ++$bindIndex;
-
- if ($type !== Connection::PARAM_INT_ARRAY && $type !== Connection::PARAM_STR_ARRAY) {
- continue;
- }
-
- if ($isPositional) {
- $name = $bindIndex;
- }
-
- $arrayPositions[$name] = false;
- }
-
- if (( ! $arrayPositions && $isPositional)) {
- return [$query, $params, $types];
- }
-
- if ($isPositional) {
- $paramOffset = 0;
- $queryOffset = 0;
- $params = array_values($params);
- $types = array_values($types);
-
- $paramPos = self::getPositionalPlaceholderPositions($query);
-
- foreach ($paramPos as $needle => $needlePos) {
- if (! isset($arrayPositions[$needle])) {
- continue;
- }
-
- $needle += $paramOffset;
- $needlePos += $queryOffset;
- $count = count($params[$needle]);
-
- $params = array_merge(
- array_slice($params, 0, $needle),
- $params[$needle],
- array_slice($params, $needle + 1)
- );
-
- $types = array_merge(
- array_slice($types, 0, $needle),
- $count ?
- // array needles are at {@link \Doctrine\DBAL\ParameterType} constants
- // + {@link Doctrine\DBAL\Connection::ARRAY_PARAM_OFFSET}
- array_fill(0, $count, $types[$needle] - Connection::ARRAY_PARAM_OFFSET) :
- [],
- array_slice($types, $needle + 1)
- );
-
- $expandStr = $count ? implode(', ', array_fill(0, $count, '?')) : 'NULL';
- $query = substr($query, 0, $needlePos) . $expandStr . substr($query, $needlePos + 1);
-
- $paramOffset += ($count - 1); // Grows larger by number of parameters minus the replaced needle.
- $queryOffset += (strlen($expandStr) - 1);
- }
-
- return [$query, $params, $types];
- }
-
- $queryOffset = 0;
- $typesOrd = [];
- $paramsOrd = [];
-
- $paramPos = self::getNamedPlaceholderPositions($query);
-
- foreach ($paramPos as $pos => $paramName) {
- $paramLen = strlen($paramName) + 1;
- $value = static::extractParam($paramName, $params, true);
-
- if (! isset($arrayPositions[$paramName]) && ! isset($arrayPositions[':' . $paramName])) {
- $pos += $queryOffset;
- $queryOffset -= ($paramLen - 1);
- $paramsOrd[] = $value;
- $typesOrd[] = static::extractParam($paramName, $types, false, ParameterType::STRING);
- $query = substr($query, 0, $pos) . '?' . substr($query, ($pos + $paramLen));
-
- continue;
- }
-
- $count = count($value);
- $expandStr = $count > 0 ? implode(', ', array_fill(0, $count, '?')) : 'NULL';
-
- foreach ($value as $val) {
- $paramsOrd[] = $val;
- $typesOrd[] = static::extractParam($paramName, $types, false) - Connection::ARRAY_PARAM_OFFSET;
- }
-
- $pos += $queryOffset;
- $queryOffset += (strlen($expandStr) - $paramLen);
- $query = substr($query, 0, $pos) . $expandStr . substr($query, ($pos + $paramLen));
- }
-
- return [$query, $paramsOrd, $typesOrd];
- }
-
- /**
- * Slice the SQL statement around pairs of quotes and
- * return string fragments of SQL outside of quoted literals.
- * Each fragment is captured as a 2-element array:
- *
- * 0 => matched fragment string,
- * 1 => offset of fragment in $statement
- *
- * @param string $statement
- *
- * @return mixed[][]
- */
- private static function getUnquotedStatementFragments($statement)
- {
- $literal = self::ESCAPED_SINGLE_QUOTED_TEXT . '|' .
- self::ESCAPED_DOUBLE_QUOTED_TEXT . '|' .
- self::ESCAPED_BACKTICK_QUOTED_TEXT . '|' .
- self::ESCAPED_BRACKET_QUOTED_TEXT;
- $expression = sprintf('/((.+(?i:ARRAY)\\[.+\\])|([^\'"`\\[]+))(?:%s)?/s', $literal);
-
- preg_match_all($expression, $statement, $fragments, PREG_OFFSET_CAPTURE);
-
- return $fragments[1];
- }
-
- /**
- * @param string $paramName The name of the parameter (without a colon in front)
- * @param mixed $paramsOrTypes A hash of parameters or types
- * @param bool $isParam
- * @param mixed $defaultValue An optional default value. If omitted, an exception is thrown
- *
- * @return mixed
- *
- * @throws SQLParserUtilsException
- */
- private static function extractParam($paramName, $paramsOrTypes, $isParam, $defaultValue = null)
- {
- if (array_key_exists($paramName, $paramsOrTypes)) {
- return $paramsOrTypes[$paramName];
- }
-
- // Hash keys can be prefixed with a colon for compatibility
- if (array_key_exists(':' . $paramName, $paramsOrTypes)) {
- return $paramsOrTypes[':' . $paramName];
- }
-
- if ($defaultValue !== null) {
- return $defaultValue;
- }
-
- if ($isParam) {
- throw SQLParserUtilsException::missingParam($paramName);
- }
-
- throw SQLParserUtilsException::missingType($paramName);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/SQLParserUtilsException.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/SQLParserUtilsException.php
deleted file mode 100644
index a500ed52d..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/SQLParserUtilsException.php
+++ /dev/null
@@ -1,31 +0,0 @@
- Table($tableName)); if you want to rename the table, you have to make sure
- */
-abstract class AbstractAsset
-{
- /** @var string */
- protected $_name;
-
- /**
- * Namespace of the asset. If none isset the default namespace is assumed.
- *
- * @var string|null
- */
- protected $_namespace = null;
-
- /** @var bool */
- protected $_quoted = false;
-
- /**
- * Sets the name of this asset.
- *
- * @param string $name
- *
- * @return void
- */
- protected function _setName($name)
- {
- if ($this->isIdentifierQuoted($name)) {
- $this->_quoted = true;
- $name = $this->trimQuotes($name);
- }
- if (strpos($name, '.') !== false) {
- $parts = explode('.', $name);
- $this->_namespace = $parts[0];
- $name = $parts[1];
- }
- $this->_name = $name;
- }
-
- /**
- * Is this asset in the default namespace?
- *
- * @param string $defaultNamespaceName
- *
- * @return bool
- */
- public function isInDefaultNamespace($defaultNamespaceName)
- {
- return $this->_namespace === $defaultNamespaceName || $this->_namespace === null;
- }
-
- /**
- * Gets the namespace name of this asset.
- *
- * If NULL is returned this means the default namespace is used.
- *
- * @return string|null
- */
- public function getNamespaceName()
- {
- return $this->_namespace;
- }
-
- /**
- * The shortest name is stripped of the default namespace. All other
- * namespaced elements are returned as full-qualified names.
- *
- * @param string|null $defaultNamespaceName
- *
- * @return string
- */
- public function getShortestName($defaultNamespaceName)
- {
- $shortestName = $this->getName();
- if ($this->_namespace === $defaultNamespaceName) {
- $shortestName = $this->_name;
- }
-
- return strtolower($shortestName);
- }
-
- /**
- * The normalized name is full-qualified and lowerspaced. Lowerspacing is
- * actually wrong, but we have to do it to keep our sanity. If you are
- * using database objects that only differentiate in the casing (FOO vs
- * Foo) then you will NOT be able to use Doctrine Schema abstraction.
- *
- * Every non-namespaced element is prefixed with the default namespace
- * name which is passed as argument to this method.
- *
- * @param string $defaultNamespaceName
- *
- * @return string
- */
- public function getFullQualifiedName($defaultNamespaceName)
- {
- $name = $this->getName();
- if (! $this->_namespace) {
- $name = $defaultNamespaceName . '.' . $name;
- }
-
- return strtolower($name);
- }
-
- /**
- * Checks if this asset's name is quoted.
- *
- * @return bool
- */
- public function isQuoted()
- {
- return $this->_quoted;
- }
-
- /**
- * Checks if this identifier is quoted.
- *
- * @param string $identifier
- *
- * @return bool
- */
- protected function isIdentifierQuoted($identifier)
- {
- return isset($identifier[0]) && ($identifier[0] === '`' || $identifier[0] === '"' || $identifier[0] === '[');
- }
-
- /**
- * Trim quotes from the identifier.
- *
- * @param string $identifier
- *
- * @return string
- */
- protected function trimQuotes($identifier)
- {
- return str_replace(['`', '"', '[', ']'], '', $identifier);
- }
-
- /**
- * Returns the name of this schema asset.
- *
- * @return string
- */
- public function getName()
- {
- if ($this->_namespace) {
- return $this->_namespace . '.' . $this->_name;
- }
-
- return $this->_name;
- }
-
- /**
- * Gets the quoted representation of this asset but only if it was defined with one. Otherwise
- * return the plain unquoted value as inserted.
- *
- * @return string
- */
- public function getQuotedName(AbstractPlatform $platform)
- {
- $keywords = $platform->getReservedKeywordsList();
- $parts = explode('.', $this->getName());
- foreach ($parts as $k => $v) {
- $parts[$k] = $this->_quoted || $keywords->isKeyword($v) ? $platform->quoteIdentifier($v) : $v;
- }
-
- return implode('.', $parts);
- }
-
- /**
- * Generates an identifier from a list of column names obeying a certain string length.
- *
- * This is especially important for Oracle, since it does not allow identifiers larger than 30 chars,
- * however building idents automatically for foreign keys, composite keys or such can easily create
- * very long names.
- *
- * @param string[] $columnNames
- * @param string $prefix
- * @param int $maxSize
- *
- * @return string
- */
- protected function _generateIdentifierName($columnNames, $prefix = '', $maxSize = 30)
- {
- $hash = implode('', array_map(static function ($column) {
- return dechex(crc32($column));
- }, $columnNames));
-
- return strtoupper(substr($prefix . '_' . $hash, 0, $maxSize));
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php
deleted file mode 100644
index 8e4ffa5f9..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php
+++ /dev/null
@@ -1,1135 +0,0 @@
-_conn = $conn;
- $this->_platform = $platform ?: $this->_conn->getDatabasePlatform();
- }
-
- /**
- * Returns the associated platform.
- *
- * @return AbstractPlatform
- */
- public function getDatabasePlatform()
- {
- return $this->_platform;
- }
-
- /**
- * Tries any method on the schema manager. Normally a method throws an
- * exception when your DBMS doesn't support it or if an error occurs.
- * This method allows you to try and method on your SchemaManager
- * instance and will return false if it does not work or is not supported.
- *
- *
- * $result = $sm->tryMethod('dropView', 'view_name');
- *
- *
- * @return mixed
- */
- public function tryMethod()
- {
- $args = func_get_args();
- $method = $args[0];
- unset($args[0]);
- $args = array_values($args);
-
- $callback = [$this, $method];
- assert(is_callable($callback));
-
- try {
- return call_user_func_array($callback, $args);
- } catch (Throwable $e) {
- return false;
- }
- }
-
- /**
- * Lists the available databases for this connection.
- *
- * @return string[]
- */
- public function listDatabases()
- {
- $sql = $this->_platform->getListDatabasesSQL();
-
- $databases = $this->_conn->fetchAll($sql);
-
- return $this->_getPortableDatabasesList($databases);
- }
-
- /**
- * Returns a list of all namespaces in the current database.
- *
- * @return string[]
- */
- public function listNamespaceNames()
- {
- $sql = $this->_platform->getListNamespacesSQL();
-
- $namespaces = $this->_conn->fetchAll($sql);
-
- return $this->getPortableNamespacesList($namespaces);
- }
-
- /**
- * Lists the available sequences for this connection.
- *
- * @param string|null $database
- *
- * @return Sequence[]
- */
- public function listSequences($database = null)
- {
- if ($database === null) {
- $database = $this->_conn->getDatabase();
- }
- $sql = $this->_platform->getListSequencesSQL($database);
-
- $sequences = $this->_conn->fetchAll($sql);
-
- return $this->filterAssetNames($this->_getPortableSequencesList($sequences));
- }
-
- /**
- * Lists the columns for a given table.
- *
- * In contrast to other libraries and to the old version of Doctrine,
- * this column definition does try to contain the 'primary' field for
- * the reason that it is not portable across different RDBMS. Use
- * {@see listTableIndexes($tableName)} to retrieve the primary key
- * of a table. Where a RDBMS specifies more details, these are held
- * in the platformDetails array.
- *
- * @param string $table The name of the table.
- * @param string|null $database
- *
- * @return Column[]
- */
- public function listTableColumns($table, $database = null)
- {
- if (! $database) {
- $database = $this->_conn->getDatabase();
- }
-
- $sql = $this->_platform->getListTableColumnsSQL($table, $database);
-
- $tableColumns = $this->_conn->fetchAll($sql);
-
- return $this->_getPortableTableColumnList($table, $database, $tableColumns);
- }
-
- /**
- * Lists the indexes for a given table returning an array of Index instances.
- *
- * Keys of the portable indexes list are all lower-cased.
- *
- * @param string $table The name of the table.
- *
- * @return Index[]
- */
- public function listTableIndexes($table)
- {
- $sql = $this->_platform->getListTableIndexesSQL($table, $this->_conn->getDatabase());
-
- $tableIndexes = $this->_conn->fetchAll($sql);
-
- return $this->_getPortableTableIndexesList($tableIndexes, $table);
- }
-
- /**
- * Returns true if all the given tables exist.
- *
- * The usage of a string $tableNames is deprecated. Pass a one-element array instead.
- *
- * @param string|string[] $tableNames
- *
- * @return bool
- */
- public function tablesExist($tableNames)
- {
- $tableNames = array_map('strtolower', (array) $tableNames);
-
- return count($tableNames) === count(array_intersect($tableNames, array_map('strtolower', $this->listTableNames())));
- }
-
- /**
- * Returns a list of all tables in the current database.
- *
- * @return string[]
- */
- public function listTableNames()
- {
- $sql = $this->_platform->getListTablesSQL();
-
- $tables = $this->_conn->fetchAll($sql);
- $tableNames = $this->_getPortableTablesList($tables);
-
- return $this->filterAssetNames($tableNames);
- }
-
- /**
- * Filters asset names if they are configured to return only a subset of all
- * the found elements.
- *
- * @param mixed[] $assetNames
- *
- * @return mixed[]
- */
- protected function filterAssetNames($assetNames)
- {
- $filter = $this->_conn->getConfiguration()->getSchemaAssetsFilter();
- if (! $filter) {
- return $assetNames;
- }
-
- return array_values(array_filter($assetNames, $filter));
- }
-
- /**
- * @deprecated Use Configuration::getSchemaAssetsFilter() instead
- *
- * @return string|null
- */
- protected function getFilterSchemaAssetsExpression()
- {
- return $this->_conn->getConfiguration()->getFilterSchemaAssetsExpression();
- }
-
- /**
- * Lists the tables for this connection.
- *
- * @return Table[]
- */
- public function listTables()
- {
- $tableNames = $this->listTableNames();
-
- $tables = [];
- foreach ($tableNames as $tableName) {
- $tables[] = $this->listTableDetails($tableName);
- }
-
- return $tables;
- }
-
- /**
- * @param string $tableName
- *
- * @return Table
- */
- public function listTableDetails($tableName)
- {
- $columns = $this->listTableColumns($tableName);
- $foreignKeys = [];
- if ($this->_platform->supportsForeignKeyConstraints()) {
- $foreignKeys = $this->listTableForeignKeys($tableName);
- }
- $indexes = $this->listTableIndexes($tableName);
-
- return new Table($tableName, $columns, $indexes, $foreignKeys);
- }
-
- /**
- * Lists the views this connection has.
- *
- * @return View[]
- */
- public function listViews()
- {
- $database = $this->_conn->getDatabase();
- $sql = $this->_platform->getListViewsSQL($database);
- $views = $this->_conn->fetchAll($sql);
-
- return $this->_getPortableViewsList($views);
- }
-
- /**
- * Lists the foreign keys for the given table.
- *
- * @param string $table The name of the table.
- * @param string|null $database
- *
- * @return ForeignKeyConstraint[]
- */
- public function listTableForeignKeys($table, $database = null)
- {
- if ($database === null) {
- $database = $this->_conn->getDatabase();
- }
- $sql = $this->_platform->getListTableForeignKeysSQL($table, $database);
- $tableForeignKeys = $this->_conn->fetchAll($sql);
-
- return $this->_getPortableTableForeignKeysList($tableForeignKeys);
- }
-
- /* drop*() Methods */
-
- /**
- * Drops a database.
- *
- * NOTE: You can not drop the database this SchemaManager is currently connected to.
- *
- * @param string $database The name of the database to drop.
- *
- * @return void
- */
- public function dropDatabase($database)
- {
- $this->_execSql($this->_platform->getDropDatabaseSQL($database));
- }
-
- /**
- * Drops the given table.
- *
- * @param string $tableName The name of the table to drop.
- *
- * @return void
- */
- public function dropTable($tableName)
- {
- $this->_execSql($this->_platform->getDropTableSQL($tableName));
- }
-
- /**
- * Drops the index from the given table.
- *
- * @param Index|string $index The name of the index.
- * @param Table|string $table The name of the table.
- *
- * @return void
- */
- public function dropIndex($index, $table)
- {
- if ($index instanceof Index) {
- $index = $index->getQuotedName($this->_platform);
- }
-
- $this->_execSql($this->_platform->getDropIndexSQL($index, $table));
- }
-
- /**
- * Drops the constraint from the given table.
- *
- * @param Table|string $table The name of the table.
- *
- * @return void
- */
- public function dropConstraint(Constraint $constraint, $table)
- {
- $this->_execSql($this->_platform->getDropConstraintSQL($constraint, $table));
- }
-
- /**
- * Drops a foreign key from a table.
- *
- * @param ForeignKeyConstraint|string $foreignKey The name of the foreign key.
- * @param Table|string $table The name of the table with the foreign key.
- *
- * @return void
- */
- public function dropForeignKey($foreignKey, $table)
- {
- $this->_execSql($this->_platform->getDropForeignKeySQL($foreignKey, $table));
- }
-
- /**
- * Drops a sequence with a given name.
- *
- * @param string $name The name of the sequence to drop.
- *
- * @return void
- */
- public function dropSequence($name)
- {
- $this->_execSql($this->_platform->getDropSequenceSQL($name));
- }
-
- /**
- * Drops a view.
- *
- * @param string $name The name of the view.
- *
- * @return void
- */
- public function dropView($name)
- {
- $this->_execSql($this->_platform->getDropViewSQL($name));
- }
-
- /* create*() Methods */
-
- /**
- * Creates a new database.
- *
- * @param string $database The name of the database to create.
- *
- * @return void
- */
- public function createDatabase($database)
- {
- $this->_execSql($this->_platform->getCreateDatabaseSQL($database));
- }
-
- /**
- * Creates a new table.
- *
- * @return void
- */
- public function createTable(Table $table)
- {
- $createFlags = AbstractPlatform::CREATE_INDEXES|AbstractPlatform::CREATE_FOREIGNKEYS;
- $this->_execSql($this->_platform->getCreateTableSQL($table, $createFlags));
- }
-
- /**
- * Creates a new sequence.
- *
- * @param Sequence $sequence
- *
- * @return void
- *
- * @throws ConnectionException If something fails at database level.
- */
- public function createSequence($sequence)
- {
- $this->_execSql($this->_platform->getCreateSequenceSQL($sequence));
- }
-
- /**
- * Creates a constraint on a table.
- *
- * @param Table|string $table
- *
- * @return void
- */
- public function createConstraint(Constraint $constraint, $table)
- {
- $this->_execSql($this->_platform->getCreateConstraintSQL($constraint, $table));
- }
-
- /**
- * Creates a new index on a table.
- *
- * @param Table|string $table The name of the table on which the index is to be created.
- *
- * @return void
- */
- public function createIndex(Index $index, $table)
- {
- $this->_execSql($this->_platform->getCreateIndexSQL($index, $table));
- }
-
- /**
- * Creates a new foreign key.
- *
- * @param ForeignKeyConstraint $foreignKey The ForeignKey instance.
- * @param Table|string $table The name of the table on which the foreign key is to be created.
- *
- * @return void
- */
- public function createForeignKey(ForeignKeyConstraint $foreignKey, $table)
- {
- $this->_execSql($this->_platform->getCreateForeignKeySQL($foreignKey, $table));
- }
-
- /**
- * Creates a new view.
- *
- * @return void
- */
- public function createView(View $view)
- {
- $this->_execSql($this->_platform->getCreateViewSQL($view->getQuotedName($this->_platform), $view->getSql()));
- }
-
- /* dropAndCreate*() Methods */
-
- /**
- * Drops and creates a constraint.
- *
- * @see dropConstraint()
- * @see createConstraint()
- *
- * @param Table|string $table
- *
- * @return void
- */
- public function dropAndCreateConstraint(Constraint $constraint, $table)
- {
- $this->tryMethod('dropConstraint', $constraint, $table);
- $this->createConstraint($constraint, $table);
- }
-
- /**
- * Drops and creates a new index on a table.
- *
- * @param Table|string $table The name of the table on which the index is to be created.
- *
- * @return void
- */
- public function dropAndCreateIndex(Index $index, $table)
- {
- $this->tryMethod('dropIndex', $index->getQuotedName($this->_platform), $table);
- $this->createIndex($index, $table);
- }
-
- /**
- * Drops and creates a new foreign key.
- *
- * @param ForeignKeyConstraint $foreignKey An associative array that defines properties of the foreign key to be created.
- * @param Table|string $table The name of the table on which the foreign key is to be created.
- *
- * @return void
- */
- public function dropAndCreateForeignKey(ForeignKeyConstraint $foreignKey, $table)
- {
- $this->tryMethod('dropForeignKey', $foreignKey, $table);
- $this->createForeignKey($foreignKey, $table);
- }
-
- /**
- * Drops and create a new sequence.
- *
- * @return void
- *
- * @throws ConnectionException If something fails at database level.
- */
- public function dropAndCreateSequence(Sequence $sequence)
- {
- $this->tryMethod('dropSequence', $sequence->getQuotedName($this->_platform));
- $this->createSequence($sequence);
- }
-
- /**
- * Drops and creates a new table.
- *
- * @return void
- */
- public function dropAndCreateTable(Table $table)
- {
- $this->tryMethod('dropTable', $table->getQuotedName($this->_platform));
- $this->createTable($table);
- }
-
- /**
- * Drops and creates a new database.
- *
- * @param string $database The name of the database to create.
- *
- * @return void
- */
- public function dropAndCreateDatabase($database)
- {
- $this->tryMethod('dropDatabase', $database);
- $this->createDatabase($database);
- }
-
- /**
- * Drops and creates a new view.
- *
- * @return void
- */
- public function dropAndCreateView(View $view)
- {
- $this->tryMethod('dropView', $view->getQuotedName($this->_platform));
- $this->createView($view);
- }
-
- /* alterTable() Methods */
-
- /**
- * Alters an existing tables schema.
- *
- * @return void
- */
- public function alterTable(TableDiff $tableDiff)
- {
- $queries = $this->_platform->getAlterTableSQL($tableDiff);
- if (! is_array($queries) || ! count($queries)) {
- return;
- }
-
- foreach ($queries as $ddlQuery) {
- $this->_execSql($ddlQuery);
- }
- }
-
- /**
- * Renames a given table to another name.
- *
- * @param string $name The current name of the table.
- * @param string $newName The new name of the table.
- *
- * @return void
- */
- public function renameTable($name, $newName)
- {
- $tableDiff = new TableDiff($name);
- $tableDiff->newName = $newName;
- $this->alterTable($tableDiff);
- }
-
- /**
- * Methods for filtering return values of list*() methods to convert
- * the native DBMS data definition to a portable Doctrine definition
- */
-
- /**
- * @param mixed[] $databases
- *
- * @return string[]
- */
- protected function _getPortableDatabasesList($databases)
- {
- $list = [];
- foreach ($databases as $value) {
- $value = $this->_getPortableDatabaseDefinition($value);
-
- if (! $value) {
- continue;
- }
-
- $list[] = $value;
- }
-
- return $list;
- }
-
- /**
- * Converts a list of namespace names from the native DBMS data definition to a portable Doctrine definition.
- *
- * @param mixed[][] $namespaces The list of namespace names in the native DBMS data definition.
- *
- * @return string[]
- */
- protected function getPortableNamespacesList(array $namespaces)
- {
- $namespacesList = [];
-
- foreach ($namespaces as $namespace) {
- $namespacesList[] = $this->getPortableNamespaceDefinition($namespace);
- }
-
- return $namespacesList;
- }
-
- /**
- * @param mixed $database
- *
- * @return mixed
- */
- protected function _getPortableDatabaseDefinition($database)
- {
- return $database;
- }
-
- /**
- * Converts a namespace definition from the native DBMS data definition to a portable Doctrine definition.
- *
- * @param mixed[] $namespace The native DBMS namespace definition.
- *
- * @return mixed
- */
- protected function getPortableNamespaceDefinition(array $namespace)
- {
- return $namespace;
- }
-
- /**
- * @deprecated
- *
- * @param mixed[][] $functions
- *
- * @return mixed[][]
- */
- protected function _getPortableFunctionsList($functions)
- {
- $list = [];
- foreach ($functions as $value) {
- $value = $this->_getPortableFunctionDefinition($value);
-
- if (! $value) {
- continue;
- }
-
- $list[] = $value;
- }
-
- return $list;
- }
-
- /**
- * @deprecated
- *
- * @param mixed[] $function
- *
- * @return mixed
- */
- protected function _getPortableFunctionDefinition($function)
- {
- return $function;
- }
-
- /**
- * @param mixed[][] $triggers
- *
- * @return mixed[][]
- */
- protected function _getPortableTriggersList($triggers)
- {
- $list = [];
- foreach ($triggers as $value) {
- $value = $this->_getPortableTriggerDefinition($value);
-
- if (! $value) {
- continue;
- }
-
- $list[] = $value;
- }
-
- return $list;
- }
-
- /**
- * @param mixed[] $trigger
- *
- * @return mixed
- */
- protected function _getPortableTriggerDefinition($trigger)
- {
- return $trigger;
- }
-
- /**
- * @param mixed[][] $sequences
- *
- * @return Sequence[]
- */
- protected function _getPortableSequencesList($sequences)
- {
- $list = [];
-
- foreach ($sequences as $value) {
- $list[] = $this->_getPortableSequenceDefinition($value);
- }
-
- return $list;
- }
-
- /**
- * @param mixed[] $sequence
- *
- * @return Sequence
- *
- * @throws DBALException
- */
- protected function _getPortableSequenceDefinition($sequence)
- {
- throw DBALException::notSupported('Sequences');
- }
-
- /**
- * Independent of the database the keys of the column list result are lowercased.
- *
- * The name of the created column instance however is kept in its case.
- *
- * @param string $table The name of the table.
- * @param string $database
- * @param mixed[][] $tableColumns
- *
- * @return Column[]
- */
- protected function _getPortableTableColumnList($table, $database, $tableColumns)
- {
- $eventManager = $this->_platform->getEventManager();
-
- $list = [];
- foreach ($tableColumns as $tableColumn) {
- $column = null;
- $defaultPrevented = false;
-
- if ($eventManager !== null && $eventManager->hasListeners(Events::onSchemaColumnDefinition)) {
- $eventArgs = new SchemaColumnDefinitionEventArgs($tableColumn, $table, $database, $this->_conn);
- $eventManager->dispatchEvent(Events::onSchemaColumnDefinition, $eventArgs);
-
- $defaultPrevented = $eventArgs->isDefaultPrevented();
- $column = $eventArgs->getColumn();
- }
-
- if (! $defaultPrevented) {
- $column = $this->_getPortableTableColumnDefinition($tableColumn);
- }
-
- if (! $column) {
- continue;
- }
-
- $name = strtolower($column->getQuotedName($this->_platform));
- $list[$name] = $column;
- }
-
- return $list;
- }
-
- /**
- * Gets Table Column Definition.
- *
- * @param mixed[] $tableColumn
- *
- * @return Column
- */
- abstract protected function _getPortableTableColumnDefinition($tableColumn);
-
- /**
- * Aggregates and groups the index results according to the required data result.
- *
- * @param mixed[][] $tableIndexRows
- * @param string|null $tableName
- *
- * @return Index[]
- */
- protected function _getPortableTableIndexesList($tableIndexRows, $tableName = null)
- {
- $result = [];
- foreach ($tableIndexRows as $tableIndex) {
- $indexName = $keyName = $tableIndex['key_name'];
- if ($tableIndex['primary']) {
- $keyName = 'primary';
- }
- $keyName = strtolower($keyName);
-
- if (! isset($result[$keyName])) {
- $options = [
- 'lengths' => [],
- ];
-
- if (isset($tableIndex['where'])) {
- $options['where'] = $tableIndex['where'];
- }
-
- $result[$keyName] = [
- 'name' => $indexName,
- 'columns' => [],
- 'unique' => ! $tableIndex['non_unique'],
- 'primary' => $tableIndex['primary'],
- 'flags' => $tableIndex['flags'] ?? [],
- 'options' => $options,
- ];
- }
-
- $result[$keyName]['columns'][] = $tableIndex['column_name'];
- $result[$keyName]['options']['lengths'][] = $tableIndex['length'] ?? null;
- }
-
- $eventManager = $this->_platform->getEventManager();
-
- $indexes = [];
- foreach ($result as $indexKey => $data) {
- $index = null;
- $defaultPrevented = false;
-
- if ($eventManager !== null && $eventManager->hasListeners(Events::onSchemaIndexDefinition)) {
- $eventArgs = new SchemaIndexDefinitionEventArgs($data, $tableName, $this->_conn);
- $eventManager->dispatchEvent(Events::onSchemaIndexDefinition, $eventArgs);
-
- $defaultPrevented = $eventArgs->isDefaultPrevented();
- $index = $eventArgs->getIndex();
- }
-
- if (! $defaultPrevented) {
- $index = new Index($data['name'], $data['columns'], $data['unique'], $data['primary'], $data['flags'], $data['options']);
- }
-
- if (! $index) {
- continue;
- }
-
- $indexes[$indexKey] = $index;
- }
-
- return $indexes;
- }
-
- /**
- * @param mixed[][] $tables
- *
- * @return string[]
- */
- protected function _getPortableTablesList($tables)
- {
- $list = [];
- foreach ($tables as $value) {
- $value = $this->_getPortableTableDefinition($value);
-
- if (! $value) {
- continue;
- }
-
- $list[] = $value;
- }
-
- return $list;
- }
-
- /**
- * @param mixed $table
- *
- * @return string
- */
- protected function _getPortableTableDefinition($table)
- {
- return $table;
- }
-
- /**
- * @param mixed[][] $users
- *
- * @return string[][]
- */
- protected function _getPortableUsersList($users)
- {
- $list = [];
- foreach ($users as $value) {
- $value = $this->_getPortableUserDefinition($value);
-
- if (! $value) {
- continue;
- }
-
- $list[] = $value;
- }
-
- return $list;
- }
-
- /**
- * @param string[] $user
- *
- * @return string[]
- */
- protected function _getPortableUserDefinition($user)
- {
- return $user;
- }
-
- /**
- * @param mixed[][] $views
- *
- * @return View[]
- */
- protected function _getPortableViewsList($views)
- {
- $list = [];
- foreach ($views as $value) {
- $view = $this->_getPortableViewDefinition($value);
-
- if (! $view) {
- continue;
- }
-
- $viewName = strtolower($view->getQuotedName($this->_platform));
- $list[$viewName] = $view;
- }
-
- return $list;
- }
-
- /**
- * @param mixed[] $view
- *
- * @return View|false
- */
- protected function _getPortableViewDefinition($view)
- {
- return false;
- }
-
- /**
- * @param mixed[][] $tableForeignKeys
- *
- * @return ForeignKeyConstraint[]
- */
- protected function _getPortableTableForeignKeysList($tableForeignKeys)
- {
- $list = [];
-
- foreach ($tableForeignKeys as $value) {
- $list[] = $this->_getPortableTableForeignKeyDefinition($value);
- }
-
- return $list;
- }
-
- /**
- * @param mixed $tableForeignKey
- *
- * @return ForeignKeyConstraint
- */
- protected function _getPortableTableForeignKeyDefinition($tableForeignKey)
- {
- return $tableForeignKey;
- }
-
- /**
- * @param string[]|string $sql
- *
- * @return void
- */
- protected function _execSql($sql)
- {
- foreach ((array) $sql as $query) {
- $this->_conn->executeUpdate($query);
- }
- }
-
- /**
- * Creates a schema instance for the current database.
- *
- * @return Schema
- */
- public function createSchema()
- {
- $namespaces = [];
-
- if ($this->_platform->supportsSchemas()) {
- $namespaces = $this->listNamespaceNames();
- }
-
- $sequences = [];
-
- if ($this->_platform->supportsSequences()) {
- $sequences = $this->listSequences();
- }
-
- $tables = $this->listTables();
-
- return new Schema($tables, $sequences, $this->createSchemaConfig(), $namespaces);
- }
-
- /**
- * Creates the configuration for this schema.
- *
- * @return SchemaConfig
- */
- public function createSchemaConfig()
- {
- $schemaConfig = new SchemaConfig();
- $schemaConfig->setMaxIdentifierLength($this->_platform->getMaxIdentifierLength());
-
- $searchPaths = $this->getSchemaSearchPaths();
- if (isset($searchPaths[0])) {
- $schemaConfig->setName($searchPaths[0]);
- }
-
- $params = $this->_conn->getParams();
- if (! isset($params['defaultTableOptions'])) {
- $params['defaultTableOptions'] = [];
- }
- if (! isset($params['defaultTableOptions']['charset']) && isset($params['charset'])) {
- $params['defaultTableOptions']['charset'] = $params['charset'];
- }
- $schemaConfig->setDefaultTableOptions($params['defaultTableOptions']);
-
- return $schemaConfig;
- }
-
- /**
- * The search path for namespaces in the currently connected database.
- *
- * The first entry is usually the default namespace in the Schema. All
- * further namespaces contain tables/sequences which can also be addressed
- * with a short, not full-qualified name.
- *
- * For databases that don't support subschema/namespaces this method
- * returns the name of the currently connected database.
- *
- * @return string[]
- */
- public function getSchemaSearchPaths()
- {
- return [$this->_conn->getDatabase()];
- }
-
- /**
- * Given a table comment this method tries to extract a typehint for Doctrine Type, or returns
- * the type given as default.
- *
- * @param string|null $comment
- * @param string $currentType
- *
- * @return string
- */
- public function extractDoctrineTypeFromComment($comment, $currentType)
- {
- if ($comment !== null && preg_match('(\(DC2Type:(((?!\)).)+)\))', $comment, $match)) {
- return $match[1];
- }
-
- return $currentType;
- }
-
- /**
- * @param string|null $comment
- * @param string|null $type
- *
- * @return string|null
- */
- public function removeDoctrineTypeFromComment($comment, $type)
- {
- if ($comment === null) {
- return null;
- }
-
- return str_replace('(DC2Type:' . $type . ')', '', $comment);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Column.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Column.php
deleted file mode 100644
index 56c39c149..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Column.php
+++ /dev/null
@@ -1,451 +0,0 @@
-_setName($columnName);
- $this->setType($type);
- $this->setOptions($options);
- }
-
- /**
- * @param mixed[] $options
- *
- * @return Column
- */
- public function setOptions(array $options)
- {
- foreach ($options as $name => $value) {
- $method = 'set' . $name;
- if (! method_exists($this, $method)) {
- // next major: throw an exception
- @trigger_error(sprintf(
- 'The "%s" column option is not supported,' .
- ' setting it is deprecated and will cause an error in Doctrine 3.0',
- $name
- ), E_USER_DEPRECATED);
-
- continue;
- }
- $this->$method($value);
- }
-
- return $this;
- }
-
- /**
- * @return Column
- */
- public function setType(Type $type)
- {
- $this->_type = $type;
-
- return $this;
- }
-
- /**
- * @param int|null $length
- *
- * @return Column
- */
- public function setLength($length)
- {
- if ($length !== null) {
- $this->_length = (int) $length;
- } else {
- $this->_length = null;
- }
-
- return $this;
- }
-
- /**
- * @param int $precision
- *
- * @return Column
- */
- public function setPrecision($precision)
- {
- if (! is_numeric($precision)) {
- $precision = 10; // defaults to 10 when no valid precision is given.
- }
-
- $this->_precision = (int) $precision;
-
- return $this;
- }
-
- /**
- * @param int $scale
- *
- * @return Column
- */
- public function setScale($scale)
- {
- if (! is_numeric($scale)) {
- $scale = 0;
- }
-
- $this->_scale = (int) $scale;
-
- return $this;
- }
-
- /**
- * @param bool $unsigned
- *
- * @return Column
- */
- public function setUnsigned($unsigned)
- {
- $this->_unsigned = (bool) $unsigned;
-
- return $this;
- }
-
- /**
- * @param bool $fixed
- *
- * @return Column
- */
- public function setFixed($fixed)
- {
- $this->_fixed = (bool) $fixed;
-
- return $this;
- }
-
- /**
- * @param bool $notnull
- *
- * @return Column
- */
- public function setNotnull($notnull)
- {
- $this->_notnull = (bool) $notnull;
-
- return $this;
- }
-
- /**
- * @param mixed $default
- *
- * @return Column
- */
- public function setDefault($default)
- {
- $this->_default = $default;
-
- return $this;
- }
-
- /**
- * @param mixed[] $platformOptions
- *
- * @return Column
- */
- public function setPlatformOptions(array $platformOptions)
- {
- $this->_platformOptions = $platformOptions;
-
- return $this;
- }
-
- /**
- * @param string $name
- * @param mixed $value
- *
- * @return Column
- */
- public function setPlatformOption($name, $value)
- {
- $this->_platformOptions[$name] = $value;
-
- return $this;
- }
-
- /**
- * @param string $value
- *
- * @return Column
- */
- public function setColumnDefinition($value)
- {
- $this->_columnDefinition = $value;
-
- return $this;
- }
-
- /**
- * @return Type
- */
- public function getType()
- {
- return $this->_type;
- }
-
- /**
- * @return int|null
- */
- public function getLength()
- {
- return $this->_length;
- }
-
- /**
- * @return int
- */
- public function getPrecision()
- {
- return $this->_precision;
- }
-
- /**
- * @return int
- */
- public function getScale()
- {
- return $this->_scale;
- }
-
- /**
- * @return bool
- */
- public function getUnsigned()
- {
- return $this->_unsigned;
- }
-
- /**
- * @return bool
- */
- public function getFixed()
- {
- return $this->_fixed;
- }
-
- /**
- * @return bool
- */
- public function getNotnull()
- {
- return $this->_notnull;
- }
-
- /**
- * @return string|null
- */
- public function getDefault()
- {
- return $this->_default;
- }
-
- /**
- * @return mixed[]
- */
- public function getPlatformOptions()
- {
- return $this->_platformOptions;
- }
-
- /**
- * @param string $name
- *
- * @return bool
- */
- public function hasPlatformOption($name)
- {
- return isset($this->_platformOptions[$name]);
- }
-
- /**
- * @param string $name
- *
- * @return mixed
- */
- public function getPlatformOption($name)
- {
- return $this->_platformOptions[$name];
- }
-
- /**
- * @return string|null
- */
- public function getColumnDefinition()
- {
- return $this->_columnDefinition;
- }
-
- /**
- * @return bool
- */
- public function getAutoincrement()
- {
- return $this->_autoincrement;
- }
-
- /**
- * @param bool $flag
- *
- * @return Column
- */
- public function setAutoincrement($flag)
- {
- $this->_autoincrement = $flag;
-
- return $this;
- }
-
- /**
- * @param string|null $comment
- *
- * @return Column
- */
- public function setComment($comment)
- {
- $this->_comment = $comment;
-
- return $this;
- }
-
- /**
- * @return string|null
- */
- public function getComment()
- {
- return $this->_comment;
- }
-
- /**
- * @param string $name
- * @param mixed $value
- *
- * @return Column
- */
- public function setCustomSchemaOption($name, $value)
- {
- $this->_customSchemaOptions[$name] = $value;
-
- return $this;
- }
-
- /**
- * @param string $name
- *
- * @return bool
- */
- public function hasCustomSchemaOption($name)
- {
- return isset($this->_customSchemaOptions[$name]);
- }
-
- /**
- * @param string $name
- *
- * @return mixed
- */
- public function getCustomSchemaOption($name)
- {
- return $this->_customSchemaOptions[$name];
- }
-
- /**
- * @param mixed[] $customSchemaOptions
- *
- * @return Column
- */
- public function setCustomSchemaOptions(array $customSchemaOptions)
- {
- $this->_customSchemaOptions = $customSchemaOptions;
-
- return $this;
- }
-
- /**
- * @return mixed[]
- */
- public function getCustomSchemaOptions()
- {
- return $this->_customSchemaOptions;
- }
-
- /**
- * @return mixed[]
- */
- public function toArray()
- {
- return array_merge([
- 'name' => $this->_name,
- 'type' => $this->_type,
- 'default' => $this->_default,
- 'notnull' => $this->_notnull,
- 'length' => $this->_length,
- 'precision' => $this->_precision,
- 'scale' => $this->_scale,
- 'fixed' => $this->_fixed,
- 'unsigned' => $this->_unsigned,
- 'autoincrement' => $this->_autoincrement,
- 'columnDefinition' => $this->_columnDefinition,
- 'comment' => $this->_comment,
- ], $this->_platformOptions, $this->_customSchemaOptions);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/ColumnDiff.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/ColumnDiff.php
deleted file mode 100644
index 1589f98d4..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/ColumnDiff.php
+++ /dev/null
@@ -1,55 +0,0 @@
-oldColumnName = $oldColumnName;
- $this->column = $column;
- $this->changedProperties = $changedProperties;
- $this->fromColumn = $fromColumn;
- }
-
- /**
- * @param string $propertyName
- *
- * @return bool
- */
- public function hasChanged($propertyName)
- {
- return in_array($propertyName, $this->changedProperties);
- }
-
- /**
- * @return Identifier
- */
- public function getOldColumnName()
- {
- $quote = $this->fromColumn && $this->fromColumn->isQuoted();
-
- return new Identifier($this->oldColumnName, $quote);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Comparator.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Comparator.php
deleted file mode 100644
index 9ccaa9a1e..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Comparator.php
+++ /dev/null
@@ -1,533 +0,0 @@
-compare($fromSchema, $toSchema);
- }
-
- /**
- * Returns a SchemaDiff object containing the differences between the schemas $fromSchema and $toSchema.
- *
- * The returned differences are returned in such a way that they contain the
- * operations to change the schema stored in $fromSchema to the schema that is
- * stored in $toSchema.
- *
- * @return SchemaDiff
- */
- public function compare(Schema $fromSchema, Schema $toSchema)
- {
- $diff = new SchemaDiff();
- $diff->fromSchema = $fromSchema;
-
- $foreignKeysToTable = [];
-
- foreach ($toSchema->getNamespaces() as $namespace) {
- if ($fromSchema->hasNamespace($namespace)) {
- continue;
- }
-
- $diff->newNamespaces[$namespace] = $namespace;
- }
-
- foreach ($fromSchema->getNamespaces() as $namespace) {
- if ($toSchema->hasNamespace($namespace)) {
- continue;
- }
-
- $diff->removedNamespaces[$namespace] = $namespace;
- }
-
- foreach ($toSchema->getTables() as $table) {
- $tableName = $table->getShortestName($toSchema->getName());
- if (! $fromSchema->hasTable($tableName)) {
- $diff->newTables[$tableName] = $toSchema->getTable($tableName);
- } else {
- $tableDifferences = $this->diffTable($fromSchema->getTable($tableName), $toSchema->getTable($tableName));
- if ($tableDifferences !== false) {
- $diff->changedTables[$tableName] = $tableDifferences;
- }
- }
- }
-
- /* Check if there are tables removed */
- foreach ($fromSchema->getTables() as $table) {
- $tableName = $table->getShortestName($fromSchema->getName());
-
- $table = $fromSchema->getTable($tableName);
- if (! $toSchema->hasTable($tableName)) {
- $diff->removedTables[$tableName] = $table;
- }
-
- // also remember all foreign keys that point to a specific table
- foreach ($table->getForeignKeys() as $foreignKey) {
- $foreignTable = strtolower($foreignKey->getForeignTableName());
- if (! isset($foreignKeysToTable[$foreignTable])) {
- $foreignKeysToTable[$foreignTable] = [];
- }
- $foreignKeysToTable[$foreignTable][] = $foreignKey;
- }
- }
-
- foreach ($diff->removedTables as $tableName => $table) {
- if (! isset($foreignKeysToTable[$tableName])) {
- continue;
- }
-
- $diff->orphanedForeignKeys = array_merge($diff->orphanedForeignKeys, $foreignKeysToTable[$tableName]);
-
- // deleting duplicated foreign keys present on both on the orphanedForeignKey
- // and the removedForeignKeys from changedTables
- foreach ($foreignKeysToTable[$tableName] as $foreignKey) {
- // strtolower the table name to make if compatible with getShortestName
- $localTableName = strtolower($foreignKey->getLocalTableName());
- if (! isset($diff->changedTables[$localTableName])) {
- continue;
- }
-
- foreach ($diff->changedTables[$localTableName]->removedForeignKeys as $key => $removedForeignKey) {
- assert($removedForeignKey instanceof ForeignKeyConstraint);
-
- // We check if the key is from the removed table if not we skip.
- if ($tableName !== strtolower($removedForeignKey->getForeignTableName())) {
- continue;
- }
- unset($diff->changedTables[$localTableName]->removedForeignKeys[$key]);
- }
- }
- }
-
- foreach ($toSchema->getSequences() as $sequence) {
- $sequenceName = $sequence->getShortestName($toSchema->getName());
- if (! $fromSchema->hasSequence($sequenceName)) {
- if (! $this->isAutoIncrementSequenceInSchema($fromSchema, $sequence)) {
- $diff->newSequences[] = $sequence;
- }
- } else {
- if ($this->diffSequence($sequence, $fromSchema->getSequence($sequenceName))) {
- $diff->changedSequences[] = $toSchema->getSequence($sequenceName);
- }
- }
- }
-
- foreach ($fromSchema->getSequences() as $sequence) {
- if ($this->isAutoIncrementSequenceInSchema($toSchema, $sequence)) {
- continue;
- }
-
- $sequenceName = $sequence->getShortestName($fromSchema->getName());
-
- if ($toSchema->hasSequence($sequenceName)) {
- continue;
- }
-
- $diff->removedSequences[] = $sequence;
- }
-
- return $diff;
- }
-
- /**
- * @param Schema $schema
- * @param Sequence $sequence
- *
- * @return bool
- */
- private function isAutoIncrementSequenceInSchema($schema, $sequence)
- {
- foreach ($schema->getTables() as $table) {
- if ($sequence->isAutoIncrementsFor($table)) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * @return bool
- */
- public function diffSequence(Sequence $sequence1, Sequence $sequence2)
- {
- if ($sequence1->getAllocationSize() !== $sequence2->getAllocationSize()) {
- return true;
- }
-
- return $sequence1->getInitialValue() !== $sequence2->getInitialValue();
- }
-
- /**
- * Returns the difference between the tables $table1 and $table2.
- *
- * If there are no differences this method returns the boolean false.
- *
- * @return TableDiff|false
- */
- public function diffTable(Table $table1, Table $table2)
- {
- $changes = 0;
- $tableDifferences = new TableDiff($table1->getName());
- $tableDifferences->fromTable = $table1;
-
- $table1Columns = $table1->getColumns();
- $table2Columns = $table2->getColumns();
-
- /* See if all the fields in table 1 exist in table 2 */
- foreach ($table2Columns as $columnName => $column) {
- if ($table1->hasColumn($columnName)) {
- continue;
- }
-
- $tableDifferences->addedColumns[$columnName] = $column;
- $changes++;
- }
- /* See if there are any removed fields in table 2 */
- foreach ($table1Columns as $columnName => $column) {
- // See if column is removed in table 2.
- if (! $table2->hasColumn($columnName)) {
- $tableDifferences->removedColumns[$columnName] = $column;
- $changes++;
- continue;
- }
-
- // See if column has changed properties in table 2.
- $changedProperties = $this->diffColumn($column, $table2->getColumn($columnName));
-
- if (empty($changedProperties)) {
- continue;
- }
-
- $columnDiff = new ColumnDiff($column->getName(), $table2->getColumn($columnName), $changedProperties);
- $columnDiff->fromColumn = $column;
- $tableDifferences->changedColumns[$column->getName()] = $columnDiff;
- $changes++;
- }
-
- $this->detectColumnRenamings($tableDifferences);
-
- $table1Indexes = $table1->getIndexes();
- $table2Indexes = $table2->getIndexes();
-
- /* See if all the indexes in table 1 exist in table 2 */
- foreach ($table2Indexes as $indexName => $index) {
- if (($index->isPrimary() && $table1->hasPrimaryKey()) || $table1->hasIndex($indexName)) {
- continue;
- }
-
- $tableDifferences->addedIndexes[$indexName] = $index;
- $changes++;
- }
- /* See if there are any removed indexes in table 2 */
- foreach ($table1Indexes as $indexName => $index) {
- // See if index is removed in table 2.
- if (($index->isPrimary() && ! $table2->hasPrimaryKey()) ||
- ! $index->isPrimary() && ! $table2->hasIndex($indexName)
- ) {
- $tableDifferences->removedIndexes[$indexName] = $index;
- $changes++;
- continue;
- }
-
- // See if index has changed in table 2.
- $table2Index = $index->isPrimary() ? $table2->getPrimaryKey() : $table2->getIndex($indexName);
- assert($table2Index instanceof Index);
-
- if (! $this->diffIndex($index, $table2Index)) {
- continue;
- }
-
- $tableDifferences->changedIndexes[$indexName] = $table2Index;
- $changes++;
- }
-
- $this->detectIndexRenamings($tableDifferences);
-
- $fromFkeys = $table1->getForeignKeys();
- $toFkeys = $table2->getForeignKeys();
-
- foreach ($fromFkeys as $key1 => $constraint1) {
- foreach ($toFkeys as $key2 => $constraint2) {
- if ($this->diffForeignKey($constraint1, $constraint2) === false) {
- unset($fromFkeys[$key1], $toFkeys[$key2]);
- } else {
- if (strtolower($constraint1->getName()) === strtolower($constraint2->getName())) {
- $tableDifferences->changedForeignKeys[] = $constraint2;
- $changes++;
- unset($fromFkeys[$key1], $toFkeys[$key2]);
- }
- }
- }
- }
-
- foreach ($fromFkeys as $constraint1) {
- $tableDifferences->removedForeignKeys[] = $constraint1;
- $changes++;
- }
-
- foreach ($toFkeys as $constraint2) {
- $tableDifferences->addedForeignKeys[] = $constraint2;
- $changes++;
- }
-
- return $changes ? $tableDifferences : false;
- }
-
- /**
- * Try to find columns that only changed their name, rename operations maybe cheaper than add/drop
- * however ambiguities between different possibilities should not lead to renaming at all.
- *
- * @return void
- */
- private function detectColumnRenamings(TableDiff $tableDifferences)
- {
- $renameCandidates = [];
- foreach ($tableDifferences->addedColumns as $addedColumnName => $addedColumn) {
- foreach ($tableDifferences->removedColumns as $removedColumn) {
- if (count($this->diffColumn($addedColumn, $removedColumn)) !== 0) {
- continue;
- }
-
- $renameCandidates[$addedColumn->getName()][] = [$removedColumn, $addedColumn, $addedColumnName];
- }
- }
-
- foreach ($renameCandidates as $candidateColumns) {
- if (count($candidateColumns) !== 1) {
- continue;
- }
-
- [$removedColumn, $addedColumn] = $candidateColumns[0];
- $removedColumnName = strtolower($removedColumn->getName());
- $addedColumnName = strtolower($addedColumn->getName());
-
- if (isset($tableDifferences->renamedColumns[$removedColumnName])) {
- continue;
- }
-
- $tableDifferences->renamedColumns[$removedColumnName] = $addedColumn;
- unset(
- $tableDifferences->addedColumns[$addedColumnName],
- $tableDifferences->removedColumns[$removedColumnName]
- );
- }
- }
-
- /**
- * Try to find indexes that only changed their name, rename operations maybe cheaper than add/drop
- * however ambiguities between different possibilities should not lead to renaming at all.
- *
- * @return void
- */
- private function detectIndexRenamings(TableDiff $tableDifferences)
- {
- $renameCandidates = [];
-
- // Gather possible rename candidates by comparing each added and removed index based on semantics.
- foreach ($tableDifferences->addedIndexes as $addedIndexName => $addedIndex) {
- foreach ($tableDifferences->removedIndexes as $removedIndex) {
- if ($this->diffIndex($addedIndex, $removedIndex)) {
- continue;
- }
-
- $renameCandidates[$addedIndex->getName()][] = [$removedIndex, $addedIndex, $addedIndexName];
- }
- }
-
- foreach ($renameCandidates as $candidateIndexes) {
- // If the current rename candidate contains exactly one semantically equal index,
- // we can safely rename it.
- // Otherwise it is unclear if a rename action is really intended,
- // therefore we let those ambiguous indexes be added/dropped.
- if (count($candidateIndexes) !== 1) {
- continue;
- }
-
- [$removedIndex, $addedIndex] = $candidateIndexes[0];
-
- $removedIndexName = strtolower($removedIndex->getName());
- $addedIndexName = strtolower($addedIndex->getName());
-
- if (isset($tableDifferences->renamedIndexes[$removedIndexName])) {
- continue;
- }
-
- $tableDifferences->renamedIndexes[$removedIndexName] = $addedIndex;
- unset(
- $tableDifferences->addedIndexes[$addedIndexName],
- $tableDifferences->removedIndexes[$removedIndexName]
- );
- }
- }
-
- /**
- * @return bool
- */
- public function diffForeignKey(ForeignKeyConstraint $key1, ForeignKeyConstraint $key2)
- {
- if (array_map('strtolower', $key1->getUnquotedLocalColumns()) !== array_map('strtolower', $key2->getUnquotedLocalColumns())) {
- return true;
- }
-
- if (array_map('strtolower', $key1->getUnquotedForeignColumns()) !== array_map('strtolower', $key2->getUnquotedForeignColumns())) {
- return true;
- }
-
- if ($key1->getUnqualifiedForeignTableName() !== $key2->getUnqualifiedForeignTableName()) {
- return true;
- }
-
- if ($key1->onUpdate() !== $key2->onUpdate()) {
- return true;
- }
-
- return $key1->onDelete() !== $key2->onDelete();
- }
-
- /**
- * Returns the difference between the fields $field1 and $field2.
- *
- * If there are differences this method returns $field2, otherwise the
- * boolean false.
- *
- * @return string[]
- */
- public function diffColumn(Column $column1, Column $column2)
- {
- $properties1 = $column1->toArray();
- $properties2 = $column2->toArray();
-
- $changedProperties = [];
-
- if (get_class($properties1['type']) !== get_class($properties2['type'])) {
- $changedProperties[] = 'type';
- }
-
- foreach (['notnull', 'unsigned', 'autoincrement'] as $property) {
- if ($properties1[$property] === $properties2[$property]) {
- continue;
- }
-
- $changedProperties[] = $property;
- }
-
- // This is a very nasty hack to make comparator work with the legacy json_array type, which should be killed in v3
- if ($this->isALegacyJsonComparison($properties1['type'], $properties2['type'])) {
- array_shift($changedProperties);
-
- $changedProperties[] = 'comment';
- }
-
- // Null values need to be checked additionally as they tell whether to create or drop a default value.
- // null != 0, null != false, null != '' etc. This affects platform's table alteration SQL generation.
- if (($properties1['default'] === null) !== ($properties2['default'] === null)
- || $properties1['default'] != $properties2['default']) {
- $changedProperties[] = 'default';
- }
-
- if (($properties1['type'] instanceof Types\StringType && ! $properties1['type'] instanceof Types\GuidType) ||
- $properties1['type'] instanceof Types\BinaryType
- ) {
- // check if value of length is set at all, default value assumed otherwise.
- $length1 = $properties1['length'] ?: 255;
- $length2 = $properties2['length'] ?: 255;
- if ($length1 !== $length2) {
- $changedProperties[] = 'length';
- }
-
- if ($properties1['fixed'] !== $properties2['fixed']) {
- $changedProperties[] = 'fixed';
- }
- } elseif ($properties1['type'] instanceof Types\DecimalType) {
- if (($properties1['precision'] ?: 10) !== ($properties2['precision'] ?: 10)) {
- $changedProperties[] = 'precision';
- }
- if ($properties1['scale'] !== $properties2['scale']) {
- $changedProperties[] = 'scale';
- }
- }
-
- // A null value and an empty string are actually equal for a comment so they should not trigger a change.
- if ($properties1['comment'] !== $properties2['comment'] &&
- ! ($properties1['comment'] === null && $properties2['comment'] === '') &&
- ! ($properties2['comment'] === null && $properties1['comment'] === '')
- ) {
- $changedProperties[] = 'comment';
- }
-
- $customOptions1 = $column1->getCustomSchemaOptions();
- $customOptions2 = $column2->getCustomSchemaOptions();
-
- foreach (array_merge(array_keys($customOptions1), array_keys($customOptions2)) as $key) {
- if (! array_key_exists($key, $properties1) || ! array_key_exists($key, $properties2)) {
- $changedProperties[] = $key;
- } elseif ($properties1[$key] !== $properties2[$key]) {
- $changedProperties[] = $key;
- }
- }
-
- $platformOptions1 = $column1->getPlatformOptions();
- $platformOptions2 = $column2->getPlatformOptions();
-
- foreach (array_keys(array_intersect_key($platformOptions1, $platformOptions2)) as $key) {
- if ($properties1[$key] === $properties2[$key]) {
- continue;
- }
-
- $changedProperties[] = $key;
- }
-
- return array_unique($changedProperties);
- }
-
- /**
- * TODO: kill with fire on v3.0
- *
- * @deprecated
- */
- private function isALegacyJsonComparison(Types\Type $one, Types\Type $other) : bool
- {
- if (! $one instanceof Types\JsonType || ! $other instanceof Types\JsonType) {
- return false;
- }
-
- return ( ! $one instanceof Types\JsonArrayType && $other instanceof Types\JsonArrayType)
- || ( ! $other instanceof Types\JsonArrayType && $one instanceof Types\JsonArrayType);
- }
-
- /**
- * Finds the difference between the indexes $index1 and $index2.
- *
- * Compares $index1 with $index2 and returns $index2 if there are any
- * differences or false in case there are no differences.
- *
- * @return bool
- */
- public function diffIndex(Index $index1, Index $index2)
- {
- return ! ($index1->isFullfilledBy($index2) && $index2->isFullfilledBy($index1));
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Constraint.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Constraint.php
deleted file mode 100644
index 65e239ec1..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Constraint.php
+++ /dev/null
@@ -1,43 +0,0 @@
-_platform->getListTablesSQL();
- $sql .= ' AND CREATOR = UPPER(' . $this->_conn->quote($this->_conn->getUsername()) . ')';
-
- $tables = $this->_conn->fetchAll($sql);
-
- return $this->filterAssetNames($this->_getPortableTablesList($tables));
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableColumnDefinition($tableColumn)
- {
- $tableColumn = array_change_key_case($tableColumn, CASE_LOWER);
-
- $length = null;
- $fixed = null;
- $scale = false;
- $precision = false;
-
- $default = null;
-
- if ($tableColumn['default'] !== null && $tableColumn['default'] !== 'NULL') {
- $default = $tableColumn['default'];
-
- if (preg_match('/^\'(.*)\'$/s', $default, $matches)) {
- $default = str_replace("''", "'", $matches[1]);
- }
- }
-
- $type = $this->_platform->getDoctrineTypeMapping($tableColumn['typename']);
-
- if (isset($tableColumn['comment'])) {
- $type = $this->extractDoctrineTypeFromComment($tableColumn['comment'], $type);
- $tableColumn['comment'] = $this->removeDoctrineTypeFromComment($tableColumn['comment'], $type);
- }
-
- switch (strtolower($tableColumn['typename'])) {
- case 'varchar':
- $length = $tableColumn['length'];
- $fixed = false;
- break;
- case 'character':
- $length = $tableColumn['length'];
- $fixed = true;
- break;
- case 'clob':
- $length = $tableColumn['length'];
- break;
- case 'decimal':
- case 'double':
- case 'real':
- $scale = $tableColumn['scale'];
- $precision = $tableColumn['length'];
- break;
- }
-
- $options = [
- 'length' => $length,
- 'unsigned' => false,
- 'fixed' => (bool) $fixed,
- 'default' => $default,
- 'autoincrement' => (bool) $tableColumn['autoincrement'],
- 'notnull' => (bool) ($tableColumn['nulls'] === 'N'),
- 'scale' => null,
- 'precision' => null,
- 'comment' => isset($tableColumn['comment']) && $tableColumn['comment'] !== ''
- ? $tableColumn['comment']
- : null,
- 'platformOptions' => [],
- ];
-
- if ($scale !== null && $precision !== null) {
- $options['scale'] = $scale;
- $options['precision'] = $precision;
- }
-
- return new Column($tableColumn['colname'], Type::getType($type), $options);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTablesList($tables)
- {
- $tableNames = [];
- foreach ($tables as $tableRow) {
- $tableRow = array_change_key_case($tableRow, CASE_LOWER);
- $tableNames[] = $tableRow['name'];
- }
-
- return $tableNames;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableIndexesList($tableIndexRows, $tableName = null)
- {
- foreach ($tableIndexRows as &$tableIndexRow) {
- $tableIndexRow = array_change_key_case($tableIndexRow, CASE_LOWER);
- $tableIndexRow['primary'] = (bool) $tableIndexRow['primary'];
- }
-
- return parent::_getPortableTableIndexesList($tableIndexRows, $tableName);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableForeignKeyDefinition($tableForeignKey)
- {
- return new ForeignKeyConstraint(
- $tableForeignKey['local_columns'],
- $tableForeignKey['foreign_table'],
- $tableForeignKey['foreign_columns'],
- $tableForeignKey['name'],
- $tableForeignKey['options']
- );
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableForeignKeysList($tableForeignKeys)
- {
- $foreignKeys = [];
-
- foreach ($tableForeignKeys as $tableForeignKey) {
- $tableForeignKey = array_change_key_case($tableForeignKey, CASE_LOWER);
-
- if (! isset($foreignKeys[$tableForeignKey['index_name']])) {
- $foreignKeys[$tableForeignKey['index_name']] = [
- 'local_columns' => [$tableForeignKey['local_column']],
- 'foreign_table' => $tableForeignKey['foreign_table'],
- 'foreign_columns' => [$tableForeignKey['foreign_column']],
- 'name' => $tableForeignKey['index_name'],
- 'options' => [
- 'onUpdate' => $tableForeignKey['on_update'],
- 'onDelete' => $tableForeignKey['on_delete'],
- ],
- ];
- } else {
- $foreignKeys[$tableForeignKey['index_name']]['local_columns'][] = $tableForeignKey['local_column'];
- $foreignKeys[$tableForeignKey['index_name']]['foreign_columns'][] = $tableForeignKey['foreign_column'];
- }
- }
-
- return parent::_getPortableTableForeignKeysList($foreignKeys);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableForeignKeyRuleDef($def)
- {
- if ($def === 'C') {
- return 'CASCADE';
- }
-
- if ($def === 'N') {
- return 'SET NULL';
- }
-
- return null;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableViewDefinition($view)
- {
- $view = array_change_key_case($view, CASE_LOWER);
- // sadly this still segfaults on PDO_IBM, see http://pecl.php.net/bugs/bug.php?id=17199
- //$view['text'] = (is_resource($view['text']) ? stream_get_contents($view['text']) : $view['text']);
- if (! is_resource($view['text'])) {
- $pos = strpos($view['text'], ' AS ');
- $sql = substr($view['text'], $pos+4);
- } else {
- $sql = '';
- }
-
- return new View($view['name'], $sql);
- }
-
- public function listTableDetails($tableName) : Table
- {
- $table = parent::listTableDetails($tableName);
-
- /** @var DB2Platform $platform */
- $platform = $this->_platform;
- $sql = $platform->getListTableCommentsSQL($tableName);
-
- $tableOptions = $this->_conn->fetchAssoc($sql);
- $table->addOption('comment', $tableOptions['REMARKS']);
-
- return $table;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/DrizzleSchemaManager.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/DrizzleSchemaManager.php
deleted file mode 100644
index c334db279..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/DrizzleSchemaManager.php
+++ /dev/null
@@ -1,103 +0,0 @@
-_platform->getDoctrineTypeMapping($dbType);
- $type = $this->extractDoctrineTypeFromComment($tableColumn['COLUMN_COMMENT'], $type);
- $tableColumn['COLUMN_COMMENT'] = $this->removeDoctrineTypeFromComment($tableColumn['COLUMN_COMMENT'], $type);
-
- $options = [
- 'notnull' => ! (bool) $tableColumn['IS_NULLABLE'],
- 'length' => (int) $tableColumn['CHARACTER_MAXIMUM_LENGTH'],
- 'default' => $tableColumn['COLUMN_DEFAULT'] ?? null,
- 'autoincrement' => (bool) $tableColumn['IS_AUTO_INCREMENT'],
- 'scale' => (int) $tableColumn['NUMERIC_SCALE'],
- 'precision' => (int) $tableColumn['NUMERIC_PRECISION'],
- 'comment' => isset($tableColumn['COLUMN_COMMENT']) && $tableColumn['COLUMN_COMMENT'] !== ''
- ? $tableColumn['COLUMN_COMMENT']
- : null,
- ];
-
- $column = new Column($tableColumn['COLUMN_NAME'], Type::getType($type), $options);
-
- if (! empty($tableColumn['COLLATION_NAME'])) {
- $column->setPlatformOption('collation', $tableColumn['COLLATION_NAME']);
- }
-
- return $column;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableDatabaseDefinition($database)
- {
- return $database['SCHEMA_NAME'];
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableDefinition($table)
- {
- return $table['TABLE_NAME'];
- }
-
- /**
- * {@inheritdoc}
- */
- public function _getPortableTableForeignKeyDefinition($tableForeignKey)
- {
- $columns = [];
- foreach (explode(',', $tableForeignKey['CONSTRAINT_COLUMNS']) as $value) {
- $columns[] = trim($value, ' `');
- }
-
- $refColumns = [];
- foreach (explode(',', $tableForeignKey['REFERENCED_TABLE_COLUMNS']) as $value) {
- $refColumns[] = trim($value, ' `');
- }
-
- return new ForeignKeyConstraint(
- $columns,
- $tableForeignKey['REFERENCED_TABLE_NAME'],
- $refColumns,
- $tableForeignKey['CONSTRAINT_NAME'],
- [
- 'onUpdate' => $tableForeignKey['UPDATE_RULE'],
- 'onDelete' => $tableForeignKey['DELETE_RULE'],
- ]
- );
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableIndexesList($tableIndexes, $tableName = null)
- {
- $indexes = [];
- foreach ($tableIndexes as $k) {
- $k['primary'] = (bool) $k['primary'];
- $indexes[] = $k;
- }
-
- return parent::_getPortableTableIndexesList($indexes, $tableName);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/ForeignKeyConstraint.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/ForeignKeyConstraint.php
deleted file mode 100644
index 3c6585e46..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/ForeignKeyConstraint.php
+++ /dev/null
@@ -1,393 +0,0 @@
- Identifier)
- *
- * @var Identifier[]
- */
- protected $_localColumnNames;
-
- /**
- * Table or asset identifier instance of the referenced table name the foreign key constraint is associated with.
- *
- * @var Table|Identifier
- */
- protected $_foreignTableName;
-
- /**
- * Asset identifier instances of the referenced table column names the foreign key constraint is associated with.
- * array($columnName => Identifier)
- *
- * @var Identifier[]
- */
- protected $_foreignColumnNames;
-
- /**
- * Options associated with the foreign key constraint.
- *
- * @var mixed[]
- */
- protected $_options;
-
- /**
- * Initializes the foreign key constraint.
- *
- * @param string[] $localColumnNames Names of the referencing table columns.
- * @param Table|string $foreignTableName Referenced table.
- * @param string[] $foreignColumnNames Names of the referenced table columns.
- * @param string|null $name Name of the foreign key constraint.
- * @param mixed[] $options Options associated with the foreign key constraint.
- */
- public function __construct(array $localColumnNames, $foreignTableName, array $foreignColumnNames, $name = null, array $options = [])
- {
- if ($name !== null) {
- $this->_setName($name);
- }
-
- $this->_localColumnNames = $this->createIdentifierMap($localColumnNames);
-
- if ($foreignTableName instanceof Table) {
- $this->_foreignTableName = $foreignTableName;
- } else {
- $this->_foreignTableName = new Identifier($foreignTableName);
- }
-
- $this->_foreignColumnNames = $this->createIdentifierMap($foreignColumnNames);
- $this->_options = $options;
- }
-
- /**
- * @param string[] $names
- *
- * @return Identifier[]
- */
- private function createIdentifierMap(array $names) : array
- {
- $identifiers = [];
-
- foreach ($names as $name) {
- $identifiers[$name] = new Identifier($name);
- }
-
- return $identifiers;
- }
-
- /**
- * Returns the name of the referencing table
- * the foreign key constraint is associated with.
- *
- * @return string
- */
- public function getLocalTableName()
- {
- return $this->_localTable->getName();
- }
-
- /**
- * Sets the Table instance of the referencing table
- * the foreign key constraint is associated with.
- *
- * @param Table $table Instance of the referencing table.
- *
- * @return void
- */
- public function setLocalTable(Table $table)
- {
- $this->_localTable = $table;
- }
-
- /**
- * @return Table
- */
- public function getLocalTable()
- {
- return $this->_localTable;
- }
-
- /**
- * Returns the names of the referencing table columns
- * the foreign key constraint is associated with.
- *
- * @return string[]
- */
- public function getLocalColumns()
- {
- return array_keys($this->_localColumnNames);
- }
-
- /**
- * Returns the quoted representation of the referencing table column names
- * the foreign key constraint is associated with.
- *
- * But only if they were defined with one or the referencing table column name
- * is a keyword reserved by the platform.
- * Otherwise the plain unquoted value as inserted is returned.
- *
- * @param AbstractPlatform $platform The platform to use for quotation.
- *
- * @return string[]
- */
- public function getQuotedLocalColumns(AbstractPlatform $platform)
- {
- $columns = [];
-
- foreach ($this->_localColumnNames as $column) {
- $columns[] = $column->getQuotedName($platform);
- }
-
- return $columns;
- }
-
- /**
- * Returns unquoted representation of local table column names for comparison with other FK
- *
- * @return string[]
- */
- public function getUnquotedLocalColumns()
- {
- return array_map([$this, 'trimQuotes'], $this->getLocalColumns());
- }
-
- /**
- * Returns unquoted representation of foreign table column names for comparison with other FK
- *
- * @return string[]
- */
- public function getUnquotedForeignColumns()
- {
- return array_map([$this, 'trimQuotes'], $this->getForeignColumns());
- }
-
- /**
- * {@inheritdoc}
- *
- * @see getLocalColumns
- */
- public function getColumns()
- {
- return $this->getLocalColumns();
- }
-
- /**
- * Returns the quoted representation of the referencing table column names
- * the foreign key constraint is associated with.
- *
- * But only if they were defined with one or the referencing table column name
- * is a keyword reserved by the platform.
- * Otherwise the plain unquoted value as inserted is returned.
- *
- * @see getQuotedLocalColumns
- *
- * @param AbstractPlatform $platform The platform to use for quotation.
- *
- * @return string[]
- */
- public function getQuotedColumns(AbstractPlatform $platform)
- {
- return $this->getQuotedLocalColumns($platform);
- }
-
- /**
- * Returns the name of the referenced table
- * the foreign key constraint is associated with.
- *
- * @return string
- */
- public function getForeignTableName()
- {
- return $this->_foreignTableName->getName();
- }
-
- /**
- * Returns the non-schema qualified foreign table name.
- *
- * @return string
- */
- public function getUnqualifiedForeignTableName()
- {
- $name = $this->_foreignTableName->getName();
- $position = strrpos($name, '.');
-
- if ($position !== false) {
- $name = substr($name, $position);
- }
-
- return strtolower($name);
- }
-
- /**
- * Returns the quoted representation of the referenced table name
- * the foreign key constraint is associated with.
- *
- * But only if it was defined with one or the referenced table name
- * is a keyword reserved by the platform.
- * Otherwise the plain unquoted value as inserted is returned.
- *
- * @param AbstractPlatform $platform The platform to use for quotation.
- *
- * @return string
- */
- public function getQuotedForeignTableName(AbstractPlatform $platform)
- {
- return $this->_foreignTableName->getQuotedName($platform);
- }
-
- /**
- * Returns the names of the referenced table columns
- * the foreign key constraint is associated with.
- *
- * @return string[]
- */
- public function getForeignColumns()
- {
- return array_keys($this->_foreignColumnNames);
- }
-
- /**
- * Returns the quoted representation of the referenced table column names
- * the foreign key constraint is associated with.
- *
- * But only if they were defined with one or the referenced table column name
- * is a keyword reserved by the platform.
- * Otherwise the plain unquoted value as inserted is returned.
- *
- * @param AbstractPlatform $platform The platform to use for quotation.
- *
- * @return string[]
- */
- public function getQuotedForeignColumns(AbstractPlatform $platform)
- {
- $columns = [];
-
- foreach ($this->_foreignColumnNames as $column) {
- $columns[] = $column->getQuotedName($platform);
- }
-
- return $columns;
- }
-
- /**
- * Returns whether or not a given option
- * is associated with the foreign key constraint.
- *
- * @param string $name Name of the option to check.
- *
- * @return bool
- */
- public function hasOption($name)
- {
- return isset($this->_options[$name]);
- }
-
- /**
- * Returns an option associated with the foreign key constraint.
- *
- * @param string $name Name of the option the foreign key constraint is associated with.
- *
- * @return mixed
- */
- public function getOption($name)
- {
- return $this->_options[$name];
- }
-
- /**
- * Returns the options associated with the foreign key constraint.
- *
- * @return mixed[]
- */
- public function getOptions()
- {
- return $this->_options;
- }
-
- /**
- * Returns the referential action for UPDATE operations
- * on the referenced table the foreign key constraint is associated with.
- *
- * @return string|null
- */
- public function onUpdate()
- {
- return $this->onEvent('onUpdate');
- }
-
- /**
- * Returns the referential action for DELETE operations
- * on the referenced table the foreign key constraint is associated with.
- *
- * @return string|null
- */
- public function onDelete()
- {
- return $this->onEvent('onDelete');
- }
-
- /**
- * Returns the referential action for a given database operation
- * on the referenced table the foreign key constraint is associated with.
- *
- * @param string $event Name of the database operation/event to return the referential action for.
- *
- * @return string|null
- */
- private function onEvent($event)
- {
- if (isset($this->_options[$event])) {
- $onEvent = strtoupper($this->_options[$event]);
-
- if (! in_array($onEvent, ['NO ACTION', 'RESTRICT'])) {
- return $onEvent;
- }
- }
-
- return false;
- }
-
- /**
- * Checks whether this foreign key constraint intersects the given index columns.
- *
- * Returns `true` if at least one of this foreign key's local columns
- * matches one of the given index's columns, `false` otherwise.
- *
- * @param Index $index The index to be checked against.
- *
- * @return bool
- */
- public function intersectsIndexColumns(Index $index)
- {
- foreach ($index->getColumns() as $indexColumn) {
- foreach ($this->_localColumnNames as $localColumn) {
- if (strtolower($indexColumn) === strtolower($localColumn->getName())) {
- return true;
- }
- }
- }
-
- return false;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Identifier.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Identifier.php
deleted file mode 100644
index f34465e9e..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Identifier.php
+++ /dev/null
@@ -1,27 +0,0 @@
-_setName($identifier);
-
- if (! $quote || $this->_quoted) {
- return;
- }
-
- $this->_setName('"' . $this->getName() . '"');
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Index.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Index.php
deleted file mode 100644
index 7a31c7824..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Index.php
+++ /dev/null
@@ -1,359 +0,0 @@
- Identifier)
- *
- * @var Identifier[]
- */
- protected $_columns = [];
-
- /** @var bool */
- protected $_isUnique = false;
-
- /** @var bool */
- protected $_isPrimary = false;
-
- /**
- * Platform specific flags for indexes.
- * array($flagName => true)
- *
- * @var true[]
- */
- protected $_flags = [];
-
- /**
- * Platform specific options
- *
- * @todo $_flags should eventually be refactored into options
- * @var mixed[]
- */
- private $options = [];
-
- /**
- * @param string $indexName
- * @param string[] $columns
- * @param bool $isUnique
- * @param bool $isPrimary
- * @param string[] $flags
- * @param mixed[] $options
- */
- public function __construct($indexName, array $columns, $isUnique = false, $isPrimary = false, array $flags = [], array $options = [])
- {
- $isUnique = $isUnique || $isPrimary;
-
- $this->_setName($indexName);
- $this->_isUnique = $isUnique;
- $this->_isPrimary = $isPrimary;
- $this->options = $options;
-
- foreach ($columns as $column) {
- $this->_addColumn($column);
- }
- foreach ($flags as $flag) {
- $this->addFlag($flag);
- }
- }
-
- /**
- * @param string $column
- *
- * @return void
- *
- * @throws InvalidArgumentException
- */
- protected function _addColumn($column)
- {
- if (! is_string($column)) {
- throw new InvalidArgumentException('Expecting a string as Index Column');
- }
-
- $this->_columns[$column] = new Identifier($column);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getColumns()
- {
- return array_keys($this->_columns);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getQuotedColumns(AbstractPlatform $platform)
- {
- $subParts = $platform->supportsColumnLengthIndexes() && $this->hasOption('lengths')
- ? $this->getOption('lengths') : [];
-
- $columns = [];
-
- foreach ($this->_columns as $column) {
- $length = array_shift($subParts);
-
- $quotedColumn = $column->getQuotedName($platform);
-
- if ($length !== null) {
- $quotedColumn .= '(' . $length . ')';
- }
-
- $columns[] = $quotedColumn;
- }
-
- return $columns;
- }
-
- /**
- * @return string[]
- */
- public function getUnquotedColumns()
- {
- return array_map([$this, 'trimQuotes'], $this->getColumns());
- }
-
- /**
- * Is the index neither unique nor primary key?
- *
- * @return bool
- */
- public function isSimpleIndex()
- {
- return ! $this->_isPrimary && ! $this->_isUnique;
- }
-
- /**
- * @return bool
- */
- public function isUnique()
- {
- return $this->_isUnique;
- }
-
- /**
- * @return bool
- */
- public function isPrimary()
- {
- return $this->_isPrimary;
- }
-
- /**
- * @param string $columnName
- * @param int $pos
- *
- * @return bool
- */
- public function hasColumnAtPosition($columnName, $pos = 0)
- {
- $columnName = $this->trimQuotes(strtolower($columnName));
- $indexColumns = array_map('strtolower', $this->getUnquotedColumns());
-
- return array_search($columnName, $indexColumns) === $pos;
- }
-
- /**
- * Checks if this index exactly spans the given column names in the correct order.
- *
- * @param string[] $columnNames
- *
- * @return bool
- */
- public function spansColumns(array $columnNames)
- {
- $columns = $this->getColumns();
- $numberOfColumns = count($columns);
- $sameColumns = true;
-
- for ($i = 0; $i < $numberOfColumns; $i++) {
- if (isset($columnNames[$i]) && $this->trimQuotes(strtolower($columns[$i])) === $this->trimQuotes(strtolower($columnNames[$i]))) {
- continue;
- }
-
- $sameColumns = false;
- }
-
- return $sameColumns;
- }
-
- /**
- * Checks if the other index already fulfills all the indexing and constraint needs of the current one.
- *
- * @return bool
- */
- public function isFullfilledBy(Index $other)
- {
- // allow the other index to be equally large only. It being larger is an option
- // but it creates a problem with scenarios of the kind PRIMARY KEY(foo,bar) UNIQUE(foo)
- if (count($other->getColumns()) !== count($this->getColumns())) {
- return false;
- }
-
- // Check if columns are the same, and even in the same order
- $sameColumns = $this->spansColumns($other->getColumns());
-
- if ($sameColumns) {
- if (! $this->samePartialIndex($other)) {
- return false;
- }
-
- if (! $this->hasSameColumnLengths($other)) {
- return false;
- }
-
- if (! $this->isUnique() && ! $this->isPrimary()) {
- // this is a special case: If the current key is neither primary or unique, any unique or
- // primary key will always have the same effect for the index and there cannot be any constraint
- // overlaps. This means a primary or unique index can always fulfill the requirements of just an
- // index that has no constraints.
- return true;
- }
-
- if ($other->isPrimary() !== $this->isPrimary()) {
- return false;
- }
-
- return $other->isUnique() === $this->isUnique();
- }
-
- return false;
- }
-
- /**
- * Detects if the other index is a non-unique, non primary index that can be overwritten by this one.
- *
- * @return bool
- */
- public function overrules(Index $other)
- {
- if ($other->isPrimary()) {
- return false;
- }
-
- if ($this->isSimpleIndex() && $other->isUnique()) {
- return false;
- }
-
- return $this->spansColumns($other->getColumns()) && ($this->isPrimary() || $this->isUnique()) && $this->samePartialIndex($other);
- }
-
- /**
- * Returns platform specific flags for indexes.
- *
- * @return string[]
- */
- public function getFlags()
- {
- return array_keys($this->_flags);
- }
-
- /**
- * Adds Flag for an index that translates to platform specific handling.
- *
- * @param string $flag
- *
- * @return Index
- *
- * @example $index->addFlag('CLUSTERED')
- */
- public function addFlag($flag)
- {
- $this->_flags[strtolower($flag)] = true;
-
- return $this;
- }
-
- /**
- * Does this index have a specific flag?
- *
- * @param string $flag
- *
- * @return bool
- */
- public function hasFlag($flag)
- {
- return isset($this->_flags[strtolower($flag)]);
- }
-
- /**
- * Removes a flag.
- *
- * @param string $flag
- *
- * @return void
- */
- public function removeFlag($flag)
- {
- unset($this->_flags[strtolower($flag)]);
- }
-
- /**
- * @param string $name
- *
- * @return bool
- */
- public function hasOption($name)
- {
- return isset($this->options[strtolower($name)]);
- }
-
- /**
- * @param string $name
- *
- * @return mixed
- */
- public function getOption($name)
- {
- return $this->options[strtolower($name)];
- }
-
- /**
- * @return mixed[]
- */
- public function getOptions()
- {
- return $this->options;
- }
-
- /**
- * Return whether the two indexes have the same partial index
- *
- * @return bool
- */
- private function samePartialIndex(Index $other)
- {
- if ($this->hasOption('where') && $other->hasOption('where') && $this->getOption('where') === $other->getOption('where')) {
- return true;
- }
-
- return ! $this->hasOption('where') && ! $other->hasOption('where');
- }
-
- /**
- * Returns whether the index has the same column lengths as the other
- */
- private function hasSameColumnLengths(self $other) : bool
- {
- $filter = static function (?int $length) : bool {
- return $length !== null;
- };
-
- return array_filter($this->options['lengths'] ?? [], $filter)
- === array_filter($other->options['lengths'] ?? [], $filter);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/MySqlSchemaManager.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/MySqlSchemaManager.php
deleted file mode 100644
index 9522faf6a..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/MySqlSchemaManager.php
+++ /dev/null
@@ -1,351 +0,0 @@
- "\0",
- "\\'" => "'",
- '\\"' => '"',
- '\\b' => "\b",
- '\\n' => "\n",
- '\\r' => "\r",
- '\\t' => "\t",
- '\\Z' => "\x1a",
- '\\\\' => '\\',
- '\\%' => '%',
- '\\_' => '_',
-
- // Internally, MariaDB escapes single quotes using the standard syntax
- "''" => "'",
- ];
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableViewDefinition($view)
- {
- return new View($view['TABLE_NAME'], $view['VIEW_DEFINITION']);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableDefinition($table)
- {
- return array_shift($table);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableUserDefinition($user)
- {
- return [
- 'user' => $user['User'],
- 'password' => $user['Password'],
- ];
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableIndexesList($tableIndexes, $tableName = null)
- {
- foreach ($tableIndexes as $k => $v) {
- $v = array_change_key_case($v, CASE_LOWER);
- if ($v['key_name'] === 'PRIMARY') {
- $v['primary'] = true;
- } else {
- $v['primary'] = false;
- }
- if (strpos($v['index_type'], 'FULLTEXT') !== false) {
- $v['flags'] = ['FULLTEXT'];
- } elseif (strpos($v['index_type'], 'SPATIAL') !== false) {
- $v['flags'] = ['SPATIAL'];
- }
- $v['length'] = isset($v['sub_part']) ? (int) $v['sub_part'] : null;
-
- $tableIndexes[$k] = $v;
- }
-
- return parent::_getPortableTableIndexesList($tableIndexes, $tableName);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableDatabaseDefinition($database)
- {
- return $database['Database'];
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableColumnDefinition($tableColumn)
- {
- $tableColumn = array_change_key_case($tableColumn, CASE_LOWER);
-
- $dbType = strtolower($tableColumn['type']);
- $dbType = strtok($dbType, '(), ');
- assert(is_string($dbType));
-
- $length = $tableColumn['length'] ?? strtok('(), ');
-
- $fixed = null;
-
- if (! isset($tableColumn['name'])) {
- $tableColumn['name'] = '';
- }
-
- $scale = null;
- $precision = null;
-
- $type = $this->_platform->getDoctrineTypeMapping($dbType);
-
- // In cases where not connected to a database DESCRIBE $table does not return 'Comment'
- if (isset($tableColumn['comment'])) {
- $type = $this->extractDoctrineTypeFromComment($tableColumn['comment'], $type);
- $tableColumn['comment'] = $this->removeDoctrineTypeFromComment($tableColumn['comment'], $type);
- }
-
- switch ($dbType) {
- case 'char':
- case 'binary':
- $fixed = true;
- break;
- case 'float':
- case 'double':
- case 'real':
- case 'numeric':
- case 'decimal':
- if (preg_match('([A-Za-z]+\(([0-9]+)\,([0-9]+)\))', $tableColumn['type'], $match)) {
- $precision = $match[1];
- $scale = $match[2];
- $length = null;
- }
- break;
- case 'tinytext':
- $length = MySqlPlatform::LENGTH_LIMIT_TINYTEXT;
- break;
- case 'text':
- $length = MySqlPlatform::LENGTH_LIMIT_TEXT;
- break;
- case 'mediumtext':
- $length = MySqlPlatform::LENGTH_LIMIT_MEDIUMTEXT;
- break;
- case 'tinyblob':
- $length = MySqlPlatform::LENGTH_LIMIT_TINYBLOB;
- break;
- case 'blob':
- $length = MySqlPlatform::LENGTH_LIMIT_BLOB;
- break;
- case 'mediumblob':
- $length = MySqlPlatform::LENGTH_LIMIT_MEDIUMBLOB;
- break;
- case 'tinyint':
- case 'smallint':
- case 'mediumint':
- case 'int':
- case 'integer':
- case 'bigint':
- case 'year':
- $length = null;
- break;
- }
-
- if ($this->_platform instanceof MariaDb1027Platform) {
- $columnDefault = $this->getMariaDb1027ColumnDefault($this->_platform, $tableColumn['default']);
- } else {
- $columnDefault = $tableColumn['default'];
- }
-
- $options = [
- 'length' => $length !== null ? (int) $length : null,
- 'unsigned' => strpos($tableColumn['type'], 'unsigned') !== false,
- 'fixed' => (bool) $fixed,
- 'default' => $columnDefault,
- 'notnull' => $tableColumn['null'] !== 'YES',
- 'scale' => null,
- 'precision' => null,
- 'autoincrement' => strpos($tableColumn['extra'], 'auto_increment') !== false,
- 'comment' => isset($tableColumn['comment']) && $tableColumn['comment'] !== ''
- ? $tableColumn['comment']
- : null,
- ];
-
- if ($scale !== null && $precision !== null) {
- $options['scale'] = (int) $scale;
- $options['precision'] = (int) $precision;
- }
-
- $column = new Column($tableColumn['field'], Type::getType($type), $options);
-
- if (isset($tableColumn['characterset'])) {
- $column->setPlatformOption('charset', $tableColumn['characterset']);
- }
- if (isset($tableColumn['collation'])) {
- $column->setPlatformOption('collation', $tableColumn['collation']);
- }
-
- return $column;
- }
-
- /**
- * Return Doctrine/Mysql-compatible column default values for MariaDB 10.2.7+ servers.
- *
- * - Since MariaDb 10.2.7 column defaults stored in information_schema are now quoted
- * to distinguish them from expressions (see MDEV-10134).
- * - CURRENT_TIMESTAMP, CURRENT_TIME, CURRENT_DATE are stored in information_schema
- * as current_timestamp(), currdate(), currtime()
- * - Quoted 'NULL' is not enforced by Maria, it is technically possible to have
- * null in some circumstances (see https://jira.mariadb.org/browse/MDEV-14053)
- * - \' is always stored as '' in information_schema (normalized)
- *
- * @link https://mariadb.com/kb/en/library/information-schema-columns-table/
- * @link https://jira.mariadb.org/browse/MDEV-13132
- *
- * @param string|null $columnDefault default value as stored in information_schema for MariaDB >= 10.2.7
- */
- private function getMariaDb1027ColumnDefault(MariaDb1027Platform $platform, ?string $columnDefault) : ?string
- {
- if ($columnDefault === 'NULL' || $columnDefault === null) {
- return null;
- }
-
- if (preg_match('/^\'(.*)\'$/', $columnDefault, $matches)) {
- return strtr($matches[1], self::MARIADB_ESCAPE_SEQUENCES);
- }
-
- switch ($columnDefault) {
- case 'current_timestamp()':
- return $platform->getCurrentTimestampSQL();
- case 'curdate()':
- return $platform->getCurrentDateSQL();
- case 'curtime()':
- return $platform->getCurrentTimeSQL();
- }
-
- return $columnDefault;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableForeignKeysList($tableForeignKeys)
- {
- $list = [];
- foreach ($tableForeignKeys as $value) {
- $value = array_change_key_case($value, CASE_LOWER);
- if (! isset($list[$value['constraint_name']])) {
- if (! isset($value['delete_rule']) || $value['delete_rule'] === 'RESTRICT') {
- $value['delete_rule'] = null;
- }
- if (! isset($value['update_rule']) || $value['update_rule'] === 'RESTRICT') {
- $value['update_rule'] = null;
- }
-
- $list[$value['constraint_name']] = [
- 'name' => $value['constraint_name'],
- 'local' => [],
- 'foreign' => [],
- 'foreignTable' => $value['referenced_table_name'],
- 'onDelete' => $value['delete_rule'],
- 'onUpdate' => $value['update_rule'],
- ];
- }
- $list[$value['constraint_name']]['local'][] = $value['column_name'];
- $list[$value['constraint_name']]['foreign'][] = $value['referenced_column_name'];
- }
-
- $result = [];
- foreach ($list as $constraint) {
- $result[] = new ForeignKeyConstraint(
- array_values($constraint['local']),
- $constraint['foreignTable'],
- array_values($constraint['foreign']),
- $constraint['name'],
- [
- 'onDelete' => $constraint['onDelete'],
- 'onUpdate' => $constraint['onUpdate'],
- ]
- );
- }
-
- return $result;
- }
-
- public function listTableDetails($tableName)
- {
- $table = parent::listTableDetails($tableName);
-
- /** @var MySqlPlatform $platform */
- $platform = $this->_platform;
- $sql = $platform->getListTableMetadataSQL($tableName);
-
- $tableOptions = $this->_conn->fetchAssoc($sql);
-
- if ($tableOptions === false) {
- return $table;
- }
-
- $table->addOption('engine', $tableOptions['ENGINE']);
-
- if ($tableOptions['TABLE_COLLATION'] !== null) {
- $table->addOption('collation', $tableOptions['TABLE_COLLATION']);
- }
-
- if ($tableOptions['AUTO_INCREMENT'] !== null) {
- $table->addOption('autoincrement', $tableOptions['AUTO_INCREMENT']);
- }
-
- $table->addOption('comment', $tableOptions['TABLE_COMMENT']);
- $table->addOption('create_options', $this->parseCreateOptions($tableOptions['CREATE_OPTIONS']));
-
- return $table;
- }
-
- /**
- * @return string[]|true[]
- */
- private function parseCreateOptions(?string $string) : array
- {
- $options = [];
-
- if ($string === null || $string === '') {
- return $options;
- }
-
- foreach (explode(' ', $string) as $pair) {
- $parts = explode('=', $pair, 2);
-
- $options[$parts[0]] = $parts[1] ?? true;
- }
-
- return $options;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/OracleSchemaManager.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/OracleSchemaManager.php
deleted file mode 100644
index afe610ddb..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/OracleSchemaManager.php
+++ /dev/null
@@ -1,406 +0,0 @@
-getPrevious();
- assert($exception instanceof Throwable);
-
- if (! $exception instanceof DriverException) {
- throw $exception;
- }
-
- // If we have a error code 1940 (ORA-01940), the drop database operation failed
- // because of active connections on the database.
- // To force dropping the database, we first have to close all active connections
- // on that database and issue the drop database operation again.
- if ($exception->getErrorCode() !== 1940) {
- throw $exception;
- }
-
- $this->killUserSessions($database);
-
- parent::dropDatabase($database);
- }
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableViewDefinition($view)
- {
- $view = array_change_key_case($view, CASE_LOWER);
-
- return new View($this->getQuotedIdentifierName($view['view_name']), $view['text']);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableUserDefinition($user)
- {
- $user = array_change_key_case($user, CASE_LOWER);
-
- return [
- 'user' => $user['username'],
- ];
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableDefinition($table)
- {
- $table = array_change_key_case($table, CASE_LOWER);
-
- return $this->getQuotedIdentifierName($table['table_name']);
- }
-
- /**
- * {@inheritdoc}
- *
- * @link http://ezcomponents.org/docs/api/trunk/DatabaseSchema/ezcDbSchemaPgsqlReader.html
- */
- protected function _getPortableTableIndexesList($tableIndexes, $tableName = null)
- {
- $indexBuffer = [];
- foreach ($tableIndexes as $tableIndex) {
- $tableIndex = array_change_key_case($tableIndex, CASE_LOWER);
-
- $keyName = strtolower($tableIndex['name']);
- $buffer = [];
-
- if (strtolower($tableIndex['is_primary']) === 'p') {
- $keyName = 'primary';
- $buffer['primary'] = true;
- $buffer['non_unique'] = false;
- } else {
- $buffer['primary'] = false;
- $buffer['non_unique'] = ! $tableIndex['is_unique'];
- }
- $buffer['key_name'] = $keyName;
- $buffer['column_name'] = $this->getQuotedIdentifierName($tableIndex['column_name']);
- $indexBuffer[] = $buffer;
- }
-
- return parent::_getPortableTableIndexesList($indexBuffer, $tableName);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableColumnDefinition($tableColumn)
- {
- $tableColumn = array_change_key_case($tableColumn, CASE_LOWER);
-
- $dbType = strtolower($tableColumn['data_type']);
- if (strpos($dbType, 'timestamp(') === 0) {
- if (strpos($dbType, 'with time zone')) {
- $dbType = 'timestamptz';
- } else {
- $dbType = 'timestamp';
- }
- }
-
- $unsigned = $fixed = $precision = $scale = $length = null;
-
- if (! isset($tableColumn['column_name'])) {
- $tableColumn['column_name'] = '';
- }
-
- // Default values returned from database sometimes have trailing spaces.
- $tableColumn['data_default'] = trim($tableColumn['data_default']);
-
- if ($tableColumn['data_default'] === '' || $tableColumn['data_default'] === 'NULL') {
- $tableColumn['data_default'] = null;
- }
-
- if ($tableColumn['data_default'] !== null) {
- // Default values returned from database are represented as literal expressions
- if (preg_match('/^\'(.*)\'$/s', $tableColumn['data_default'], $matches)) {
- $tableColumn['data_default'] = str_replace("''", "'", $matches[1]);
- }
- }
-
- if ($tableColumn['data_precision'] !== null) {
- $precision = (int) $tableColumn['data_precision'];
- }
-
- if ($tableColumn['data_scale'] !== null) {
- $scale = (int) $tableColumn['data_scale'];
- }
-
- $type = $this->_platform->getDoctrineTypeMapping($dbType);
- $type = $this->extractDoctrineTypeFromComment($tableColumn['comments'], $type);
- $tableColumn['comments'] = $this->removeDoctrineTypeFromComment($tableColumn['comments'], $type);
-
- switch ($dbType) {
- case 'number':
- if ($precision === 20 && $scale === 0) {
- $type = 'bigint';
- } elseif ($precision === 5 && $scale === 0) {
- $type = 'smallint';
- } elseif ($precision === 1 && $scale === 0) {
- $type = 'boolean';
- } elseif ($scale > 0) {
- $type = 'decimal';
- }
-
- break;
- case 'varchar':
- case 'varchar2':
- case 'nvarchar2':
- $length = $tableColumn['char_length'];
- $fixed = false;
- break;
- case 'char':
- case 'nchar':
- $length = $tableColumn['char_length'];
- $fixed = true;
- break;
- }
-
- $options = [
- 'notnull' => (bool) ($tableColumn['nullable'] === 'N'),
- 'fixed' => (bool) $fixed,
- 'unsigned' => (bool) $unsigned,
- 'default' => $tableColumn['data_default'],
- 'length' => $length,
- 'precision' => $precision,
- 'scale' => $scale,
- 'comment' => isset($tableColumn['comments']) && $tableColumn['comments'] !== ''
- ? $tableColumn['comments']
- : null,
- ];
-
- return new Column($this->getQuotedIdentifierName($tableColumn['column_name']), Type::getType($type), $options);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableForeignKeysList($tableForeignKeys)
- {
- $list = [];
- foreach ($tableForeignKeys as $value) {
- $value = array_change_key_case($value, CASE_LOWER);
- if (! isset($list[$value['constraint_name']])) {
- if ($value['delete_rule'] === 'NO ACTION') {
- $value['delete_rule'] = null;
- }
-
- $list[$value['constraint_name']] = [
- 'name' => $this->getQuotedIdentifierName($value['constraint_name']),
- 'local' => [],
- 'foreign' => [],
- 'foreignTable' => $value['references_table'],
- 'onDelete' => $value['delete_rule'],
- ];
- }
-
- $localColumn = $this->getQuotedIdentifierName($value['local_column']);
- $foreignColumn = $this->getQuotedIdentifierName($value['foreign_column']);
-
- $list[$value['constraint_name']]['local'][$value['position']] = $localColumn;
- $list[$value['constraint_name']]['foreign'][$value['position']] = $foreignColumn;
- }
-
- $result = [];
- foreach ($list as $constraint) {
- $result[] = new ForeignKeyConstraint(
- array_values($constraint['local']),
- $this->getQuotedIdentifierName($constraint['foreignTable']),
- array_values($constraint['foreign']),
- $this->getQuotedIdentifierName($constraint['name']),
- ['onDelete' => $constraint['onDelete']]
- );
- }
-
- return $result;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableSequenceDefinition($sequence)
- {
- $sequence = array_change_key_case($sequence, CASE_LOWER);
-
- return new Sequence(
- $this->getQuotedIdentifierName($sequence['sequence_name']),
- (int) $sequence['increment_by'],
- (int) $sequence['min_value']
- );
- }
-
- /**
- * {@inheritdoc}
- *
- * @deprecated
- */
- protected function _getPortableFunctionDefinition($function)
- {
- $function = array_change_key_case($function, CASE_LOWER);
-
- return $function['name'];
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableDatabaseDefinition($database)
- {
- $database = array_change_key_case($database, CASE_LOWER);
-
- return $database['username'];
- }
-
- /**
- * {@inheritdoc}
- *
- * Calling this method without an argument or by passing NULL is deprecated.
- */
- public function createDatabase($database = null)
- {
- if ($database === null) {
- $database = $this->_conn->getDatabase();
- }
-
- $params = $this->_conn->getParams();
- $username = $database;
- $password = $params['password'];
-
- $query = 'CREATE USER ' . $username . ' IDENTIFIED BY ' . $password;
- $this->_conn->executeUpdate($query);
-
- $query = 'GRANT DBA TO ' . $username;
- $this->_conn->executeUpdate($query);
- }
-
- /**
- * @param string $table
- *
- * @return bool
- */
- public function dropAutoincrement($table)
- {
- assert($this->_platform instanceof OraclePlatform);
-
- $sql = $this->_platform->getDropAutoincrementSql($table);
- foreach ($sql as $query) {
- $this->_conn->executeUpdate($query);
- }
-
- return true;
- }
-
- /**
- * {@inheritdoc}
- */
- public function dropTable($name)
- {
- $this->tryMethod('dropAutoincrement', $name);
-
- parent::dropTable($name);
- }
-
- /**
- * Returns the quoted representation of the given identifier name.
- *
- * Quotes non-uppercase identifiers explicitly to preserve case
- * and thus make references to the particular identifier work.
- *
- * @param string $identifier The identifier to quote.
- *
- * @return string The quoted identifier.
- */
- private function getQuotedIdentifierName($identifier)
- {
- if (preg_match('/[a-z]/', $identifier)) {
- return $this->_platform->quoteIdentifier($identifier);
- }
-
- return $identifier;
- }
-
- /**
- * Kills sessions connected with the given user.
- *
- * This is useful to force DROP USER operations which could fail because of active user sessions.
- *
- * @param string $user The name of the user to kill sessions for.
- *
- * @return void
- */
- private function killUserSessions($user)
- {
- $sql = <<_conn->fetchAll($sql, [strtoupper($user)]);
-
- foreach ($activeUserSessions as $activeUserSession) {
- $activeUserSession = array_change_key_case($activeUserSession, CASE_LOWER);
-
- $this->_execSql(
- sprintf(
- "ALTER SYSTEM KILL SESSION '%s, %s' IMMEDIATE",
- $activeUserSession['sid'],
- $activeUserSession['serial#']
- )
- );
- }
- }
-
- public function listTableDetails($tableName) : Table
- {
- $table = parent::listTableDetails($tableName);
-
- /** @var OraclePlatform $platform */
- $platform = $this->_platform;
- $sql = $platform->getListTableCommentsSQL($tableName);
-
- $tableOptions = $this->_conn->fetchAssoc($sql);
- $table->addOption('comment', $tableOptions['COMMENTS']);
-
- return $table;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/PostgreSqlSchemaManager.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/PostgreSqlSchemaManager.php
deleted file mode 100644
index e9608e7c1..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/PostgreSqlSchemaManager.php
+++ /dev/null
@@ -1,507 +0,0 @@
-_conn->executeQuery("SELECT nspname FROM pg_namespace WHERE nspname !~ '^pg_.*' AND nspname != 'information_schema'");
-
- return $statement->fetchAll(FetchMode::COLUMN);
- }
-
- /**
- * Returns an array of schema search paths.
- *
- * This is a PostgreSQL only function.
- *
- * @return string[]
- */
- public function getSchemaSearchPaths()
- {
- $params = $this->_conn->getParams();
- $schema = explode(',', $this->_conn->fetchColumn('SHOW search_path'));
-
- if (isset($params['user'])) {
- $schema = str_replace('"$user"', $params['user'], $schema);
- }
-
- return array_map('trim', $schema);
- }
-
- /**
- * Gets names of all existing schemas in the current users search path.
- *
- * This is a PostgreSQL only function.
- *
- * @return string[]
- */
- public function getExistingSchemaSearchPaths()
- {
- if ($this->existingSchemaPaths === null) {
- $this->determineExistingSchemaSearchPaths();
- }
-
- return $this->existingSchemaPaths;
- }
-
- /**
- * Sets or resets the order of the existing schemas in the current search path of the user.
- *
- * This is a PostgreSQL only function.
- *
- * @return void
- */
- public function determineExistingSchemaSearchPaths()
- {
- $names = $this->getSchemaNames();
- $paths = $this->getSchemaSearchPaths();
-
- $this->existingSchemaPaths = array_filter($paths, static function ($v) use ($names) {
- return in_array($v, $names);
- });
- }
-
- /**
- * {@inheritdoc}
- */
- public function dropDatabase($database)
- {
- try {
- parent::dropDatabase($database);
- } catch (DriverException $exception) {
- // If we have a SQLSTATE 55006, the drop database operation failed
- // because of active connections on the database.
- // To force dropping the database, we first have to close all active connections
- // on that database and issue the drop database operation again.
- if ($exception->getSQLState() !== '55006') {
- throw $exception;
- }
-
- assert($this->_platform instanceof PostgreSqlPlatform);
-
- $this->_execSql(
- [
- $this->_platform->getDisallowDatabaseConnectionsSQL($database),
- $this->_platform->getCloseActiveDatabaseConnectionsSQL($database),
- ]
- );
-
- parent::dropDatabase($database);
- }
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableForeignKeyDefinition($tableForeignKey)
- {
- $onUpdate = null;
- $onDelete = null;
- $localColumns = [];
- $foreignColumns = [];
- $foreignTable = null;
-
- if (preg_match('(ON UPDATE ([a-zA-Z0-9]+( (NULL|ACTION|DEFAULT))?))', $tableForeignKey['condef'], $match)) {
- $onUpdate = $match[1];
- }
- if (preg_match('(ON DELETE ([a-zA-Z0-9]+( (NULL|ACTION|DEFAULT))?))', $tableForeignKey['condef'], $match)) {
- $onDelete = $match[1];
- }
-
- if (preg_match('/FOREIGN KEY \((.+)\) REFERENCES (.+)\((.+)\)/', $tableForeignKey['condef'], $values)) {
- // PostgreSQL returns identifiers that are keywords with quotes, we need them later, don't get
- // the idea to trim them here.
- $localColumns = array_map('trim', explode(',', $values[1]));
- $foreignColumns = array_map('trim', explode(',', $values[3]));
- $foreignTable = $values[2];
- }
-
- return new ForeignKeyConstraint(
- $localColumns,
- $foreignTable,
- $foreignColumns,
- $tableForeignKey['conname'],
- ['onUpdate' => $onUpdate, 'onDelete' => $onDelete]
- );
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTriggerDefinition($trigger)
- {
- return $trigger['trigger_name'];
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableViewDefinition($view)
- {
- return new View($view['schemaname'] . '.' . $view['viewname'], $view['definition']);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableUserDefinition($user)
- {
- return [
- 'user' => $user['usename'],
- 'password' => $user['passwd'],
- ];
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableDefinition($table)
- {
- $schemas = $this->getExistingSchemaSearchPaths();
- $firstSchema = array_shift($schemas);
-
- if ($table['schema_name'] === $firstSchema) {
- return $table['table_name'];
- }
-
- return $table['schema_name'] . '.' . $table['table_name'];
- }
-
- /**
- * {@inheritdoc}
- *
- * @link http://ezcomponents.org/docs/api/trunk/DatabaseSchema/ezcDbSchemaPgsqlReader.html
- */
- protected function _getPortableTableIndexesList($tableIndexes, $tableName = null)
- {
- $buffer = [];
- foreach ($tableIndexes as $row) {
- $colNumbers = array_map('intval', explode(' ', $row['indkey']));
- $columnNameSql = sprintf(
- 'SELECT attnum, attname FROM pg_attribute WHERE attrelid=%d AND attnum IN (%s) ORDER BY attnum ASC',
- $row['indrelid'],
- implode(' ,', $colNumbers)
- );
-
- $stmt = $this->_conn->executeQuery($columnNameSql);
- $indexColumns = $stmt->fetchAll();
-
- // required for getting the order of the columns right.
- foreach ($colNumbers as $colNum) {
- foreach ($indexColumns as $colRow) {
- if ($colNum !== $colRow['attnum']) {
- continue;
- }
-
- $buffer[] = [
- 'key_name' => $row['relname'],
- 'column_name' => trim($colRow['attname']),
- 'non_unique' => ! $row['indisunique'],
- 'primary' => $row['indisprimary'],
- 'where' => $row['where'],
- ];
- }
- }
- }
-
- return parent::_getPortableTableIndexesList($buffer, $tableName);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableDatabaseDefinition($database)
- {
- return $database['datname'];
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableSequencesList($sequences)
- {
- $sequenceDefinitions = [];
-
- foreach ($sequences as $sequence) {
- if ($sequence['schemaname'] !== 'public') {
- $sequenceName = $sequence['schemaname'] . '.' . $sequence['relname'];
- } else {
- $sequenceName = $sequence['relname'];
- }
-
- $sequenceDefinitions[$sequenceName] = $sequence;
- }
-
- $list = [];
-
- foreach ($this->filterAssetNames(array_keys($sequenceDefinitions)) as $sequenceName) {
- $list[] = $this->_getPortableSequenceDefinition($sequenceDefinitions[$sequenceName]);
- }
-
- return $list;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getPortableNamespaceDefinition(array $namespace)
- {
- return $namespace['nspname'];
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableSequenceDefinition($sequence)
- {
- if ($sequence['schemaname'] !== 'public') {
- $sequenceName = $sequence['schemaname'] . '.' . $sequence['relname'];
- } else {
- $sequenceName = $sequence['relname'];
- }
-
- if (! isset($sequence['increment_by'], $sequence['min_value'])) {
- /** @var string[] $data */
- $data = $this->_conn->fetchAssoc('SELECT min_value, increment_by FROM ' . $this->_platform->quoteIdentifier($sequenceName));
-
- $sequence += $data;
- }
-
- return new Sequence($sequenceName, (int) $sequence['increment_by'], (int) $sequence['min_value']);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableColumnDefinition($tableColumn)
- {
- $tableColumn = array_change_key_case($tableColumn, CASE_LOWER);
-
- if (strtolower($tableColumn['type']) === 'varchar' || strtolower($tableColumn['type']) === 'bpchar') {
- // get length from varchar definition
- $length = preg_replace('~.*\(([0-9]*)\).*~', '$1', $tableColumn['complete_type']);
- $tableColumn['length'] = $length;
- }
-
- $matches = [];
-
- $autoincrement = false;
- if (preg_match("/^nextval\('(.*)'(::.*)?\)$/", $tableColumn['default'], $matches)) {
- $tableColumn['sequence'] = $matches[1];
- $tableColumn['default'] = null;
- $autoincrement = true;
- }
-
- if (preg_match("/^['(](.*)[')]::/", $tableColumn['default'], $matches)) {
- $tableColumn['default'] = $matches[1];
- } elseif (preg_match('/^NULL::/', $tableColumn['default'])) {
- $tableColumn['default'] = null;
- }
-
- $length = $tableColumn['length'] ?? null;
- if ($length === '-1' && isset($tableColumn['atttypmod'])) {
- $length = $tableColumn['atttypmod'] - 4;
- }
- if ((int) $length <= 0) {
- $length = null;
- }
- $fixed = null;
-
- if (! isset($tableColumn['name'])) {
- $tableColumn['name'] = '';
- }
-
- $precision = null;
- $scale = null;
- $jsonb = null;
-
- $dbType = strtolower($tableColumn['type']);
- if (strlen($tableColumn['domain_type']) && ! $this->_platform->hasDoctrineTypeMappingFor($tableColumn['type'])) {
- $dbType = strtolower($tableColumn['domain_type']);
- $tableColumn['complete_type'] = $tableColumn['domain_complete_type'];
- }
-
- $type = $this->_platform->getDoctrineTypeMapping($dbType);
- $type = $this->extractDoctrineTypeFromComment($tableColumn['comment'], $type);
- $tableColumn['comment'] = $this->removeDoctrineTypeFromComment($tableColumn['comment'], $type);
-
- switch ($dbType) {
- case 'smallint':
- case 'int2':
- $tableColumn['default'] = $this->fixVersion94NegativeNumericDefaultValue($tableColumn['default']);
- $length = null;
- break;
- case 'int':
- case 'int4':
- case 'integer':
- $tableColumn['default'] = $this->fixVersion94NegativeNumericDefaultValue($tableColumn['default']);
- $length = null;
- break;
- case 'bigint':
- case 'int8':
- $tableColumn['default'] = $this->fixVersion94NegativeNumericDefaultValue($tableColumn['default']);
- $length = null;
- break;
- case 'bool':
- case 'boolean':
- if ($tableColumn['default'] === 'true') {
- $tableColumn['default'] = true;
- }
-
- if ($tableColumn['default'] === 'false') {
- $tableColumn['default'] = false;
- }
-
- $length = null;
- break;
- case 'text':
- case '_varchar':
- case 'varchar':
- $tableColumn['default'] = $this->parseDefaultExpression($tableColumn['default']);
- $fixed = false;
- break;
- case 'interval':
- $fixed = false;
- break;
- case 'char':
- case 'bpchar':
- $fixed = true;
- break;
- case 'float':
- case 'float4':
- case 'float8':
- case 'double':
- case 'double precision':
- case 'real':
- case 'decimal':
- case 'money':
- case 'numeric':
- $tableColumn['default'] = $this->fixVersion94NegativeNumericDefaultValue($tableColumn['default']);
-
- if (preg_match('([A-Za-z]+\(([0-9]+)\,([0-9]+)\))', $tableColumn['complete_type'], $match)) {
- $precision = $match[1];
- $scale = $match[2];
- $length = null;
- }
- break;
- case 'year':
- $length = null;
- break;
-
- // PostgreSQL 9.4+ only
- case 'jsonb':
- $jsonb = true;
- break;
- }
-
- if ($tableColumn['default'] && preg_match("('([^']+)'::)", $tableColumn['default'], $match)) {
- $tableColumn['default'] = $match[1];
- }
-
- $options = [
- 'length' => $length,
- 'notnull' => (bool) $tableColumn['isnotnull'],
- 'default' => $tableColumn['default'],
- 'precision' => $precision,
- 'scale' => $scale,
- 'fixed' => $fixed,
- 'unsigned' => false,
- 'autoincrement' => $autoincrement,
- 'comment' => isset($tableColumn['comment']) && $tableColumn['comment'] !== ''
- ? $tableColumn['comment']
- : null,
- ];
-
- $column = new Column($tableColumn['field'], Type::getType($type), $options);
-
- if (isset($tableColumn['collation']) && ! empty($tableColumn['collation'])) {
- $column->setPlatformOption('collation', $tableColumn['collation']);
- }
-
- if (in_array($column->getType()->getName(), [Types::JSON_ARRAY, Types::JSON], true)) {
- $column->setPlatformOption('jsonb', $jsonb);
- }
-
- return $column;
- }
-
- /**
- * PostgreSQL 9.4 puts parentheses around negative numeric default values that need to be stripped eventually.
- *
- * @param mixed $defaultValue
- *
- * @return mixed
- */
- private function fixVersion94NegativeNumericDefaultValue($defaultValue)
- {
- if (strpos($defaultValue, '(') === 0) {
- return trim($defaultValue, '()');
- }
-
- return $defaultValue;
- }
-
- /**
- * Parses a default value expression as given by PostgreSQL
- */
- private function parseDefaultExpression(?string $default) : ?string
- {
- if ($default === null) {
- return $default;
- }
-
- return str_replace("''", "'", $default);
- }
-
- public function listTableDetails($tableName) : Table
- {
- $table = parent::listTableDetails($tableName);
-
- /** @var PostgreSqlPlatform $platform */
- $platform = $this->_platform;
- $sql = $platform->getListTableMetadataSQL($tableName);
-
- $tableOptions = $this->_conn->fetchAssoc($sql);
-
- $table->addOption('comment', $tableOptions['table_comment']);
-
- return $table;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/SQLAnywhereSchemaManager.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/SQLAnywhereSchemaManager.php
deleted file mode 100644
index c169a6e07..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/SQLAnywhereSchemaManager.php
+++ /dev/null
@@ -1,231 +0,0 @@
-startDatabase($database);
- }
-
- /**
- * {@inheritdoc}
- *
- * Tries stopping a database before dropping
- * as SQL Anywhere needs a database to be stopped
- * before it can be dropped.
- *
- * @see stopDatabase
- */
- public function dropDatabase($database)
- {
- $this->tryMethod('stopDatabase', $database);
- parent::dropDatabase($database);
- }
-
- /**
- * Starts a database.
- *
- * @param string $database The name of the database to start.
- */
- public function startDatabase($database)
- {
- assert($this->_platform instanceof SQLAnywherePlatform);
- $this->_execSql($this->_platform->getStartDatabaseSQL($database));
- }
-
- /**
- * Stops a database.
- *
- * @param string $database The name of the database to stop.
- */
- public function stopDatabase($database)
- {
- assert($this->_platform instanceof SQLAnywherePlatform);
- $this->_execSql($this->_platform->getStopDatabaseSQL($database));
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableDatabaseDefinition($database)
- {
- return $database['name'];
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableSequenceDefinition($sequence)
- {
- return new Sequence($sequence['sequence_name'], $sequence['increment_by'], $sequence['start_with']);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableColumnDefinition($tableColumn)
- {
- $type = $this->_platform->getDoctrineTypeMapping($tableColumn['type']);
- $type = $this->extractDoctrineTypeFromComment($tableColumn['comment'], $type);
- $tableColumn['comment'] = $this->removeDoctrineTypeFromComment($tableColumn['comment'], $type);
- $precision = null;
- $scale = null;
- $fixed = false;
- $default = null;
-
- if ($tableColumn['default'] !== null) {
- // Strip quotes from default value.
- $default = preg_replace(["/^'(.*)'$/", "/''/"], ['$1', "'"], $tableColumn['default']);
-
- if ($default === 'autoincrement') {
- $default = null;
- }
- }
-
- switch ($tableColumn['type']) {
- case 'binary':
- case 'char':
- case 'nchar':
- $fixed = true;
- }
-
- switch ($type) {
- case 'decimal':
- case 'float':
- $precision = $tableColumn['length'];
- $scale = $tableColumn['scale'];
- }
-
- return new Column(
- $tableColumn['column_name'],
- Type::getType($type),
- [
- 'length' => $type === 'string' ? $tableColumn['length'] : null,
- 'precision' => $precision,
- 'scale' => $scale,
- 'unsigned' => (bool) $tableColumn['unsigned'],
- 'fixed' => $fixed,
- 'notnull' => (bool) $tableColumn['notnull'],
- 'default' => $default,
- 'autoincrement' => (bool) $tableColumn['autoincrement'],
- 'comment' => isset($tableColumn['comment']) && $tableColumn['comment'] !== ''
- ? $tableColumn['comment']
- : null,
- ]
- );
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableDefinition($table)
- {
- return $table['table_name'];
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableForeignKeyDefinition($tableForeignKey)
- {
- return new ForeignKeyConstraint(
- $tableForeignKey['local_columns'],
- $tableForeignKey['foreign_table'],
- $tableForeignKey['foreign_columns'],
- $tableForeignKey['name'],
- $tableForeignKey['options']
- );
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableForeignKeysList($tableForeignKeys)
- {
- $foreignKeys = [];
-
- foreach ($tableForeignKeys as $tableForeignKey) {
- if (! isset($foreignKeys[$tableForeignKey['index_name']])) {
- $foreignKeys[$tableForeignKey['index_name']] = [
- 'local_columns' => [$tableForeignKey['local_column']],
- 'foreign_table' => $tableForeignKey['foreign_table'],
- 'foreign_columns' => [$tableForeignKey['foreign_column']],
- 'name' => $tableForeignKey['index_name'],
- 'options' => [
- 'notnull' => $tableForeignKey['notnull'],
- 'match' => $tableForeignKey['match'],
- 'onUpdate' => $tableForeignKey['on_update'],
- 'onDelete' => $tableForeignKey['on_delete'],
- 'check_on_commit' => $tableForeignKey['check_on_commit'],
- 'clustered' => $tableForeignKey['clustered'],
- 'for_olap_workload' => $tableForeignKey['for_olap_workload'],
- ],
- ];
- } else {
- $foreignKeys[$tableForeignKey['index_name']]['local_columns'][] = $tableForeignKey['local_column'];
- $foreignKeys[$tableForeignKey['index_name']]['foreign_columns'][] = $tableForeignKey['foreign_column'];
- }
- }
-
- return parent::_getPortableTableForeignKeysList($foreignKeys);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableIndexesList($tableIndexRows, $tableName = null)
- {
- foreach ($tableIndexRows as &$tableIndex) {
- $tableIndex['primary'] = (bool) $tableIndex['primary'];
- $tableIndex['flags'] = [];
-
- if ($tableIndex['clustered']) {
- $tableIndex['flags'][] = 'clustered';
- }
-
- if ($tableIndex['with_nulls_not_distinct']) {
- $tableIndex['flags'][] = 'with_nulls_not_distinct';
- }
-
- if (! $tableIndex['for_olap_workload']) {
- continue;
- }
-
- $tableIndex['flags'][] = 'for_olap_workload';
- }
-
- return parent::_getPortableTableIndexesList($tableIndexRows, $tableName);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableViewDefinition($view)
- {
- $definition = preg_replace('/^.*\s+as\s+SELECT(.*)/i', 'SELECT$1', $view['view_def']);
- assert(is_string($definition));
-
- return new View($view['table_name'], $definition);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/SQLServerSchemaManager.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/SQLServerSchemaManager.php
deleted file mode 100644
index 35cdc4508..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/SQLServerSchemaManager.php
+++ /dev/null
@@ -1,349 +0,0 @@
-getPrevious();
- assert($exception instanceof Throwable);
-
- if (! $exception instanceof DriverException) {
- throw $exception;
- }
-
- // If we have a error code 3702, the drop database operation failed
- // because of active connections on the database.
- // To force dropping the database, we first have to close all active connections
- // on that database and issue the drop database operation again.
- if ($exception->getErrorCode() !== 3702) {
- throw $exception;
- }
-
- $this->closeActiveDatabaseConnections($database);
-
- parent::dropDatabase($database);
- }
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableSequenceDefinition($sequence)
- {
- return new Sequence($sequence['name'], (int) $sequence['increment'], (int) $sequence['start_value']);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableColumnDefinition($tableColumn)
- {
- $dbType = strtok($tableColumn['type'], '(), ');
- assert(is_string($dbType));
-
- $fixed = null;
- $length = (int) $tableColumn['length'];
- $default = $tableColumn['default'];
-
- if (! isset($tableColumn['name'])) {
- $tableColumn['name'] = '';
- }
-
- if ($default !== null) {
- $default = $this->parseDefaultExpression($default);
- }
-
- switch ($dbType) {
- case 'nchar':
- case 'nvarchar':
- case 'ntext':
- // Unicode data requires 2 bytes per character
- $length /= 2;
- break;
- case 'varchar':
- // TEXT type is returned as VARCHAR(MAX) with a length of -1
- if ($length === -1) {
- $dbType = 'text';
- }
- break;
- }
-
- if ($dbType === 'char' || $dbType === 'nchar' || $dbType === 'binary') {
- $fixed = true;
- }
-
- $type = $this->_platform->getDoctrineTypeMapping($dbType);
- $type = $this->extractDoctrineTypeFromComment($tableColumn['comment'], $type);
- $tableColumn['comment'] = $this->removeDoctrineTypeFromComment($tableColumn['comment'], $type);
-
- $options = [
- 'length' => $length === 0 || ! in_array($type, ['text', 'string']) ? null : $length,
- 'unsigned' => false,
- 'fixed' => (bool) $fixed,
- 'default' => $default,
- 'notnull' => (bool) $tableColumn['notnull'],
- 'scale' => $tableColumn['scale'],
- 'precision' => $tableColumn['precision'],
- 'autoincrement' => (bool) $tableColumn['autoincrement'],
- 'comment' => $tableColumn['comment'] !== '' ? $tableColumn['comment'] : null,
- ];
-
- $column = new Column($tableColumn['name'], Type::getType($type), $options);
-
- if (isset($tableColumn['collation']) && $tableColumn['collation'] !== 'NULL') {
- $column->setPlatformOption('collation', $tableColumn['collation']);
- }
-
- return $column;
- }
-
- private function parseDefaultExpression(string $value) : ?string
- {
- while (preg_match('/^\((.*)\)$/s', $value, $matches)) {
- $value = $matches[1];
- }
-
- if ($value === 'NULL') {
- return null;
- }
-
- if (preg_match('/^\'(.*)\'$/s', $value, $matches)) {
- $value = str_replace("''", "'", $matches[1]);
- }
-
- if ($value === 'getdate()') {
- return $this->_platform->getCurrentTimestampSQL();
- }
-
- return $value;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableForeignKeysList($tableForeignKeys)
- {
- $foreignKeys = [];
-
- foreach ($tableForeignKeys as $tableForeignKey) {
- if (! isset($foreignKeys[$tableForeignKey['ForeignKey']])) {
- $foreignKeys[$tableForeignKey['ForeignKey']] = [
- 'local_columns' => [$tableForeignKey['ColumnName']],
- 'foreign_table' => $tableForeignKey['ReferenceTableName'],
- 'foreign_columns' => [$tableForeignKey['ReferenceColumnName']],
- 'name' => $tableForeignKey['ForeignKey'],
- 'options' => [
- 'onUpdate' => str_replace('_', ' ', $tableForeignKey['update_referential_action_desc']),
- 'onDelete' => str_replace('_', ' ', $tableForeignKey['delete_referential_action_desc']),
- ],
- ];
- } else {
- $foreignKeys[$tableForeignKey['ForeignKey']]['local_columns'][] = $tableForeignKey['ColumnName'];
- $foreignKeys[$tableForeignKey['ForeignKey']]['foreign_columns'][] = $tableForeignKey['ReferenceColumnName'];
- }
- }
-
- return parent::_getPortableTableForeignKeysList($foreignKeys);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableIndexesList($tableIndexRows, $tableName = null)
- {
- foreach ($tableIndexRows as &$tableIndex) {
- $tableIndex['non_unique'] = (bool) $tableIndex['non_unique'];
- $tableIndex['primary'] = (bool) $tableIndex['primary'];
- $tableIndex['flags'] = $tableIndex['flags'] ? [$tableIndex['flags']] : null;
- }
-
- return parent::_getPortableTableIndexesList($tableIndexRows, $tableName);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableForeignKeyDefinition($tableForeignKey)
- {
- return new ForeignKeyConstraint(
- $tableForeignKey['local_columns'],
- $tableForeignKey['foreign_table'],
- $tableForeignKey['foreign_columns'],
- $tableForeignKey['name'],
- $tableForeignKey['options']
- );
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableDefinition($table)
- {
- if (isset($table['schema_name']) && $table['schema_name'] !== 'dbo') {
- return $table['schema_name'] . '.' . $table['name'];
- }
-
- return $table['name'];
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableDatabaseDefinition($database)
- {
- return $database['name'];
- }
-
- /**
- * {@inheritdoc}
- */
- protected function getPortableNamespaceDefinition(array $namespace)
- {
- return $namespace['name'];
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableViewDefinition($view)
- {
- // @todo
- return new View($view['name'], '');
- }
-
- /**
- * {@inheritdoc}
- */
- public function listTableIndexes($table)
- {
- $sql = $this->_platform->getListTableIndexesSQL($table, $this->_conn->getDatabase());
-
- try {
- $tableIndexes = $this->_conn->fetchAll($sql);
- } catch (PDOException $e) {
- if ($e->getCode() === 'IMSSP') {
- return [];
- }
-
- throw $e;
- } catch (DBALException $e) {
- if (strpos($e->getMessage(), 'SQLSTATE [01000, 15472]') === 0) {
- return [];
- }
-
- throw $e;
- }
-
- return $this->_getPortableTableIndexesList($tableIndexes, $table);
- }
-
- /**
- * {@inheritdoc}
- */
- public function alterTable(TableDiff $tableDiff)
- {
- if (count($tableDiff->removedColumns) > 0) {
- foreach ($tableDiff->removedColumns as $col) {
- $columnConstraintSql = $this->getColumnConstraintSQL($tableDiff->name, $col->getName());
- foreach ($this->_conn->fetchAll($columnConstraintSql) as $constraint) {
- $this->_conn->exec(
- sprintf(
- 'ALTER TABLE %s DROP CONSTRAINT %s',
- $tableDiff->name,
- $constraint['Name']
- )
- );
- }
- }
- }
-
- parent::alterTable($tableDiff);
- }
-
- /**
- * Returns the SQL to retrieve the constraints for a given column.
- *
- * @param string $table
- * @param string $column
- *
- * @return string
- */
- private function getColumnConstraintSQL($table, $column)
- {
- return "SELECT SysObjects.[Name]
- FROM SysObjects INNER JOIN (SELECT [Name],[ID] FROM SysObjects WHERE XType = 'U') AS Tab
- ON Tab.[ID] = Sysobjects.[Parent_Obj]
- INNER JOIN sys.default_constraints DefCons ON DefCons.[object_id] = Sysobjects.[ID]
- INNER JOIN SysColumns Col ON Col.[ColID] = DefCons.[parent_column_id] AND Col.[ID] = Tab.[ID]
- WHERE Col.[Name] = " . $this->_conn->quote($column) . ' AND Tab.[Name] = ' . $this->_conn->quote($table) . '
- ORDER BY Col.[Name]';
- }
-
- /**
- * Closes currently active connections on the given database.
- *
- * This is useful to force DROP DATABASE operations which could fail because of active connections.
- *
- * @param string $database The name of the database to close currently active connections for.
- *
- * @return void
- */
- private function closeActiveDatabaseConnections($database)
- {
- $database = new Identifier($database);
-
- $this->_execSql(
- sprintf(
- 'ALTER DATABASE %s SET SINGLE_USER WITH ROLLBACK IMMEDIATE',
- $database->getQuotedName($this->_platform)
- )
- );
- }
-
- /**
- * @param string $tableName
- */
- public function listTableDetails($tableName) : Table
- {
- $table = parent::listTableDetails($tableName);
-
- /** @var SQLServerPlatform $platform */
- $platform = $this->_platform;
- $sql = $platform->getListTableMetadataSQL($tableName);
-
- $tableOptions = $this->_conn->fetchAssoc($sql);
-
- if ($tableOptions !== false) {
- $table->addOption('comment', $tableOptions['table_comment']);
- }
-
- return $table;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Schema.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Schema.php
deleted file mode 100644
index 5d746654a..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Schema.php
+++ /dev/null
@@ -1,475 +0,0 @@
-_schemaConfig = $schemaConfig;
- $this->_setName($schemaConfig->getName() ?: 'public');
-
- foreach ($namespaces as $namespace) {
- $this->createNamespace($namespace);
- }
-
- foreach ($tables as $table) {
- $this->_addTable($table);
- }
-
- foreach ($sequences as $sequence) {
- $this->_addSequence($sequence);
- }
- }
-
- /**
- * @return bool
- */
- public function hasExplicitForeignKeyIndexes()
- {
- return $this->_schemaConfig->hasExplicitForeignKeyIndexes();
- }
-
- /**
- * @return void
- *
- * @throws SchemaException
- */
- protected function _addTable(Table $table)
- {
- $namespaceName = $table->getNamespaceName();
- $tableName = $table->getFullQualifiedName($this->getName());
-
- if (isset($this->_tables[$tableName])) {
- throw SchemaException::tableAlreadyExists($tableName);
- }
-
- if ($namespaceName !== null
- && ! $table->isInDefaultNamespace($this->getName())
- && ! $this->hasNamespace($namespaceName)) {
- $this->createNamespace($namespaceName);
- }
-
- $this->_tables[$tableName] = $table;
- $table->setSchemaConfig($this->_schemaConfig);
- }
-
- /**
- * @return void
- *
- * @throws SchemaException
- */
- protected function _addSequence(Sequence $sequence)
- {
- $namespaceName = $sequence->getNamespaceName();
- $seqName = $sequence->getFullQualifiedName($this->getName());
-
- if (isset($this->_sequences[$seqName])) {
- throw SchemaException::sequenceAlreadyExists($seqName);
- }
-
- if ($namespaceName !== null
- && ! $sequence->isInDefaultNamespace($this->getName())
- && ! $this->hasNamespace($namespaceName)) {
- $this->createNamespace($namespaceName);
- }
-
- $this->_sequences[$seqName] = $sequence;
- }
-
- /**
- * Returns the namespaces of this schema.
- *
- * @return string[] A list of namespace names.
- */
- public function getNamespaces()
- {
- return $this->namespaces;
- }
-
- /**
- * Gets all tables of this schema.
- *
- * @return Table[]
- */
- public function getTables()
- {
- return $this->_tables;
- }
-
- /**
- * @param string $tableName
- *
- * @return Table
- *
- * @throws SchemaException
- */
- public function getTable($tableName)
- {
- $tableName = $this->getFullQualifiedAssetName($tableName);
- if (! isset($this->_tables[$tableName])) {
- throw SchemaException::tableDoesNotExist($tableName);
- }
-
- return $this->_tables[$tableName];
- }
-
- /**
- * @param string $name
- *
- * @return string
- */
- private function getFullQualifiedAssetName($name)
- {
- $name = $this->getUnquotedAssetName($name);
-
- if (strpos($name, '.') === false) {
- $name = $this->getName() . '.' . $name;
- }
-
- return strtolower($name);
- }
-
- /**
- * Returns the unquoted representation of a given asset name.
- *
- * @param string $assetName Quoted or unquoted representation of an asset name.
- *
- * @return string
- */
- private function getUnquotedAssetName($assetName)
- {
- if ($this->isIdentifierQuoted($assetName)) {
- return $this->trimQuotes($assetName);
- }
-
- return $assetName;
- }
-
- /**
- * Does this schema have a namespace with the given name?
- *
- * @param string $namespaceName
- *
- * @return bool
- */
- public function hasNamespace($namespaceName)
- {
- $namespaceName = strtolower($this->getUnquotedAssetName($namespaceName));
-
- return isset($this->namespaces[$namespaceName]);
- }
-
- /**
- * Does this schema have a table with the given name?
- *
- * @param string $tableName
- *
- * @return bool
- */
- public function hasTable($tableName)
- {
- $tableName = $this->getFullQualifiedAssetName($tableName);
-
- return isset($this->_tables[$tableName]);
- }
-
- /**
- * Gets all table names, prefixed with a schema name, even the default one if present.
- *
- * @return string[]
- */
- public function getTableNames()
- {
- return array_keys($this->_tables);
- }
-
- /**
- * @param string $sequenceName
- *
- * @return bool
- */
- public function hasSequence($sequenceName)
- {
- $sequenceName = $this->getFullQualifiedAssetName($sequenceName);
-
- return isset($this->_sequences[$sequenceName]);
- }
-
- /**
- * @param string $sequenceName
- *
- * @return Sequence
- *
- * @throws SchemaException
- */
- public function getSequence($sequenceName)
- {
- $sequenceName = $this->getFullQualifiedAssetName($sequenceName);
- if (! $this->hasSequence($sequenceName)) {
- throw SchemaException::sequenceDoesNotExist($sequenceName);
- }
-
- return $this->_sequences[$sequenceName];
- }
-
- /**
- * @return Sequence[]
- */
- public function getSequences()
- {
- return $this->_sequences;
- }
-
- /**
- * Creates a new namespace.
- *
- * @param string $namespaceName The name of the namespace to create.
- *
- * @return \Doctrine\DBAL\Schema\Schema This schema instance.
- *
- * @throws SchemaException
- */
- public function createNamespace($namespaceName)
- {
- $unquotedNamespaceName = strtolower($this->getUnquotedAssetName($namespaceName));
-
- if (isset($this->namespaces[$unquotedNamespaceName])) {
- throw SchemaException::namespaceAlreadyExists($unquotedNamespaceName);
- }
-
- $this->namespaces[$unquotedNamespaceName] = $namespaceName;
-
- return $this;
- }
-
- /**
- * Creates a new table.
- *
- * @param string $tableName
- *
- * @return Table
- */
- public function createTable($tableName)
- {
- $table = new Table($tableName);
- $this->_addTable($table);
-
- foreach ($this->_schemaConfig->getDefaultTableOptions() as $name => $value) {
- $table->addOption($name, $value);
- }
-
- return $table;
- }
-
- /**
- * Renames a table.
- *
- * @param string $oldTableName
- * @param string $newTableName
- *
- * @return \Doctrine\DBAL\Schema\Schema
- */
- public function renameTable($oldTableName, $newTableName)
- {
- $table = $this->getTable($oldTableName);
- $table->_setName($newTableName);
-
- $this->dropTable($oldTableName);
- $this->_addTable($table);
-
- return $this;
- }
-
- /**
- * Drops a table from the schema.
- *
- * @param string $tableName
- *
- * @return \Doctrine\DBAL\Schema\Schema
- */
- public function dropTable($tableName)
- {
- $tableName = $this->getFullQualifiedAssetName($tableName);
- $this->getTable($tableName);
- unset($this->_tables[$tableName]);
-
- return $this;
- }
-
- /**
- * Creates a new sequence.
- *
- * @param string $sequenceName
- * @param int $allocationSize
- * @param int $initialValue
- *
- * @return Sequence
- */
- public function createSequence($sequenceName, $allocationSize = 1, $initialValue = 1)
- {
- $seq = new Sequence($sequenceName, $allocationSize, $initialValue);
- $this->_addSequence($seq);
-
- return $seq;
- }
-
- /**
- * @param string $sequenceName
- *
- * @return \Doctrine\DBAL\Schema\Schema
- */
- public function dropSequence($sequenceName)
- {
- $sequenceName = $this->getFullQualifiedAssetName($sequenceName);
- unset($this->_sequences[$sequenceName]);
-
- return $this;
- }
-
- /**
- * Returns an array of necessary SQL queries to create the schema on the given platform.
- *
- * @return string[]
- */
- public function toSql(AbstractPlatform $platform)
- {
- $sqlCollector = new CreateSchemaSqlCollector($platform);
- $this->visit($sqlCollector);
-
- return $sqlCollector->getQueries();
- }
-
- /**
- * Return an array of necessary SQL queries to drop the schema on the given platform.
- *
- * @return string[]
- */
- public function toDropSql(AbstractPlatform $platform)
- {
- $dropSqlCollector = new DropSchemaSqlCollector($platform);
- $this->visit($dropSqlCollector);
-
- return $dropSqlCollector->getQueries();
- }
-
- /**
- * @return string[]
- */
- public function getMigrateToSql(Schema $toSchema, AbstractPlatform $platform)
- {
- $comparator = new Comparator();
- $schemaDiff = $comparator->compare($this, $toSchema);
-
- return $schemaDiff->toSql($platform);
- }
-
- /**
- * @return string[]
- */
- public function getMigrateFromSql(Schema $fromSchema, AbstractPlatform $platform)
- {
- $comparator = new Comparator();
- $schemaDiff = $comparator->compare($fromSchema, $this);
-
- return $schemaDiff->toSql($platform);
- }
-
- /**
- * @return void
- */
- public function visit(Visitor $visitor)
- {
- $visitor->acceptSchema($this);
-
- if ($visitor instanceof NamespaceVisitor) {
- foreach ($this->namespaces as $namespace) {
- $visitor->acceptNamespace($namespace);
- }
- }
-
- foreach ($this->_tables as $table) {
- $table->visit($visitor);
- }
-
- foreach ($this->_sequences as $sequence) {
- $sequence->visit($visitor);
- }
- }
-
- /**
- * Cloning a Schema triggers a deep clone of all related assets.
- *
- * @return void
- */
- public function __clone()
- {
- foreach ($this->_tables as $k => $table) {
- $this->_tables[$k] = clone $table;
- }
- foreach ($this->_sequences as $k => $sequence) {
- $this->_sequences[$k] = clone $sequence;
- }
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/SchemaConfig.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/SchemaConfig.php
deleted file mode 100644
index b8c3502f7..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/SchemaConfig.php
+++ /dev/null
@@ -1,100 +0,0 @@
-hasExplicitForeignKeyIndexes;
- }
-
- /**
- * @param bool $flag
- *
- * @return void
- */
- public function setExplicitForeignKeyIndexes($flag)
- {
- $this->hasExplicitForeignKeyIndexes = (bool) $flag;
- }
-
- /**
- * @param int $length
- *
- * @return void
- */
- public function setMaxIdentifierLength($length)
- {
- $this->maxIdentifierLength = (int) $length;
- }
-
- /**
- * @return int
- */
- public function getMaxIdentifierLength()
- {
- return $this->maxIdentifierLength;
- }
-
- /**
- * Gets the default namespace of schema objects.
- *
- * @return string
- */
- public function getName()
- {
- return $this->name;
- }
-
- /**
- * Sets the default namespace name of schema objects.
- *
- * @param string $name The value to set.
- *
- * @return void
- */
- public function setName($name)
- {
- $this->name = $name;
- }
-
- /**
- * Gets the default options that are passed to Table instances created with
- * Schema#createTable().
- *
- * @return mixed[]
- */
- public function getDefaultTableOptions()
- {
- return $this->defaultTableOptions;
- }
-
- /**
- * @param mixed[] $defaultTableOptions
- *
- * @return void
- */
- public function setDefaultTableOptions(array $defaultTableOptions)
- {
- $this->defaultTableOptions = $defaultTableOptions;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/SchemaDiff.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/SchemaDiff.php
deleted file mode 100644
index 69bf125a8..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/SchemaDiff.php
+++ /dev/null
@@ -1,168 +0,0 @@
-newTables = $newTables;
- $this->changedTables = $changedTables;
- $this->removedTables = $removedTables;
- $this->fromSchema = $fromSchema;
- }
-
- /**
- * The to save sql mode ensures that the following things don't happen:
- *
- * 1. Tables are deleted
- * 2. Sequences are deleted
- * 3. Foreign Keys which reference tables that would otherwise be deleted.
- *
- * This way it is ensured that assets are deleted which might not be relevant to the metadata schema at all.
- *
- * @return string[]
- */
- public function toSaveSql(AbstractPlatform $platform)
- {
- return $this->_toSql($platform, true);
- }
-
- /**
- * @return string[]
- */
- public function toSql(AbstractPlatform $platform)
- {
- return $this->_toSql($platform, false);
- }
-
- /**
- * @param bool $saveMode
- *
- * @return string[]
- */
- protected function _toSql(AbstractPlatform $platform, $saveMode = false)
- {
- $sql = [];
-
- if ($platform->supportsSchemas()) {
- foreach ($this->newNamespaces as $newNamespace) {
- $sql[] = $platform->getCreateSchemaSQL($newNamespace);
- }
- }
-
- if ($platform->supportsForeignKeyConstraints() && $saveMode === false) {
- foreach ($this->orphanedForeignKeys as $orphanedForeignKey) {
- $sql[] = $platform->getDropForeignKeySQL($orphanedForeignKey, $orphanedForeignKey->getLocalTable());
- }
- }
-
- if ($platform->supportsSequences() === true) {
- foreach ($this->changedSequences as $sequence) {
- $sql[] = $platform->getAlterSequenceSQL($sequence);
- }
-
- if ($saveMode === false) {
- foreach ($this->removedSequences as $sequence) {
- $sql[] = $platform->getDropSequenceSQL($sequence);
- }
- }
-
- foreach ($this->newSequences as $sequence) {
- $sql[] = $platform->getCreateSequenceSQL($sequence);
- }
- }
-
- $foreignKeySql = [];
- foreach ($this->newTables as $table) {
- $sql = array_merge(
- $sql,
- $platform->getCreateTableSQL($table, AbstractPlatform::CREATE_INDEXES)
- );
-
- if (! $platform->supportsForeignKeyConstraints()) {
- continue;
- }
-
- foreach ($table->getForeignKeys() as $foreignKey) {
- $foreignKeySql[] = $platform->getCreateForeignKeySQL($foreignKey, $table);
- }
- }
- $sql = array_merge($sql, $foreignKeySql);
-
- if ($saveMode === false) {
- foreach ($this->removedTables as $table) {
- $sql[] = $platform->getDropTableSQL($table);
- }
- }
-
- foreach ($this->changedTables as $tableDiff) {
- $sql = array_merge($sql, $platform->getAlterTableSQL($tableDiff));
- }
-
- return $sql;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/SchemaException.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/SchemaException.php
deleted file mode 100644
index 213d21847..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/SchemaException.php
+++ /dev/null
@@ -1,183 +0,0 @@
-getName() . ' requires a named foreign key, ' .
- 'but the given foreign key from (' . implode(', ', $foreignKey->getColumns()) . ') onto foreign table ' .
- "'" . $foreignKey->getForeignTableName() . "' (" . implode(', ', $foreignKey->getForeignColumns()) . ') is currently ' .
- 'unnamed.'
- );
- }
-
- /**
- * @param string $changeName
- *
- * @return \Doctrine\DBAL\Schema\SchemaException
- */
- public static function alterTableChangeNotSupported($changeName)
- {
- return new self(
- sprintf("Alter table change not supported, given '%s'", $changeName)
- );
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Sequence.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Sequence.php
deleted file mode 100644
index 88891019b..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Sequence.php
+++ /dev/null
@@ -1,139 +0,0 @@
-_setName($name);
- $this->setAllocationSize($allocationSize);
- $this->setInitialValue($initialValue);
- $this->cache = $cache;
- }
-
- /**
- * @return int
- */
- public function getAllocationSize()
- {
- return $this->allocationSize;
- }
-
- /**
- * @return int
- */
- public function getInitialValue()
- {
- return $this->initialValue;
- }
-
- /**
- * @return int|null
- */
- public function getCache()
- {
- return $this->cache;
- }
-
- /**
- * @param int $allocationSize
- *
- * @return \Doctrine\DBAL\Schema\Sequence
- */
- public function setAllocationSize($allocationSize)
- {
- $this->allocationSize = (int) $allocationSize ?: 1;
-
- return $this;
- }
-
- /**
- * @param int $initialValue
- *
- * @return \Doctrine\DBAL\Schema\Sequence
- */
- public function setInitialValue($initialValue)
- {
- $this->initialValue = (int) $initialValue ?: 1;
-
- return $this;
- }
-
- /**
- * @param int $cache
- *
- * @return \Doctrine\DBAL\Schema\Sequence
- */
- public function setCache($cache)
- {
- $this->cache = $cache;
-
- return $this;
- }
-
- /**
- * Checks if this sequence is an autoincrement sequence for a given table.
- *
- * This is used inside the comparator to not report sequences as missing,
- * when the "from" schema implicitly creates the sequences.
- *
- * @return bool
- */
- public function isAutoIncrementsFor(Table $table)
- {
- $primaryKey = $table->getPrimaryKey();
-
- if ($primaryKey === null) {
- return false;
- }
-
- $pkColumns = $primaryKey->getColumns();
-
- if (count($pkColumns) !== 1) {
- return false;
- }
-
- $column = $table->getColumn($pkColumns[0]);
-
- if (! $column->getAutoincrement()) {
- return false;
- }
-
- $sequenceName = $this->getShortestName($table->getNamespaceName());
- $tableName = $table->getShortestName($table->getNamespaceName());
- $tableSequenceName = sprintf('%s_%s_seq', $tableName, $column->getShortestName($table->getNamespaceName()));
-
- return $tableSequenceName === $sequenceName;
- }
-
- /**
- * @return void
- */
- public function visit(Visitor $visitor)
- {
- $visitor->acceptSequence($this);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/SqliteSchemaManager.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/SqliteSchemaManager.php
deleted file mode 100644
index ac758015a..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/SqliteSchemaManager.php
+++ /dev/null
@@ -1,545 +0,0 @@
-_conn->getParams();
- $driver = $params['driver'];
- $options = [
- 'driver' => $driver,
- 'path' => $database,
- ];
- $conn = DriverManager::getConnection($options);
- $conn->connect();
- $conn->close();
- }
-
- /**
- * {@inheritdoc}
- */
- public function renameTable($name, $newName)
- {
- $tableDiff = new TableDiff($name);
- $tableDiff->fromTable = $this->listTableDetails($name);
- $tableDiff->newName = $newName;
- $this->alterTable($tableDiff);
- }
-
- /**
- * {@inheritdoc}
- */
- public function createForeignKey(ForeignKeyConstraint $foreignKey, $table)
- {
- $tableDiff = $this->getTableDiffForAlterForeignKey($table);
- $tableDiff->addedForeignKeys[] = $foreignKey;
-
- $this->alterTable($tableDiff);
- }
-
- /**
- * {@inheritdoc}
- */
- public function dropAndCreateForeignKey(ForeignKeyConstraint $foreignKey, $table)
- {
- $tableDiff = $this->getTableDiffForAlterForeignKey($table);
- $tableDiff->changedForeignKeys[] = $foreignKey;
-
- $this->alterTable($tableDiff);
- }
-
- /**
- * {@inheritdoc}
- */
- public function dropForeignKey($foreignKey, $table)
- {
- $tableDiff = $this->getTableDiffForAlterForeignKey($table);
- $tableDiff->removedForeignKeys[] = $foreignKey;
-
- $this->alterTable($tableDiff);
- }
-
- /**
- * {@inheritdoc}
- */
- public function listTableForeignKeys($table, $database = null)
- {
- if ($database === null) {
- $database = $this->_conn->getDatabase();
- }
- $sql = $this->_platform->getListTableForeignKeysSQL($table, $database);
- $tableForeignKeys = $this->_conn->fetchAll($sql);
-
- if (! empty($tableForeignKeys)) {
- $createSql = $this->getCreateTableSQL($table);
-
- if ($createSql !== null && preg_match_all(
- '#
- (?:CONSTRAINT\s+([^\s]+)\s+)?
- (?:FOREIGN\s+KEY[^\)]+\)\s*)?
- REFERENCES\s+[^\s]+\s+(?:\([^\)]+\))?
- (?:
- [^,]*?
- (NOT\s+DEFERRABLE|DEFERRABLE)
- (?:\s+INITIALLY\s+(DEFERRED|IMMEDIATE))?
- )?#isx',
- $createSql,
- $match
- )) {
- $names = array_reverse($match[1]);
- $deferrable = array_reverse($match[2]);
- $deferred = array_reverse($match[3]);
- } else {
- $names = $deferrable = $deferred = [];
- }
-
- foreach ($tableForeignKeys as $key => $value) {
- $id = $value['id'];
- $tableForeignKeys[$key]['constraint_name'] = isset($names[$id]) && $names[$id] !== '' ? $names[$id] : $id;
- $tableForeignKeys[$key]['deferrable'] = isset($deferrable[$id]) && strtolower($deferrable[$id]) === 'deferrable';
- $tableForeignKeys[$key]['deferred'] = isset($deferred[$id]) && strtolower($deferred[$id]) === 'deferred';
- }
- }
-
- return $this->_getPortableTableForeignKeysList($tableForeignKeys);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableDefinition($table)
- {
- return $table['name'];
- }
-
- /**
- * {@inheritdoc}
- *
- * @link http://ezcomponents.org/docs/api/trunk/DatabaseSchema/ezcDbSchemaPgsqlReader.html
- */
- protected function _getPortableTableIndexesList($tableIndexes, $tableName = null)
- {
- $indexBuffer = [];
-
- // fetch primary
- $stmt = $this->_conn->executeQuery(sprintf(
- 'PRAGMA TABLE_INFO (%s)',
- $this->_conn->quote($tableName)
- ));
- $indexArray = $stmt->fetchAll(FetchMode::ASSOCIATIVE);
-
- usort($indexArray, static function ($a, $b) {
- if ($a['pk'] === $b['pk']) {
- return $a['cid'] - $b['cid'];
- }
-
- return $a['pk'] - $b['pk'];
- });
- foreach ($indexArray as $indexColumnRow) {
- if ($indexColumnRow['pk'] === '0') {
- continue;
- }
-
- $indexBuffer[] = [
- 'key_name' => 'primary',
- 'primary' => true,
- 'non_unique' => false,
- 'column_name' => $indexColumnRow['name'],
- ];
- }
-
- // fetch regular indexes
- foreach ($tableIndexes as $tableIndex) {
- // Ignore indexes with reserved names, e.g. autoindexes
- if (strpos($tableIndex['name'], 'sqlite_') === 0) {
- continue;
- }
-
- $keyName = $tableIndex['name'];
- $idx = [];
- $idx['key_name'] = $keyName;
- $idx['primary'] = false;
- $idx['non_unique'] = ! $tableIndex['unique'];
-
- $stmt = $this->_conn->executeQuery(sprintf(
- 'PRAGMA INDEX_INFO (%s)',
- $this->_conn->quote($keyName)
- ));
- $indexArray = $stmt->fetchAll(FetchMode::ASSOCIATIVE);
-
- foreach ($indexArray as $indexColumnRow) {
- $idx['column_name'] = $indexColumnRow['name'];
- $indexBuffer[] = $idx;
- }
- }
-
- return parent::_getPortableTableIndexesList($indexBuffer, $tableName);
- }
-
- /**
- * {@inheritdoc}
- *
- * @deprecated
- */
- protected function _getPortableTableIndexDefinition($tableIndex)
- {
- return [
- 'name' => $tableIndex['name'],
- 'unique' => (bool) $tableIndex['unique'],
- ];
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableColumnList($table, $database, $tableColumns)
- {
- $list = parent::_getPortableTableColumnList($table, $database, $tableColumns);
-
- // find column with autoincrement
- $autoincrementColumn = null;
- $autoincrementCount = 0;
-
- foreach ($tableColumns as $tableColumn) {
- if ($tableColumn['pk'] === '0') {
- continue;
- }
-
- $autoincrementCount++;
- if ($autoincrementColumn !== null || strtolower($tableColumn['type']) !== 'integer') {
- continue;
- }
-
- $autoincrementColumn = $tableColumn['name'];
- }
-
- if ($autoincrementCount === 1 && $autoincrementColumn !== null) {
- foreach ($list as $column) {
- if ($autoincrementColumn !== $column->getName()) {
- continue;
- }
-
- $column->setAutoincrement(true);
- }
- }
-
- // inspect column collation and comments
- $createSql = $this->getCreateTableSQL($table) ?? '';
-
- foreach ($list as $columnName => $column) {
- $type = $column->getType();
-
- if ($type instanceof StringType || $type instanceof TextType) {
- $column->setPlatformOption('collation', $this->parseColumnCollationFromSQL($columnName, $createSql) ?: 'BINARY');
- }
-
- $comment = $this->parseColumnCommentFromSQL($columnName, $createSql);
-
- if ($comment === null) {
- continue;
- }
-
- $type = $this->extractDoctrineTypeFromComment($comment, '');
-
- if ($type !== '') {
- $column->setType(Type::getType($type));
-
- $comment = $this->removeDoctrineTypeFromComment($comment, $type);
- }
-
- $column->setComment($comment);
- }
-
- return $list;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableColumnDefinition($tableColumn)
- {
- $parts = explode('(', $tableColumn['type']);
- $tableColumn['type'] = trim($parts[0]);
- if (isset($parts[1])) {
- $length = trim($parts[1], ')');
- $tableColumn['length'] = $length;
- }
-
- $dbType = strtolower($tableColumn['type']);
- $length = $tableColumn['length'] ?? null;
- $unsigned = false;
-
- if (strpos($dbType, ' unsigned') !== false) {
- $dbType = str_replace(' unsigned', '', $dbType);
- $unsigned = true;
- }
-
- $fixed = false;
- $type = $this->_platform->getDoctrineTypeMapping($dbType);
- $default = $tableColumn['dflt_value'];
- if ($default === 'NULL') {
- $default = null;
- }
-
- if ($default !== null) {
- // SQLite returns the default value as a literal expression, so we need to parse it
- if (preg_match('/^\'(.*)\'$/s', $default, $matches)) {
- $default = str_replace("''", "'", $matches[1]);
- }
- }
-
- $notnull = (bool) $tableColumn['notnull'];
-
- if (! isset($tableColumn['name'])) {
- $tableColumn['name'] = '';
- }
-
- $precision = null;
- $scale = null;
-
- switch ($dbType) {
- case 'char':
- $fixed = true;
- break;
- case 'float':
- case 'double':
- case 'real':
- case 'decimal':
- case 'numeric':
- if (isset($tableColumn['length'])) {
- if (strpos($tableColumn['length'], ',') === false) {
- $tableColumn['length'] .= ',0';
- }
- [$precision, $scale] = array_map('trim', explode(',', $tableColumn['length']));
- }
- $length = null;
- break;
- }
-
- $options = [
- 'length' => $length,
- 'unsigned' => (bool) $unsigned,
- 'fixed' => $fixed,
- 'notnull' => $notnull,
- 'default' => $default,
- 'precision' => $precision,
- 'scale' => $scale,
- 'autoincrement' => false,
- ];
-
- return new Column($tableColumn['name'], Type::getType($type), $options);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableViewDefinition($view)
- {
- return new View($view['name'], $view['sql']);
- }
-
- /**
- * {@inheritdoc}
- */
- protected function _getPortableTableForeignKeysList($tableForeignKeys)
- {
- $list = [];
- foreach ($tableForeignKeys as $value) {
- $value = array_change_key_case($value, CASE_LOWER);
- $name = $value['constraint_name'];
- if (! isset($list[$name])) {
- if (! isset($value['on_delete']) || $value['on_delete'] === 'RESTRICT') {
- $value['on_delete'] = null;
- }
- if (! isset($value['on_update']) || $value['on_update'] === 'RESTRICT') {
- $value['on_update'] = null;
- }
-
- $list[$name] = [
- 'name' => $name,
- 'local' => [],
- 'foreign' => [],
- 'foreignTable' => $value['table'],
- 'onDelete' => $value['on_delete'],
- 'onUpdate' => $value['on_update'],
- 'deferrable' => $value['deferrable'],
- 'deferred'=> $value['deferred'],
- ];
- }
- $list[$name]['local'][] = $value['from'];
- $list[$name]['foreign'][] = $value['to'];
- }
-
- $result = [];
- foreach ($list as $constraint) {
- $result[] = new ForeignKeyConstraint(
- array_values($constraint['local']),
- $constraint['foreignTable'],
- array_values($constraint['foreign']),
- $constraint['name'],
- [
- 'onDelete' => $constraint['onDelete'],
- 'onUpdate' => $constraint['onUpdate'],
- 'deferrable' => $constraint['deferrable'],
- 'deferred'=> $constraint['deferred'],
- ]
- );
- }
-
- return $result;
- }
-
- /**
- * @param Table|string $table
- *
- * @return TableDiff
- *
- * @throws DBALException
- */
- private function getTableDiffForAlterForeignKey($table)
- {
- if (! $table instanceof Table) {
- $tableDetails = $this->tryMethod('listTableDetails', $table);
-
- if ($tableDetails === false) {
- throw new DBALException(sprintf('Sqlite schema manager requires to modify foreign keys table definition "%s".', $table));
- }
-
- $table = $tableDetails;
- }
-
- $tableDiff = new TableDiff($table->getName());
- $tableDiff->fromTable = $table;
-
- return $tableDiff;
- }
-
- private function parseColumnCollationFromSQL(string $column, string $sql) : ?string
- {
- $pattern = '{(?:\W' . preg_quote($column) . '\W|\W' . preg_quote($this->_platform->quoteSingleIdentifier($column))
- . '\W)[^,(]+(?:\([^()]+\)[^,]*)?(?:(?:DEFAULT|CHECK)\s*(?:\(.*?\))?[^,]*)*COLLATE\s+["\']?([^\s,"\')]+)}is';
-
- if (preg_match($pattern, $sql, $match) !== 1) {
- return null;
- }
-
- return $match[1];
- }
-
- private function parseTableCommentFromSQL(string $table, string $sql) : ?string
- {
- $pattern = '/\s* # Allow whitespace characters at start of line
-CREATE\sTABLE # Match "CREATE TABLE"
-(?:\W"' . preg_quote($this->_platform->quoteSingleIdentifier($table), '/') . '"\W|\W' . preg_quote($table, '/')
- . '\W) # Match table name (quoted and unquoted)
-( # Start capture
- (?:\s*--[^\n]*\n?)+ # Capture anything that starts with whitespaces followed by -- until the end of the line(s)
-)/ix';
-
- if (preg_match($pattern, $sql, $match) !== 1) {
- return null;
- }
-
- $comment = preg_replace('{^\s*--}m', '', rtrim($match[1], "\n"));
-
- return $comment === '' ? null : $comment;
- }
-
- private function parseColumnCommentFromSQL(string $column, string $sql) : ?string
- {
- $pattern = '{[\s(,](?:\W' . preg_quote($this->_platform->quoteSingleIdentifier($column)) . '\W|\W' . preg_quote($column)
- . '\W)(?:\(.*?\)|[^,(])*?,?((?:(?!\n))(?:\s*--[^\n]*\n?)+)}i';
-
- if (preg_match($pattern, $sql, $match) !== 1) {
- return null;
- }
-
- $comment = preg_replace('{^\s*--}m', '', rtrim($match[1], "\n"));
-
- return $comment === '' ? null : $comment;
- }
-
- private function getCreateTableSQL(string $table) : ?string
- {
- return $this->_conn->fetchColumn(
- <<<'SQL'
-SELECT sql
- FROM (
- SELECT *
- FROM sqlite_master
- UNION ALL
- SELECT *
- FROM sqlite_temp_master
- )
-WHERE type = 'table'
-AND name = ?
-SQL
- ,
- [$table]
- ) ?: null;
- }
-
- /**
- * @param string $tableName
- */
- public function listTableDetails($tableName) : Table
- {
- $table = parent::listTableDetails($tableName);
-
- $tableCreateSql = $this->getCreateTableSQL($tableName) ?? '';
-
- $comment = $this->parseTableCommentFromSQL($tableName, $tableCreateSql);
-
- if ($comment !== null) {
- $table->addOption('comment', $comment);
- }
-
- return $table;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Synchronizer/AbstractSchemaSynchronizer.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Synchronizer/AbstractSchemaSynchronizer.php
deleted file mode 100644
index b597b8db9..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Synchronizer/AbstractSchemaSynchronizer.php
+++ /dev/null
@@ -1,43 +0,0 @@
-conn = $conn;
- }
-
- /**
- * @param string[] $sql
- */
- protected function processSqlSafely(array $sql)
- {
- foreach ($sql as $s) {
- try {
- $this->conn->exec($s);
- } catch (Throwable $e) {
- }
- }
- }
-
- /**
- * @param string[] $sql
- */
- protected function processSql(array $sql)
- {
- foreach ($sql as $s) {
- $this->conn->exec($s);
- }
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Synchronizer/SchemaSynchronizer.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Synchronizer/SchemaSynchronizer.php
deleted file mode 100644
index 3e7beea75..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Synchronizer/SchemaSynchronizer.php
+++ /dev/null
@@ -1,72 +0,0 @@
-platform = $conn->getDatabasePlatform();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getCreateSchema(Schema $createSchema)
- {
- return $createSchema->toSql($this->platform);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getUpdateSchema(Schema $toSchema, $noDrops = false)
- {
- $comparator = new Comparator();
- $sm = $this->conn->getSchemaManager();
-
- $fromSchema = $sm->createSchema();
- $schemaDiff = $comparator->compare($fromSchema, $toSchema);
-
- if ($noDrops) {
- return $schemaDiff->toSaveSql($this->platform);
- }
-
- return $schemaDiff->toSql($this->platform);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDropSchema(Schema $dropSchema)
- {
- $visitor = new DropSchemaSqlCollector($this->platform);
- $sm = $this->conn->getSchemaManager();
-
- $fullSchema = $sm->createSchema();
-
- foreach ($fullSchema->getTables() as $table) {
- if ($dropSchema->hasTable($table->getName())) {
- $visitor->acceptTable($table);
- }
-
- foreach ($table->getForeignKeys() as $foreignKey) {
- if (! $dropSchema->hasTable($table->getName())) {
- continue;
- }
-
- if (! $dropSchema->hasTable($foreignKey->getForeignTableName())) {
- continue;
- }
-
- $visitor->acceptForeignKey($table, $foreignKey);
- }
- }
-
- if (! $this->platform->supportsSequences()) {
- return $visitor->getQueries();
- }
-
- foreach ($dropSchema->getSequences() as $sequence) {
- $visitor->acceptSequence($sequence);
- }
-
- foreach ($dropSchema->getTables() as $table) {
- $primaryKey = $table->getPrimaryKey();
-
- if ($primaryKey === null) {
- continue;
- }
-
- $columns = $primaryKey->getColumns();
-
- if (count($columns) > 1) {
- continue;
- }
-
- $checkSequence = $table->getName() . '_' . $columns[0] . '_seq';
- if (! $fullSchema->hasSequence($checkSequence)) {
- continue;
- }
-
- $visitor->acceptSequence($fullSchema->getSequence($checkSequence));
- }
-
- return $visitor->getQueries();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDropAllSchema()
- {
- $sm = $this->conn->getSchemaManager();
- $visitor = new DropSchemaSqlCollector($this->platform);
-
- $schema = $sm->createSchema();
- $schema->visit($visitor);
-
- return $visitor->getQueries();
- }
-
- /**
- * {@inheritdoc}
- */
- public function createSchema(Schema $createSchema)
- {
- $this->processSql($this->getCreateSchema($createSchema));
- }
-
- /**
- * {@inheritdoc}
- */
- public function updateSchema(Schema $toSchema, $noDrops = false)
- {
- $this->processSql($this->getUpdateSchema($toSchema, $noDrops));
- }
-
- /**
- * {@inheritdoc}
- */
- public function dropSchema(Schema $dropSchema)
- {
- $this->processSqlSafely($this->getDropSchema($dropSchema));
- }
-
- /**
- * {@inheritdoc}
- */
- public function dropAllSchema()
- {
- $this->processSql($this->getDropAllSchema());
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Table.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Table.php
deleted file mode 100644
index 8e613320f..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Table.php
+++ /dev/null
@@ -1,856 +0,0 @@
- [],
- ];
-
- /** @var SchemaConfig|null */
- protected $_schemaConfig = null;
-
- /**
- * @param string $tableName
- * @param Column[] $columns
- * @param Index[] $indexes
- * @param ForeignKeyConstraint[] $fkConstraints
- * @param int $idGeneratorType
- * @param mixed[] $options
- *
- * @throws DBALException
- */
- public function __construct($tableName, array $columns = [], array $indexes = [], array $fkConstraints = [], $idGeneratorType = 0, array $options = [])
- {
- if (strlen($tableName) === 0) {
- throw DBALException::invalidTableName($tableName);
- }
-
- $this->_setName($tableName);
-
- foreach ($columns as $column) {
- $this->_addColumn($column);
- }
-
- foreach ($indexes as $idx) {
- $this->_addIndex($idx);
- }
-
- foreach ($fkConstraints as $constraint) {
- $this->_addForeignKeyConstraint($constraint);
- }
-
- $this->_options = array_merge($this->_options, $options);
- }
-
- /**
- * @return void
- */
- public function setSchemaConfig(SchemaConfig $schemaConfig)
- {
- $this->_schemaConfig = $schemaConfig;
- }
-
- /**
- * @return int
- */
- protected function _getMaxIdentifierLength()
- {
- if ($this->_schemaConfig instanceof SchemaConfig) {
- return $this->_schemaConfig->getMaxIdentifierLength();
- }
-
- return 63;
- }
-
- /**
- * Sets the Primary Key.
- *
- * @param string[] $columnNames
- * @param string|false $indexName
- *
- * @return self
- */
- public function setPrimaryKey(array $columnNames, $indexName = false)
- {
- $this->_addIndex($this->_createIndex($columnNames, $indexName ?: 'primary', true, true));
-
- foreach ($columnNames as $columnName) {
- $column = $this->getColumn($columnName);
- $column->setNotnull(true);
- }
-
- return $this;
- }
-
- /**
- * @param string[] $columnNames
- * @param string|null $indexName
- * @param string[] $flags
- * @param mixed[] $options
- *
- * @return self
- */
- public function addIndex(array $columnNames, $indexName = null, array $flags = [], array $options = [])
- {
- if ($indexName === null) {
- $indexName = $this->_generateIdentifierName(
- array_merge([$this->getName()], $columnNames),
- 'idx',
- $this->_getMaxIdentifierLength()
- );
- }
-
- return $this->_addIndex($this->_createIndex($columnNames, $indexName, false, false, $flags, $options));
- }
-
- /**
- * Drops the primary key from this table.
- *
- * @return void
- */
- public function dropPrimaryKey()
- {
- $this->dropIndex($this->_primaryKeyName);
- $this->_primaryKeyName = false;
- }
-
- /**
- * Drops an index from this table.
- *
- * @param string $indexName The index name.
- *
- * @return void
- *
- * @throws SchemaException If the index does not exist.
- */
- public function dropIndex($indexName)
- {
- $indexName = $this->normalizeIdentifier($indexName);
- if (! $this->hasIndex($indexName)) {
- throw SchemaException::indexDoesNotExist($indexName, $this->_name);
- }
- unset($this->_indexes[$indexName]);
- }
-
- /**
- * @param string[] $columnNames
- * @param string|null $indexName
- * @param mixed[] $options
- *
- * @return self
- */
- public function addUniqueIndex(array $columnNames, $indexName = null, array $options = [])
- {
- if ($indexName === null) {
- $indexName = $this->_generateIdentifierName(
- array_merge([$this->getName()], $columnNames),
- 'uniq',
- $this->_getMaxIdentifierLength()
- );
- }
-
- return $this->_addIndex($this->_createIndex($columnNames, $indexName, true, false, [], $options));
- }
-
- /**
- * Renames an index.
- *
- * @param string $oldIndexName The name of the index to rename from.
- * @param string|null $newIndexName The name of the index to rename to.
- * If null is given, the index name will be auto-generated.
- *
- * @return self This table instance.
- *
- * @throws SchemaException If no index exists for the given current name
- * or if an index with the given new name already exists on this table.
- */
- public function renameIndex($oldIndexName, $newIndexName = null)
- {
- $oldIndexName = $this->normalizeIdentifier($oldIndexName);
- $normalizedNewIndexName = $this->normalizeIdentifier($newIndexName);
-
- if ($oldIndexName === $normalizedNewIndexName) {
- return $this;
- }
-
- if (! $this->hasIndex($oldIndexName)) {
- throw SchemaException::indexDoesNotExist($oldIndexName, $this->_name);
- }
-
- if ($this->hasIndex($normalizedNewIndexName)) {
- throw SchemaException::indexAlreadyExists($normalizedNewIndexName, $this->_name);
- }
-
- $oldIndex = $this->_indexes[$oldIndexName];
-
- if ($oldIndex->isPrimary()) {
- $this->dropPrimaryKey();
-
- return $this->setPrimaryKey($oldIndex->getColumns(), $newIndexName ?? false);
- }
-
- unset($this->_indexes[$oldIndexName]);
-
- if ($oldIndex->isUnique()) {
- return $this->addUniqueIndex($oldIndex->getColumns(), $newIndexName, $oldIndex->getOptions());
- }
-
- return $this->addIndex($oldIndex->getColumns(), $newIndexName, $oldIndex->getFlags(), $oldIndex->getOptions());
- }
-
- /**
- * Checks if an index begins in the order of the given columns.
- *
- * @param string[] $columnNames
- *
- * @return bool
- */
- public function columnsAreIndexed(array $columnNames)
- {
- foreach ($this->getIndexes() as $index) {
- /** @var $index Index */
- if ($index->spansColumns($columnNames)) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * @param string[] $columnNames
- * @param string $indexName
- * @param bool $isUnique
- * @param bool $isPrimary
- * @param string[] $flags
- * @param mixed[] $options
- *
- * @return Index
- *
- * @throws SchemaException
- */
- private function _createIndex(array $columnNames, $indexName, $isUnique, $isPrimary, array $flags = [], array $options = [])
- {
- if (preg_match('(([^a-zA-Z0-9_]+))', $this->normalizeIdentifier($indexName))) {
- throw SchemaException::indexNameInvalid($indexName);
- }
-
- foreach ($columnNames as $columnName) {
- if (! $this->hasColumn($columnName)) {
- throw SchemaException::columnDoesNotExist($columnName, $this->_name);
- }
- }
-
- return new Index($indexName, $columnNames, $isUnique, $isPrimary, $flags, $options);
- }
-
- /**
- * @param string $columnName
- * @param string $typeName
- * @param mixed[] $options
- *
- * @return Column
- */
- public function addColumn($columnName, $typeName, array $options = [])
- {
- $column = new Column($columnName, Type::getType($typeName), $options);
-
- $this->_addColumn($column);
-
- return $column;
- }
-
- /**
- * Renames a Column.
- *
- * @deprecated
- *
- * @param string $oldColumnName
- * @param string $newColumnName
- *
- * @throws DBALException
- */
- public function renameColumn($oldColumnName, $newColumnName)
- {
- throw new DBALException('Table#renameColumn() was removed, because it drops and recreates ' .
- 'the column instead. There is no fix available, because a schema diff cannot reliably detect if a ' .
- 'column was renamed or one column was created and another one dropped.');
- }
-
- /**
- * Change Column Details.
- *
- * @param string $columnName
- * @param mixed[] $options
- *
- * @return self
- */
- public function changeColumn($columnName, array $options)
- {
- $column = $this->getColumn($columnName);
- $column->setOptions($options);
-
- return $this;
- }
-
- /**
- * Drops a Column from the Table.
- *
- * @param string $columnName
- *
- * @return self
- */
- public function dropColumn($columnName)
- {
- $columnName = $this->normalizeIdentifier($columnName);
- unset($this->_columns[$columnName]);
-
- return $this;
- }
-
- /**
- * Adds a foreign key constraint.
- *
- * Name is inferred from the local columns.
- *
- * @param Table|string $foreignTable Table schema instance or table name
- * @param string[] $localColumnNames
- * @param string[] $foreignColumnNames
- * @param mixed[] $options
- * @param string|null $constraintName
- *
- * @return self
- */
- public function addForeignKeyConstraint($foreignTable, array $localColumnNames, array $foreignColumnNames, array $options = [], $constraintName = null)
- {
- $constraintName = $constraintName ?: $this->_generateIdentifierName(array_merge((array) $this->getName(), $localColumnNames), 'fk', $this->_getMaxIdentifierLength());
-
- return $this->addNamedForeignKeyConstraint($constraintName, $foreignTable, $localColumnNames, $foreignColumnNames, $options);
- }
-
- /**
- * Adds a foreign key constraint.
- *
- * Name is to be generated by the database itself.
- *
- * @deprecated Use {@link addForeignKeyConstraint}
- *
- * @param Table|string $foreignTable Table schema instance or table name
- * @param string[] $localColumnNames
- * @param string[] $foreignColumnNames
- * @param mixed[] $options
- *
- * @return self
- */
- public function addUnnamedForeignKeyConstraint($foreignTable, array $localColumnNames, array $foreignColumnNames, array $options = [])
- {
- return $this->addForeignKeyConstraint($foreignTable, $localColumnNames, $foreignColumnNames, $options);
- }
-
- /**
- * Adds a foreign key constraint with a given name.
- *
- * @deprecated Use {@link addForeignKeyConstraint}
- *
- * @param string $name
- * @param Table|string $foreignTable Table schema instance or table name
- * @param string[] $localColumnNames
- * @param string[] $foreignColumnNames
- * @param mixed[] $options
- *
- * @return self
- *
- * @throws SchemaException
- */
- public function addNamedForeignKeyConstraint($name, $foreignTable, array $localColumnNames, array $foreignColumnNames, array $options = [])
- {
- if ($foreignTable instanceof Table) {
- foreach ($foreignColumnNames as $columnName) {
- if (! $foreignTable->hasColumn($columnName)) {
- throw SchemaException::columnDoesNotExist($columnName, $foreignTable->getName());
- }
- }
- }
-
- foreach ($localColumnNames as $columnName) {
- if (! $this->hasColumn($columnName)) {
- throw SchemaException::columnDoesNotExist($columnName, $this->_name);
- }
- }
-
- $constraint = new ForeignKeyConstraint(
- $localColumnNames,
- $foreignTable,
- $foreignColumnNames,
- $name,
- $options
- );
- $this->_addForeignKeyConstraint($constraint);
-
- return $this;
- }
-
- /**
- * @param string $name
- * @param mixed $value
- *
- * @return self
- */
- public function addOption($name, $value)
- {
- $this->_options[$name] = $value;
-
- return $this;
- }
-
- /**
- * @return void
- *
- * @throws SchemaException
- */
- protected function _addColumn(Column $column)
- {
- $columnName = $column->getName();
- $columnName = $this->normalizeIdentifier($columnName);
-
- if (isset($this->_columns[$columnName])) {
- throw SchemaException::columnAlreadyExists($this->getName(), $columnName);
- }
-
- $this->_columns[$columnName] = $column;
- }
-
- /**
- * Adds an index to the table.
- *
- * @return self
- *
- * @throws SchemaException
- */
- protected function _addIndex(Index $indexCandidate)
- {
- $indexName = $indexCandidate->getName();
- $indexName = $this->normalizeIdentifier($indexName);
- $replacedImplicitIndexes = [];
-
- foreach ($this->implicitIndexes as $name => $implicitIndex) {
- if (! $implicitIndex->isFullfilledBy($indexCandidate) || ! isset($this->_indexes[$name])) {
- continue;
- }
-
- $replacedImplicitIndexes[] = $name;
- }
-
- if ((isset($this->_indexes[$indexName]) && ! in_array($indexName, $replacedImplicitIndexes, true)) ||
- ($this->_primaryKeyName !== false && $indexCandidate->isPrimary())
- ) {
- throw SchemaException::indexAlreadyExists($indexName, $this->_name);
- }
-
- foreach ($replacedImplicitIndexes as $name) {
- unset($this->_indexes[$name], $this->implicitIndexes[$name]);
- }
-
- if ($indexCandidate->isPrimary()) {
- $this->_primaryKeyName = $indexName;
- }
-
- $this->_indexes[$indexName] = $indexCandidate;
-
- return $this;
- }
-
- /**
- * @return void
- */
- protected function _addForeignKeyConstraint(ForeignKeyConstraint $constraint)
- {
- $constraint->setLocalTable($this);
-
- if (strlen($constraint->getName())) {
- $name = $constraint->getName();
- } else {
- $name = $this->_generateIdentifierName(
- array_merge((array) $this->getName(), $constraint->getLocalColumns()),
- 'fk',
- $this->_getMaxIdentifierLength()
- );
- }
- $name = $this->normalizeIdentifier($name);
-
- $this->_fkConstraints[$name] = $constraint;
-
- // add an explicit index on the foreign key columns. If there is already an index that fulfils this requirements drop the request.
- // In the case of __construct calling this method during hydration from schema-details all the explicitly added indexes
- // lead to duplicates. This creates computation overhead in this case, however no duplicate indexes are ever added (based on columns).
- $indexName = $this->_generateIdentifierName(
- array_merge([$this->getName()], $constraint->getColumns()),
- 'idx',
- $this->_getMaxIdentifierLength()
- );
- $indexCandidate = $this->_createIndex($constraint->getColumns(), $indexName, false, false);
-
- foreach ($this->_indexes as $existingIndex) {
- if ($indexCandidate->isFullfilledBy($existingIndex)) {
- return;
- }
- }
-
- $this->_addIndex($indexCandidate);
- $this->implicitIndexes[$this->normalizeIdentifier($indexName)] = $indexCandidate;
- }
-
- /**
- * Returns whether this table has a foreign key constraint with the given name.
- *
- * @param string $constraintName
- *
- * @return bool
- */
- public function hasForeignKey($constraintName)
- {
- $constraintName = $this->normalizeIdentifier($constraintName);
-
- return isset($this->_fkConstraints[$constraintName]);
- }
-
- /**
- * Returns the foreign key constraint with the given name.
- *
- * @param string $constraintName The constraint name.
- *
- * @return ForeignKeyConstraint
- *
- * @throws SchemaException If the foreign key does not exist.
- */
- public function getForeignKey($constraintName)
- {
- $constraintName = $this->normalizeIdentifier($constraintName);
- if (! $this->hasForeignKey($constraintName)) {
- throw SchemaException::foreignKeyDoesNotExist($constraintName, $this->_name);
- }
-
- return $this->_fkConstraints[$constraintName];
- }
-
- /**
- * Removes the foreign key constraint with the given name.
- *
- * @param string $constraintName The constraint name.
- *
- * @return void
- *
- * @throws SchemaException
- */
- public function removeForeignKey($constraintName)
- {
- $constraintName = $this->normalizeIdentifier($constraintName);
- if (! $this->hasForeignKey($constraintName)) {
- throw SchemaException::foreignKeyDoesNotExist($constraintName, $this->_name);
- }
-
- unset($this->_fkConstraints[$constraintName]);
- }
-
- /**
- * Returns ordered list of columns (primary keys are first, then foreign keys, then the rest)
- *
- * @return Column[]
- */
- public function getColumns()
- {
- $primaryKey = $this->getPrimaryKey();
- $primaryKeyColumns = [];
-
- if ($primaryKey !== null) {
- $primaryKeyColumns = $this->filterColumns($primaryKey->getColumns());
- }
-
- return array_merge($primaryKeyColumns, $this->getForeignKeyColumns(), $this->_columns);
- }
-
- /**
- * Returns foreign key columns
- *
- * @return Column[]
- */
- private function getForeignKeyColumns()
- {
- $foreignKeyColumns = [];
- foreach ($this->getForeignKeys() as $foreignKey) {
- $foreignKeyColumns = array_merge($foreignKeyColumns, $foreignKey->getColumns());
- }
-
- return $this->filterColumns($foreignKeyColumns);
- }
-
- /**
- * Returns only columns that have specified names
- *
- * @param string[] $columnNames
- *
- * @return Column[]
- */
- private function filterColumns(array $columnNames)
- {
- return array_filter($this->_columns, static function ($columnName) use ($columnNames) {
- return in_array($columnName, $columnNames, true);
- }, ARRAY_FILTER_USE_KEY);
- }
-
- /**
- * Returns whether this table has a Column with the given name.
- *
- * @param string $columnName The column name.
- *
- * @return bool
- */
- public function hasColumn($columnName)
- {
- $columnName = $this->normalizeIdentifier($columnName);
-
- return isset($this->_columns[$columnName]);
- }
-
- /**
- * Returns the Column with the given name.
- *
- * @param string $columnName The column name.
- *
- * @return Column
- *
- * @throws SchemaException If the column does not exist.
- */
- public function getColumn($columnName)
- {
- $columnName = $this->normalizeIdentifier($columnName);
- if (! $this->hasColumn($columnName)) {
- throw SchemaException::columnDoesNotExist($columnName, $this->_name);
- }
-
- return $this->_columns[$columnName];
- }
-
- /**
- * Returns the primary key.
- *
- * @return Index|null The primary key, or null if this Table has no primary key.
- */
- public function getPrimaryKey()
- {
- if (! $this->hasPrimaryKey()) {
- return null;
- }
-
- return $this->getIndex($this->_primaryKeyName);
- }
-
- /**
- * Returns the primary key columns.
- *
- * @return string[]
- *
- * @throws DBALException
- */
- public function getPrimaryKeyColumns()
- {
- $primaryKey = $this->getPrimaryKey();
-
- if ($primaryKey === null) {
- throw new DBALException('Table ' . $this->getName() . ' has no primary key.');
- }
-
- return $primaryKey->getColumns();
- }
-
- /**
- * Returns whether this table has a primary key.
- *
- * @return bool
- */
- public function hasPrimaryKey()
- {
- return $this->_primaryKeyName && $this->hasIndex($this->_primaryKeyName);
- }
-
- /**
- * Returns whether this table has an Index with the given name.
- *
- * @param string $indexName The index name.
- *
- * @return bool
- */
- public function hasIndex($indexName)
- {
- $indexName = $this->normalizeIdentifier($indexName);
-
- return isset($this->_indexes[$indexName]);
- }
-
- /**
- * Returns the Index with the given name.
- *
- * @param string $indexName The index name.
- *
- * @return Index
- *
- * @throws SchemaException If the index does not exist.
- */
- public function getIndex($indexName)
- {
- $indexName = $this->normalizeIdentifier($indexName);
- if (! $this->hasIndex($indexName)) {
- throw SchemaException::indexDoesNotExist($indexName, $this->_name);
- }
-
- return $this->_indexes[$indexName];
- }
-
- /**
- * @return Index[]
- */
- public function getIndexes()
- {
- return $this->_indexes;
- }
-
- /**
- * Returns the foreign key constraints.
- *
- * @return ForeignKeyConstraint[]
- */
- public function getForeignKeys()
- {
- return $this->_fkConstraints;
- }
-
- /**
- * @param string $name
- *
- * @return bool
- */
- public function hasOption($name)
- {
- return isset($this->_options[$name]);
- }
-
- /**
- * @param string $name
- *
- * @return mixed
- */
- public function getOption($name)
- {
- return $this->_options[$name];
- }
-
- /**
- * @return mixed[]
- */
- public function getOptions()
- {
- return $this->_options;
- }
-
- /**
- * @return void
- */
- public function visit(Visitor $visitor)
- {
- $visitor->acceptTable($this);
-
- foreach ($this->getColumns() as $column) {
- $visitor->acceptColumn($this, $column);
- }
-
- foreach ($this->getIndexes() as $index) {
- $visitor->acceptIndex($this, $index);
- }
-
- foreach ($this->getForeignKeys() as $constraint) {
- $visitor->acceptForeignKey($this, $constraint);
- }
- }
-
- /**
- * Clone of a Table triggers a deep clone of all affected assets.
- *
- * @return void
- */
- public function __clone()
- {
- foreach ($this->_columns as $k => $column) {
- $this->_columns[$k] = clone $column;
- }
- foreach ($this->_indexes as $k => $index) {
- $this->_indexes[$k] = clone $index;
- }
- foreach ($this->_fkConstraints as $k => $fk) {
- $this->_fkConstraints[$k] = clone $fk;
- $this->_fkConstraints[$k]->setLocalTable($this);
- }
- }
-
- /**
- * Normalizes a given identifier.
- *
- * Trims quotes and lowercases the given identifier.
- *
- * @param string|null $identifier The identifier to normalize.
- *
- * @return string The normalized identifier.
- */
- private function normalizeIdentifier($identifier)
- {
- if ($identifier === null) {
- return '';
- }
-
- return $this->trimQuotes(strtolower($identifier));
- }
-
- public function setComment(?string $comment) : self
- {
- // For keeping backward compatibility with MySQL in previous releases, table comments are stored as options.
- $this->addOption('comment', $comment);
-
- return $this;
- }
-
- public function getComment() : ?string
- {
- return $this->_options['comment'] ?? null;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/TableDiff.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/TableDiff.php
deleted file mode 100644
index 1ff2c0ad1..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/TableDiff.php
+++ /dev/null
@@ -1,152 +0,0 @@
-name = $tableName;
- $this->addedColumns = $addedColumns;
- $this->changedColumns = $changedColumns;
- $this->removedColumns = $removedColumns;
- $this->addedIndexes = $addedIndexes;
- $this->changedIndexes = $changedIndexes;
- $this->removedIndexes = $removedIndexes;
- $this->fromTable = $fromTable;
- }
-
- /**
- * @param AbstractPlatform $platform The platform to use for retrieving this table diff's name.
- *
- * @return Identifier
- */
- public function getName(AbstractPlatform $platform)
- {
- return new Identifier(
- $this->fromTable instanceof Table ? $this->fromTable->getQuotedName($platform) : $this->name
- );
- }
-
- /**
- * @return Identifier|false
- */
- public function getNewName()
- {
- if ($this->newName === false) {
- return false;
- }
-
- return new Identifier($this->newName);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/View.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/View.php
deleted file mode 100644
index ac8d6cb5c..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/View.php
+++ /dev/null
@@ -1,30 +0,0 @@
-_setName($name);
- $this->sql = $sql;
- }
-
- /**
- * @return string
- */
- public function getSql()
- {
- return $this->sql;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/AbstractVisitor.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/AbstractVisitor.php
deleted file mode 100644
index 471690442..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/AbstractVisitor.php
+++ /dev/null
@@ -1,47 +0,0 @@
-platform = $platform;
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptNamespace($namespaceName)
- {
- if (! $this->platform->supportsSchemas()) {
- return;
- }
-
- $this->createNamespaceQueries[] = $this->platform->getCreateSchemaSQL($namespaceName);
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptTable(Table $table)
- {
- $this->createTableQueries = array_merge($this->createTableQueries, $this->platform->getCreateTableSQL($table));
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptForeignKey(Table $localTable, ForeignKeyConstraint $fkConstraint)
- {
- if (! $this->platform->supportsForeignKeyConstraints()) {
- return;
- }
-
- $this->createFkConstraintQueries[] = $this->platform->getCreateForeignKeySQL($fkConstraint, $localTable);
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptSequence(Sequence $sequence)
- {
- $this->createSequenceQueries[] = $this->platform->getCreateSequenceSQL($sequence);
- }
-
- /**
- * @return void
- */
- public function resetQueries()
- {
- $this->createNamespaceQueries = [];
- $this->createTableQueries = [];
- $this->createSequenceQueries = [];
- $this->createFkConstraintQueries = [];
- }
-
- /**
- * Gets all queries collected so far.
- *
- * @return string[]
- */
- public function getQueries()
- {
- return array_merge(
- $this->createNamespaceQueries,
- $this->createTableQueries,
- $this->createSequenceQueries,
- $this->createFkConstraintQueries
- );
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/DropSchemaSqlCollector.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/DropSchemaSqlCollector.php
deleted file mode 100644
index 81e202312..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/DropSchemaSqlCollector.php
+++ /dev/null
@@ -1,99 +0,0 @@
-platform = $platform;
- $this->clearQueries();
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptTable(Table $table)
- {
- $this->tables->attach($table);
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptForeignKey(Table $localTable, ForeignKeyConstraint $fkConstraint)
- {
- if (strlen($fkConstraint->getName()) === 0) {
- throw SchemaException::namedForeignKeyRequired($localTable, $fkConstraint);
- }
-
- $this->constraints->attach($fkConstraint, $localTable);
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptSequence(Sequence $sequence)
- {
- $this->sequences->attach($sequence);
- }
-
- /**
- * @return void
- */
- public function clearQueries()
- {
- $this->constraints = new SplObjectStorage();
- $this->sequences = new SplObjectStorage();
- $this->tables = new SplObjectStorage();
- }
-
- /**
- * @return string[]
- */
- public function getQueries()
- {
- $sql = [];
-
- /** @var ForeignKeyConstraint $fkConstraint */
- foreach ($this->constraints as $fkConstraint) {
- $localTable = $this->constraints[$fkConstraint];
- $sql[] = $this->platform->getDropForeignKeySQL($fkConstraint, $localTable);
- }
-
- /** @var Sequence $sequence */
- foreach ($this->sequences as $sequence) {
- $sql[] = $this->platform->getDropSequenceSQL($sequence);
- }
-
- /** @var Table $table */
- foreach ($this->tables as $table) {
- $sql[] = $this->platform->getDropTableSQL($table);
- }
-
- return $sql;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/Graphviz.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/Graphviz.php
deleted file mode 100644
index d5e94cf6e..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/Graphviz.php
+++ /dev/null
@@ -1,160 +0,0 @@
-output .= $this->createNodeRelation(
- $fkConstraint->getLocalTableName() . ':col' . current($fkConstraint->getLocalColumns()) . ':se',
- $fkConstraint->getForeignTableName() . ':col' . current($fkConstraint->getForeignColumns()) . ':se',
- [
- 'dir' => 'back',
- 'arrowtail' => 'dot',
- 'arrowhead' => 'normal',
- ]
- );
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptSchema(Schema $schema)
- {
- $this->output = 'digraph "' . $schema->getName() . '" {' . "\n";
- $this->output .= 'splines = true;' . "\n";
- $this->output .= 'overlap = false;' . "\n";
- $this->output .= 'outputorder=edgesfirst;' . "\n";
- $this->output .= 'mindist = 0.6;' . "\n";
- $this->output .= 'sep = .2;' . "\n";
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptTable(Table $table)
- {
- $this->output .= $this->createNode(
- $table->getName(),
- [
- 'label' => $this->createTableLabel($table),
- 'shape' => 'plaintext',
- ]
- );
- }
-
- /**
- * @return string
- */
- private function createTableLabel(Table $table)
- {
- // Start the table
- $label = '<';
-
- // The title
- $label .= '| ' . $table->getName() . ' |
';
-
- // The attributes block
- foreach ($table->getColumns() as $column) {
- $columnLabel = $column->getName();
-
- $label .= '';
- $label .= '| ';
- $label .= '' . $columnLabel . '';
- $label .= ' | ' . strtolower($column->getType()) . ' | ';
- $label .= '';
-
- $primaryKey = $table->getPrimaryKey();
-
- if ($primaryKey !== null && in_array($column->getName(), $primaryKey->getColumns())) {
- $label .= "\xe2\x9c\xb7";
- }
- $label .= ' |
';
- }
-
- // End the table
- $label .= '
>';
-
- return $label;
- }
-
- /**
- * @param string $name
- * @param string[] $options
- *
- * @return string
- */
- private function createNode($name, $options)
- {
- $node = $name . ' [';
- foreach ($options as $key => $value) {
- $node .= $key . '=' . $value . ' ';
- }
- $node .= "]\n";
-
- return $node;
- }
-
- /**
- * @param string $node1
- * @param string $node2
- * @param string[] $options
- *
- * @return string
- */
- private function createNodeRelation($node1, $node2, $options)
- {
- $relation = $node1 . ' -> ' . $node2 . ' [';
- foreach ($options as $key => $value) {
- $relation .= $key . '=' . $value . ' ';
- }
- $relation .= "]\n";
-
- return $relation;
- }
-
- /**
- * Get Graphviz Output
- *
- * @return string
- */
- public function getOutput()
- {
- return $this->output . '}';
- }
-
- /**
- * Writes dot language output to a file. This should usually be a *.dot file.
- *
- * You have to convert the output into a viewable format. For example use "neato" on linux systems
- * and execute:
- *
- * neato -Tpng -o er.png er.dot
- *
- * @param string $filename
- *
- * @return void
- */
- public function write($filename)
- {
- file_put_contents($filename, $this->getOutput());
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/NamespaceVisitor.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/NamespaceVisitor.php
deleted file mode 100644
index 186fe1b42..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/NamespaceVisitor.php
+++ /dev/null
@@ -1,16 +0,0 @@
-schema = $schema;
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptTable(Table $table)
- {
- if ($table->isInDefaultNamespace($this->schema->getName())) {
- return;
- }
-
- $this->schema->dropTable($table->getName());
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptSequence(Sequence $sequence)
- {
- if ($sequence->isInDefaultNamespace($this->schema->getName())) {
- return;
- }
-
- $this->schema->dropSequence($sequence->getName());
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptForeignKey(Table $localTable, ForeignKeyConstraint $fkConstraint)
- {
- // The table may already be deleted in a previous
- // RemoveNamespacedAssets#acceptTable call. Removing Foreign keys that
- // point to nowhere.
- if (! $this->schema->hasTable($fkConstraint->getForeignTableName())) {
- $localTable->removeForeignKey($fkConstraint->getName());
-
- return;
- }
-
- $foreignTable = $this->schema->getTable($fkConstraint->getForeignTableName());
- if ($foreignTable->isInDefaultNamespace($this->schema->getName())) {
- return;
- }
-
- $localTable->removeForeignKey($fkConstraint->getName());
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/SchemaDiffVisitor.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/SchemaDiffVisitor.php
deleted file mode 100644
index 5ec843d9b..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Schema/Visitor/SchemaDiffVisitor.php
+++ /dev/null
@@ -1,39 +0,0 @@
- "client" to the ShardChoser interface.
- * - An exception is thrown if trying to switch shards during an open
- * transaction.
- *
- * Instantiation through the DriverManager looks like:
- *
- * @example
- *
- * $conn = DriverManager::getConnection(array(
- * 'wrapperClass' => 'Doctrine\DBAL\Sharding\PoolingShardConnection',
- * 'driver' => 'pdo_mysql',
- * 'global' => array('user' => '', 'password' => '', 'host' => '', 'dbname' => ''),
- * 'shards' => array(
- * array('id' => 1, 'user' => 'slave1', 'password', 'host' => '', 'dbname' => ''),
- * array('id' => 2, 'user' => 'slave2', 'password', 'host' => '', 'dbname' => ''),
- * ),
- * 'shardChoser' => 'Doctrine\DBAL\Sharding\ShardChoser\MultiTenantShardChoser',
- * ));
- * $shardManager = $conn->getShardManager();
- * $shardManager->selectGlobal();
- * $shardManager->selectShard($value);
- */
-class PoolingShardConnection extends Connection
-{
- /** @var DriverConnection[] */
- private $activeConnections = [];
-
- /** @var string|int|null */
- private $activeShardId;
-
- /** @var mixed[] */
- private $connectionParameters = [];
-
- /**
- * {@inheritDoc}
- *
- * @throws InvalidArgumentException
- */
- public function __construct(array $params, Driver $driver, ?Configuration $config = null, ?EventManager $eventManager = null)
- {
- if (! isset($params['global'], $params['shards'])) {
- throw new InvalidArgumentException("Connection Parameters require 'global' and 'shards' configurations.");
- }
-
- if (! isset($params['shardChoser'])) {
- throw new InvalidArgumentException("Missing Shard Choser configuration 'shardChoser'");
- }
-
- if (is_string($params['shardChoser'])) {
- $params['shardChoser'] = new $params['shardChoser']();
- }
-
- if (! ($params['shardChoser'] instanceof ShardChoser)) {
- throw new InvalidArgumentException("The 'shardChoser' configuration is not a valid instance of Doctrine\DBAL\Sharding\ShardChoser\ShardChoser");
- }
-
- $this->connectionParameters[0] = array_merge($params, $params['global']);
-
- foreach ($params['shards'] as $shard) {
- if (! isset($shard['id'])) {
- throw new InvalidArgumentException("Missing 'id' for one configured shard. Please specify a unique shard-id.");
- }
-
- if (! is_numeric($shard['id']) || $shard['id'] < 1) {
- throw new InvalidArgumentException('Shard Id has to be a non-negative number.');
- }
-
- if (isset($this->connectionParameters[$shard['id']])) {
- throw new InvalidArgumentException('Shard ' . $shard['id'] . ' is duplicated in the configuration.');
- }
-
- $this->connectionParameters[$shard['id']] = array_merge($params, $shard);
- }
-
- parent::__construct($params, $driver, $config, $eventManager);
- }
-
- /**
- * Get active shard id.
- *
- * @return string|int|null
- */
- public function getActiveShardId()
- {
- return $this->activeShardId;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getParams()
- {
- return $this->activeShardId ? $this->connectionParameters[$this->activeShardId] : $this->connectionParameters[0];
- }
-
- /**
- * {@inheritdoc}
- */
- public function getHost()
- {
- $params = $this->getParams();
-
- return $params['host'] ?? parent::getHost();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getPort()
- {
- $params = $this->getParams();
-
- return $params['port'] ?? parent::getPort();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getUsername()
- {
- $params = $this->getParams();
-
- return $params['user'] ?? parent::getUsername();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getPassword()
- {
- $params = $this->getParams();
-
- return $params['password'] ?? parent::getPassword();
- }
-
- /**
- * Connects to a given shard.
- *
- * @param string|int|null $shardId
- *
- * @return bool
- *
- * @throws ShardingException
- */
- public function connect($shardId = null)
- {
- if ($shardId === null && $this->_conn) {
- return false;
- }
-
- if ($shardId !== null && $shardId === $this->activeShardId) {
- return false;
- }
-
- if ($this->getTransactionNestingLevel() > 0) {
- throw new ShardingException('Cannot switch shard when transaction is active.');
- }
-
- $activeShardId = $this->activeShardId = (int) $shardId;
-
- if (isset($this->activeConnections[$activeShardId])) {
- $this->_conn = $this->activeConnections[$activeShardId];
-
- return false;
- }
-
- $this->_conn = $this->activeConnections[$activeShardId] = $this->connectTo($activeShardId);
-
- if ($this->_eventManager->hasListeners(Events::postConnect)) {
- $eventArgs = new ConnectionEventArgs($this);
- $this->_eventManager->dispatchEvent(Events::postConnect, $eventArgs);
- }
-
- return true;
- }
-
- /**
- * Connects to a specific connection.
- *
- * @param string|int $shardId
- *
- * @return \Doctrine\DBAL\Driver\Connection
- */
- protected function connectTo($shardId)
- {
- $params = $this->getParams();
-
- $driverOptions = $params['driverOptions'] ?? [];
-
- $connectionParams = $this->connectionParameters[$shardId];
-
- $user = $connectionParams['user'] ?? null;
- $password = $connectionParams['password'] ?? null;
-
- return $this->_driver->connect($connectionParams, $user, $password, $driverOptions);
- }
-
- /**
- * @param string|int|null $shardId
- *
- * @return bool
- */
- public function isConnected($shardId = null)
- {
- if ($shardId === null) {
- return $this->_conn !== null;
- }
-
- return isset($this->activeConnections[$shardId]);
- }
-
- /**
- * @return void
- */
- public function close()
- {
- $this->_conn = null;
- $this->activeConnections = [];
- $this->activeShardId = null;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Sharding/PoolingShardManager.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Sharding/PoolingShardManager.php
deleted file mode 100644
index 5edc56b87..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Sharding/PoolingShardManager.php
+++ /dev/null
@@ -1,101 +0,0 @@
-getParams();
- $this->conn = $conn;
- $this->choser = $params['shardChoser'];
- }
-
- /**
- * {@inheritDoc}
- */
- public function selectGlobal()
- {
- $this->conn->connect(0);
- $this->currentDistributionValue = null;
- }
-
- /**
- * {@inheritDoc}
- */
- public function selectShard($distributionValue)
- {
- $shardId = $this->choser->pickShard($distributionValue, $this->conn);
- $this->conn->connect($shardId);
- $this->currentDistributionValue = $distributionValue;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCurrentDistributionValue()
- {
- return $this->currentDistributionValue;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getShards()
- {
- $params = $this->conn->getParams();
- $shards = [];
-
- foreach ($params['shards'] as $shard) {
- $shards[] = ['id' => $shard['id']];
- }
-
- return $shards;
- }
-
- /**
- * {@inheritDoc}
- *
- * @throws RuntimeException
- */
- public function queryAll($sql, array $params, array $types)
- {
- $shards = $this->getShards();
- if (! $shards) {
- throw new RuntimeException('No shards found.');
- }
-
- $result = [];
- $oldDistribution = $this->getCurrentDistributionValue();
-
- foreach ($shards as $shard) {
- $this->conn->connect($shard['id']);
- foreach ($this->conn->fetchAll($sql, $params, $types) as $row) {
- $result[] = $row;
- }
- }
-
- if ($oldDistribution === null) {
- $this->selectGlobal();
- } else {
- $this->selectShard($oldDistribution);
- }
-
- return $result;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Sharding/SQLAzure/SQLAzureFederationsSynchronizer.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Sharding/SQLAzure/SQLAzureFederationsSynchronizer.php
deleted file mode 100644
index 417f674a3..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Sharding/SQLAzure/SQLAzureFederationsSynchronizer.php
+++ /dev/null
@@ -1,271 +0,0 @@
-shardManager = $shardManager;
- $this->synchronizer = $sync ?: new SingleDatabaseSynchronizer($conn);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getCreateSchema(Schema $createSchema)
- {
- $sql = [];
-
- [$global, $federation] = $this->partitionSchema($createSchema);
-
- $globalSql = $this->synchronizer->getCreateSchema($global);
- if ($globalSql) {
- $sql[] = "-- Create Root Federation\n" .
- 'USE FEDERATION ROOT WITH RESET;';
- $sql = array_merge($sql, $globalSql);
- }
-
- $federationSql = $this->synchronizer->getCreateSchema($federation);
-
- if ($federationSql) {
- $defaultValue = $this->getFederationTypeDefaultValue();
-
- $sql[] = $this->getCreateFederationStatement();
- $sql[] = 'USE FEDERATION ' . $this->shardManager->getFederationName() . ' (' . $this->shardManager->getDistributionKey() . ' = ' . $defaultValue . ') WITH RESET, FILTERING = OFF;';
- $sql = array_merge($sql, $federationSql);
- }
-
- return $sql;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getUpdateSchema(Schema $toSchema, $noDrops = false)
- {
- return $this->work($toSchema, static function ($synchronizer, $schema) use ($noDrops) {
- return $synchronizer->getUpdateSchema($schema, $noDrops);
- });
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDropSchema(Schema $dropSchema)
- {
- return $this->work($dropSchema, static function ($synchronizer, $schema) {
- return $synchronizer->getDropSchema($schema);
- });
- }
-
- /**
- * {@inheritdoc}
- */
- public function createSchema(Schema $createSchema)
- {
- $this->processSql($this->getCreateSchema($createSchema));
- }
-
- /**
- * {@inheritdoc}
- */
- public function updateSchema(Schema $toSchema, $noDrops = false)
- {
- $this->processSql($this->getUpdateSchema($toSchema, $noDrops));
- }
-
- /**
- * {@inheritdoc}
- */
- public function dropSchema(Schema $dropSchema)
- {
- $this->processSqlSafely($this->getDropSchema($dropSchema));
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDropAllSchema()
- {
- $this->shardManager->selectGlobal();
- $globalSql = $this->synchronizer->getDropAllSchema();
-
- if ($globalSql) {
- $sql[] = "-- Work on Root Federation\nUSE FEDERATION ROOT WITH RESET;";
- $sql = array_merge($sql, $globalSql);
- }
-
- $shards = $this->shardManager->getShards();
- foreach ($shards as $shard) {
- $this->shardManager->selectShard($shard['rangeLow']);
-
- $federationSql = $this->synchronizer->getDropAllSchema();
- if (! $federationSql) {
- continue;
- }
-
- $sql[] = '-- Work on Federation ID ' . $shard['id'] . "\n" .
- 'USE FEDERATION ' . $this->shardManager->getFederationName() . ' (' . $this->shardManager->getDistributionKey() . ' = ' . $shard['rangeLow'] . ') WITH RESET, FILTERING = OFF;';
- $sql = array_merge($sql, $federationSql);
- }
-
- $sql[] = 'USE FEDERATION ROOT WITH RESET;';
- $sql[] = 'DROP FEDERATION ' . $this->shardManager->getFederationName();
-
- return $sql;
- }
-
- /**
- * {@inheritdoc}
- */
- public function dropAllSchema()
- {
- $this->processSqlSafely($this->getDropAllSchema());
- }
-
- /**
- * @return Schema[]
- */
- private function partitionSchema(Schema $schema)
- {
- return [
- $this->extractSchemaFederation($schema, false),
- $this->extractSchemaFederation($schema, true),
- ];
- }
-
- /**
- * @param bool $isFederation
- *
- * @return Schema
- *
- * @throws RuntimeException
- */
- private function extractSchemaFederation(Schema $schema, $isFederation)
- {
- $partitionedSchema = clone $schema;
-
- foreach ($partitionedSchema->getTables() as $table) {
- if ($isFederation) {
- $table->addOption(self::FEDERATION_DISTRIBUTION_NAME, $this->shardManager->getDistributionKey());
- }
-
- if ($table->hasOption(self::FEDERATION_TABLE_FEDERATED) !== $isFederation) {
- $partitionedSchema->dropTable($table->getName());
- } else {
- foreach ($table->getForeignKeys() as $fk) {
- $foreignTable = $schema->getTable($fk->getForeignTableName());
- if ($foreignTable->hasOption(self::FEDERATION_TABLE_FEDERATED) !== $isFederation) {
- throw new RuntimeException('Cannot have foreign key between global/federation.');
- }
- }
- }
- }
-
- return $partitionedSchema;
- }
-
- /**
- * Work on the Global/Federation based on currently existing shards and
- * perform the given operation on the underlying schema synchronizer given
- * the different partitioned schema instances.
- *
- * @return string[]
- */
- private function work(Schema $schema, Closure $operation)
- {
- [$global, $federation] = $this->partitionSchema($schema);
- $sql = [];
-
- $this->shardManager->selectGlobal();
- $globalSql = $operation($this->synchronizer, $global);
-
- if ($globalSql) {
- $sql[] = "-- Work on Root Federation\nUSE FEDERATION ROOT WITH RESET;";
- $sql = array_merge($sql, $globalSql);
- }
-
- $shards = $this->shardManager->getShards();
-
- foreach ($shards as $shard) {
- $this->shardManager->selectShard($shard['rangeLow']);
-
- $federationSql = $operation($this->synchronizer, $federation);
- if (! $federationSql) {
- continue;
- }
-
- $sql[] = '-- Work on Federation ID ' . $shard['id'] . "\n" .
- 'USE FEDERATION ' . $this->shardManager->getFederationName() . ' (' . $this->shardManager->getDistributionKey() . ' = ' . $shard['rangeLow'] . ') WITH RESET, FILTERING = OFF;';
- $sql = array_merge($sql, $federationSql);
- }
-
- return $sql;
- }
-
- /**
- * @return string
- */
- private function getFederationTypeDefaultValue()
- {
- $federationType = Type::getType($this->shardManager->getDistributionType());
-
- switch ($federationType->getName()) {
- case Types::GUID:
- $defaultValue = '00000000-0000-0000-0000-000000000000';
- break;
- case Types::INTEGER:
- case Types::SMALLINT:
- case Types::BIGINT:
- $defaultValue = '0';
- break;
- default:
- $defaultValue = '';
- break;
- }
-
- return $defaultValue;
- }
-
- /**
- * @return string
- */
- private function getCreateFederationStatement()
- {
- $federationType = Type::getType($this->shardManager->getDistributionType());
- $federationTypeSql = $federationType->getSQLDeclaration([], $this->conn->getDatabasePlatform());
-
- return "--Create Federation\n" .
- 'CREATE FEDERATION ' . $this->shardManager->getFederationName() . ' (' . $this->shardManager->getDistributionKey() . ' ' . $federationTypeSql . ' RANGE)';
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Sharding/SQLAzure/SQLAzureShardManager.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Sharding/SQLAzure/SQLAzureShardManager.php
deleted file mode 100644
index d8178ee07..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Sharding/SQLAzure/SQLAzureShardManager.php
+++ /dev/null
@@ -1,208 +0,0 @@
-conn = $conn;
- $params = $conn->getParams();
-
- if (! isset($params['sharding']['federationName'])) {
- throw ShardingException::missingDefaultFederationName();
- }
-
- if (! isset($params['sharding']['distributionKey'])) {
- throw ShardingException::missingDefaultDistributionKey();
- }
-
- if (! isset($params['sharding']['distributionType'])) {
- throw ShardingException::missingDistributionType();
- }
-
- $this->federationName = $params['sharding']['federationName'];
- $this->distributionKey = $params['sharding']['distributionKey'];
- $this->distributionType = $params['sharding']['distributionType'];
- $this->filteringEnabled = (bool) ($params['sharding']['filteringEnabled'] ?? false);
- }
-
- /**
- * Gets the name of the federation.
- *
- * @return string
- */
- public function getFederationName()
- {
- return $this->federationName;
- }
-
- /**
- * Gets the distribution key.
- *
- * @return string
- */
- public function getDistributionKey()
- {
- return $this->distributionKey;
- }
-
- /**
- * Gets the Doctrine Type name used for the distribution.
- *
- * @return string
- */
- public function getDistributionType()
- {
- return $this->distributionType;
- }
-
- /**
- * Sets Enabled/Disable filtering on the fly.
- *
- * @param bool $flag
- *
- * @return void
- */
- public function setFilteringEnabled($flag)
- {
- $this->filteringEnabled = (bool) $flag;
- }
-
- /**
- * {@inheritDoc}
- */
- public function selectGlobal()
- {
- if ($this->conn->isTransactionActive()) {
- throw ShardingException::activeTransaction();
- }
-
- $sql = 'USE FEDERATION ROOT WITH RESET';
- $this->conn->exec($sql);
- $this->currentDistributionValue = null;
- }
-
- /**
- * {@inheritDoc}
- */
- public function selectShard($distributionValue)
- {
- if ($this->conn->isTransactionActive()) {
- throw ShardingException::activeTransaction();
- }
-
- $platform = $this->conn->getDatabasePlatform();
- $sql = sprintf(
- 'USE FEDERATION %s (%s = %s) WITH RESET, FILTERING = %s;',
- $platform->quoteIdentifier($this->federationName),
- $platform->quoteIdentifier($this->distributionKey),
- $this->conn->quote($distributionValue),
- ($this->filteringEnabled ? 'ON' : 'OFF')
- );
-
- $this->conn->exec($sql);
- $this->currentDistributionValue = $distributionValue;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getCurrentDistributionValue()
- {
- return $this->currentDistributionValue;
- }
-
- /**
- * {@inheritDoc}
- */
- public function getShards()
- {
- $sql = 'SELECT member_id as id,
- distribution_name as distribution_key,
- CAST(range_low AS CHAR) AS rangeLow,
- CAST(range_high AS CHAR) AS rangeHigh
- FROM sys.federation_member_distributions d
- INNER JOIN sys.federations f ON f.federation_id = d.federation_id
- WHERE f.name = ' . $this->conn->quote($this->federationName);
-
- return $this->conn->fetchAll($sql);
- }
-
- /**
- * {@inheritDoc}
- */
- public function queryAll($sql, array $params = [], array $types = [])
- {
- $shards = $this->getShards();
- if (! $shards) {
- throw new RuntimeException('No shards found for ' . $this->federationName);
- }
-
- $result = [];
- $oldDistribution = $this->getCurrentDistributionValue();
-
- foreach ($shards as $shard) {
- $this->selectShard($shard['rangeLow']);
- foreach ($this->conn->fetchAll($sql, $params, $types) as $row) {
- $result[] = $row;
- }
- }
-
- if ($oldDistribution === null) {
- $this->selectGlobal();
- } else {
- $this->selectShard($oldDistribution);
- }
-
- return $result;
- }
-
- /**
- * Splits Federation at a given distribution value.
- *
- * @param mixed $splitDistributionValue
- *
- * @return void
- */
- public function splitFederation($splitDistributionValue)
- {
- $type = Type::getType($this->distributionType);
-
- $sql = 'ALTER FEDERATION ' . $this->getFederationName() . ' ' .
- 'SPLIT AT (' . $this->getDistributionKey() . ' = ' .
- $this->conn->quote($splitDistributionValue, $type->getBindingType()) . ')';
- $this->conn->exec($sql);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Sharding/SQLAzure/Schema/MultiTenantVisitor.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Sharding/SQLAzure/Schema/MultiTenantVisitor.php
deleted file mode 100644
index a83b401c2..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Sharding/SQLAzure/Schema/MultiTenantVisitor.php
+++ /dev/null
@@ -1,148 +0,0 @@
-excludedTables = $excludedTables;
- $this->tenantColumnName = $tenantColumnName;
- $this->distributionName = $distributionName ?: $tenantColumnName;
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptTable(Table $table)
- {
- if (in_array($table->getName(), $this->excludedTables)) {
- return;
- }
-
- $table->addColumn($this->tenantColumnName, $this->tenantColumnType, [
- 'default' => "federation_filtering_value('" . $this->distributionName . "')",
- ]);
-
- $clusteredIndex = $this->getClusteredIndex($table);
-
- $indexColumns = $clusteredIndex->getColumns();
- $indexColumns[] = $this->tenantColumnName;
-
- if ($clusteredIndex->isPrimary()) {
- $table->dropPrimaryKey();
- $table->setPrimaryKey($indexColumns);
- } else {
- $table->dropIndex($clusteredIndex->getName());
- $table->addIndex($indexColumns, $clusteredIndex->getName());
- $table->getIndex($clusteredIndex->getName())->addFlag('clustered');
- }
- }
-
- /**
- * @param Table $table
- *
- * @return Index
- *
- * @throws RuntimeException
- */
- private function getClusteredIndex($table)
- {
- foreach ($table->getIndexes() as $index) {
- if ($index->isPrimary() && ! $index->hasFlag('nonclustered')) {
- return $index;
- }
-
- if ($index->hasFlag('clustered')) {
- return $index;
- }
- }
- throw new RuntimeException('No clustered index found on table ' . $table->getName());
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptSchema(Schema $schema)
- {
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptColumn(Table $table, Column $column)
- {
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptForeignKey(Table $localTable, ForeignKeyConstraint $fkConstraint)
- {
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptIndex(Table $table, Index $index)
- {
- }
-
- /**
- * {@inheritdoc}
- */
- public function acceptSequence(Sequence $sequence)
- {
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Sharding/ShardChoser/MultiTenantShardChoser.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Sharding/ShardChoser/MultiTenantShardChoser.php
deleted file mode 100644
index 584e8155a..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Sharding/ShardChoser/MultiTenantShardChoser.php
+++ /dev/null
@@ -1,20 +0,0 @@
-Statement for the given SQL and Connection.
- *
- * @param string $sql The SQL of the statement.
- * @param Connection $conn The connection on which the statement should be executed.
- */
- public function __construct($sql, Connection $conn)
- {
- $this->sql = $sql;
- $this->stmt = $conn->getWrappedConnection()->prepare($sql);
- $this->conn = $conn;
- $this->platform = $conn->getDatabasePlatform();
- }
-
- /**
- * Binds a parameter value to the statement.
- *
- * The value can optionally be bound with a PDO binding type or a DBAL mapping type.
- * If bound with a DBAL mapping type, the binding type is derived from the mapping
- * type and the value undergoes the conversion routines of the mapping type before
- * being bound.
- *
- * @param string|int $name The name or position of the parameter.
- * @param mixed $value The value of the parameter.
- * @param mixed $type Either a PDO binding type or a DBAL mapping type name or instance.
- *
- * @return bool TRUE on success, FALSE on failure.
- */
- public function bindValue($name, $value, $type = ParameterType::STRING)
- {
- $this->params[$name] = $value;
- $this->types[$name] = $type;
- if ($type !== null) {
- if (is_string($type)) {
- $type = Type::getType($type);
- }
- if ($type instanceof Type) {
- $value = $type->convertToDatabaseValue($value, $this->platform);
- $bindingType = $type->getBindingType();
- } else {
- $bindingType = $type;
- }
-
- return $this->stmt->bindValue($name, $value, $bindingType);
- }
-
- return $this->stmt->bindValue($name, $value);
- }
-
- /**
- * Binds a parameter to a value by reference.
- *
- * Binding a parameter by reference does not support DBAL mapping types.
- *
- * @param string|int $name The name or position of the parameter.
- * @param mixed $var The reference to the variable to bind.
- * @param int $type The PDO binding type.
- * @param int|null $length Must be specified when using an OUT bind
- * so that PHP allocates enough memory to hold the returned value.
- *
- * @return bool TRUE on success, FALSE on failure.
- */
- public function bindParam($name, &$var, $type = ParameterType::STRING, $length = null)
- {
- $this->params[$name] = $var;
- $this->types[$name] = $type;
-
- return $this->stmt->bindParam($name, $var, $type, $length);
- }
-
- /**
- * Executes the statement with the currently bound parameters.
- *
- * @param mixed[]|null $params
- *
- * @return bool TRUE on success, FALSE on failure.
- *
- * @throws DBALException
- */
- public function execute($params = null)
- {
- if (is_array($params)) {
- $this->params = $params;
- }
-
- $logger = $this->conn->getConfiguration()->getSQLLogger();
- if ($logger) {
- $logger->startQuery($this->sql, $this->params, $this->types);
- }
-
- try {
- $stmt = $this->stmt->execute($params);
- } catch (Throwable $ex) {
- if ($logger) {
- $logger->stopQuery();
- }
- throw DBALException::driverExceptionDuringQuery(
- $this->conn->getDriver(),
- $ex,
- $this->sql,
- $this->conn->resolveParams($this->params, $this->types)
- );
- }
-
- if ($logger) {
- $logger->stopQuery();
- }
- $this->params = [];
- $this->types = [];
-
- return $stmt;
- }
-
- /**
- * Closes the cursor, freeing the database resources used by this statement.
- *
- * @return bool TRUE on success, FALSE on failure.
- */
- public function closeCursor()
- {
- return $this->stmt->closeCursor();
- }
-
- /**
- * Returns the number of columns in the result set.
- *
- * @return int
- */
- public function columnCount()
- {
- return $this->stmt->columnCount();
- }
-
- /**
- * Fetches the SQLSTATE associated with the last operation on the statement.
- *
- * @return string|int|bool
- */
- public function errorCode()
- {
- return $this->stmt->errorCode();
- }
-
- /**
- * {@inheritDoc}
- */
- public function errorInfo()
- {
- return $this->stmt->errorInfo();
- }
-
- /**
- * {@inheritdoc}
- */
- public function setFetchMode($fetchMode, $arg2 = null, $arg3 = null)
- {
- if ($arg2 === null) {
- return $this->stmt->setFetchMode($fetchMode);
- }
-
- if ($arg3 === null) {
- return $this->stmt->setFetchMode($fetchMode, $arg2);
- }
-
- return $this->stmt->setFetchMode($fetchMode, $arg2, $arg3);
- }
-
- /**
- * Required by interface IteratorAggregate.
- *
- * {@inheritdoc}
- */
- public function getIterator()
- {
- return $this->stmt;
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetch($fetchMode = null, $cursorOrientation = PDO::FETCH_ORI_NEXT, $cursorOffset = 0)
- {
- return $this->stmt->fetch($fetchMode);
- }
-
- /**
- * {@inheritdoc}
- */
- public function fetchAll($fetchMode = null, $fetchArgument = null, $ctorArgs = null)
- {
- if ($fetchArgument) {
- return $this->stmt->fetchAll($fetchMode, $fetchArgument);
- }
-
- return $this->stmt->fetchAll($fetchMode);
- }
-
- /**
- * {@inheritDoc}
- */
- public function fetchColumn($columnIndex = 0)
- {
- return $this->stmt->fetchColumn($columnIndex);
- }
-
- /**
- * Returns the number of rows affected by the last execution of this statement.
- *
- * @return int The number of affected rows.
- */
- public function rowCount()
- {
- return $this->stmt->rowCount();
- }
-
- /**
- * Gets the wrapped driver statement.
- *
- * @return \Doctrine\DBAL\Driver\Statement
- */
- public function getWrappedStatement()
- {
- return $this->stmt;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Tools/Console/Command/ImportCommand.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Tools/Console/Command/ImportCommand.php
deleted file mode 100644
index 0cd2999c9..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Tools/Console/Command/ImportCommand.php
+++ /dev/null
@@ -1,138 +0,0 @@
-setName('dbal:import')
- ->setDescription('Import SQL file(s) directly to Database.')
- ->setDefinition([new InputArgument(
- 'file',
- InputArgument::REQUIRED | InputArgument::IS_ARRAY,
- 'File path(s) of SQL to be executed.'
- ),
- ])
- ->setHelp(<<getHelper('db')->getConnection();
-
- $fileNames = $input->getArgument('file');
-
- if ($fileNames === null) {
- return 0;
- }
-
- foreach ((array) $fileNames as $fileName) {
- $filePath = realpath($fileName);
-
- // Phar compatibility.
- if ($filePath === false) {
- $filePath = $fileName;
- }
-
- if (! file_exists($filePath)) {
- throw new InvalidArgumentException(
- sprintf("SQL file '%s' does not exist.", $filePath)
- );
- }
-
- if (! is_readable($filePath)) {
- throw new InvalidArgumentException(
- sprintf("SQL file '%s' does not have read permissions.", $filePath)
- );
- }
-
- $output->write(sprintf("Processing file '%s'... ", $filePath));
- $sql = @file_get_contents($filePath);
-
- if ($sql === false) {
- throw new RuntimeException(
- sprintf("Unable to read SQL file '%s': %s", $filePath, error_get_last()['message'])
- );
- }
-
- if ($conn instanceof PDOConnection) {
- // PDO Drivers
- try {
- $lines = 0;
-
- $stmt = $conn->prepare($sql);
- assert($stmt instanceof PDOStatement);
-
- $stmt->execute();
-
- do {
- // Required due to "MySQL has gone away!" issue
- $stmt->fetch();
- $stmt->closeCursor();
-
- $lines++;
- } while ($stmt->nextRowset());
-
- $output->write(sprintf('%d statements executed!', $lines) . PHP_EOL);
- } catch (PDOException $e) {
- $output->write('error!' . PHP_EOL);
-
- throw new RuntimeException($e->getMessage(), $e->getCode(), $e);
- }
- } else {
- // Non-PDO Drivers (ie. OCI8 driver)
- $stmt = $conn->prepare($sql);
- $rs = $stmt->execute();
-
- if (! $rs) {
- $error = $stmt->errorInfo();
-
- $output->write('error!' . PHP_EOL);
-
- throw new RuntimeException($error[2], $error[0]);
- }
-
- $output->writeln('OK!' . PHP_EOL);
-
- $stmt->closeCursor();
- }
- }
-
- return 0;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Tools/Console/Command/ReservedWordsCommand.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Tools/Console/Command/ReservedWordsCommand.php
deleted file mode 100644
index 2e0c48a81..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Tools/Console/Command/ReservedWordsCommand.php
+++ /dev/null
@@ -1,181 +0,0 @@
- MySQLKeywords::class,
- 'mysql57' => MySQL57Keywords::class,
- 'mysql80' => MySQL80Keywords::class,
- 'sqlserver' => SQLServerKeywords::class,
- 'sqlserver2005' => SQLServer2005Keywords::class,
- 'sqlserver2008' => SQLServer2008Keywords::class,
- 'sqlserver2012' => SQLServer2012Keywords::class,
- 'sqlite' => SQLiteKeywords::class,
- 'pgsql' => PostgreSQLKeywords::class,
- 'pgsql91' => PostgreSQL91Keywords::class,
- 'pgsql92' => PostgreSQL92Keywords::class,
- 'oracle' => OracleKeywords::class,
- 'db2' => DB2Keywords::class,
- 'sqlanywhere' => SQLAnywhereKeywords::class,
- 'sqlanywhere11' => SQLAnywhere11Keywords::class,
- 'sqlanywhere12' => SQLAnywhere12Keywords::class,
- 'sqlanywhere16' => SQLAnywhere16Keywords::class,
- ];
-
- /**
- * If you want to add or replace a keywords list use this command.
- *
- * @param string $name
- * @param string $class
- *
- * @return void
- */
- public function setKeywordListClass($name, $class)
- {
- $this->keywordListClasses[$name] = $class;
- }
-
- /**
- * {@inheritdoc}
- */
- protected function configure()
- {
- $this
- ->setName('dbal:reserved-words')
- ->setDescription('Checks if the current database contains identifiers that are reserved.')
- ->setDefinition([new InputOption(
- 'list',
- 'l',
- InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY,
- 'Keyword-List name.'
- ),
- ])
- ->setHelp(<<%command.full_name%
-
-If you want to check against specific dialects you can
-pass them to the command:
-
- %command.full_name% -l mysql -l pgsql
-
-The following keyword lists are currently shipped with Doctrine:
-
- * mysql
- * mysql57
- * mysql80
- * pgsql
- * pgsql92
- * sqlite
- * oracle
- * sqlserver
- * sqlserver2005
- * sqlserver2008
- * sqlserver2012
- * sqlanywhere
- * sqlanywhere11
- * sqlanywhere12
- * sqlanywhere16
- * db2 (Not checked by default)
-EOT
- );
- }
-
- /**
- * {@inheritdoc}
- */
- protected function execute(InputInterface $input, OutputInterface $output)
- {
- /** @var Connection $conn */
- $conn = $this->getHelper('db')->getConnection();
-
- $keywordLists = (array) $input->getOption('list');
- if (! $keywordLists) {
- $keywordLists = [
- 'mysql',
- 'mysql57',
- 'mysql80',
- 'pgsql',
- 'pgsql92',
- 'sqlite',
- 'oracle',
- 'sqlserver',
- 'sqlserver2005',
- 'sqlserver2008',
- 'sqlserver2012',
- 'sqlanywhere',
- 'sqlanywhere11',
- 'sqlanywhere12',
- 'sqlanywhere16',
- ];
- }
-
- $keywords = [];
- foreach ($keywordLists as $keywordList) {
- if (! isset($this->keywordListClasses[$keywordList])) {
- throw new InvalidArgumentException(
- "There exists no keyword list with name '" . $keywordList . "'. " .
- 'Known lists: ' . implode(', ', array_keys($this->keywordListClasses))
- );
- }
- $class = $this->keywordListClasses[$keywordList];
- $keywords[] = new $class();
- }
-
- $output->write('Checking keyword violations for ' . implode(', ', $keywordLists) . '...', true);
-
- $schema = $conn->getSchemaManager()->createSchema();
- $visitor = new ReservedKeywordsValidator($keywords);
- $schema->visit($visitor);
-
- $violations = $visitor->getViolations();
- if (count($violations) !== 0) {
- $output->write('There are ' . count($violations) . ' reserved keyword violations in your database schema:', true);
- foreach ($violations as $violation) {
- $output->write(' - ' . $violation, true);
- }
-
- return 1;
- }
-
- $output->write('No reserved keywords violations have been found!', true);
-
- return 0;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Tools/Console/Command/RunSqlCommand.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Tools/Console/Command/RunSqlCommand.php
deleted file mode 100644
index b479baec2..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Tools/Console/Command/RunSqlCommand.php
+++ /dev/null
@@ -1,74 +0,0 @@
-setName('dbal:run-sql')
- ->setDescription('Executes arbitrary SQL directly from the command line.')
- ->setDefinition([
- new InputArgument('sql', InputArgument::REQUIRED, 'The SQL statement to execute.'),
- new InputOption('depth', null, InputOption::VALUE_REQUIRED, 'Dumping depth of result set.', 7),
- new InputOption('force-fetch', null, InputOption::VALUE_NONE, 'Forces fetching the result.'),
- ])
- ->setHelp(<<getHelper('db')->getConnection();
-
- $sql = $input->getArgument('sql');
-
- if ($sql === null) {
- throw new RuntimeException("Argument 'SQL' is required in order to execute this command correctly.");
- }
-
- assert(is_string($sql));
-
- $depth = $input->getOption('depth');
-
- if (! is_numeric($depth)) {
- throw new LogicException("Option 'depth' must contains an integer value");
- }
-
- if (stripos($sql, 'select') === 0 || $input->getOption('force-fetch')) {
- $resultSet = $conn->fetchAll($sql);
- } else {
- $resultSet = $conn->executeUpdate($sql);
- }
-
- $output->write(Dumper::dump($resultSet, (int) $depth));
-
- return 0;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Tools/Console/ConsoleRunner.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Tools/Console/ConsoleRunner.php
deleted file mode 100644
index 520a9af80..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Tools/Console/ConsoleRunner.php
+++ /dev/null
@@ -1,86 +0,0 @@
- new ConnectionHelper($connection),
- ]);
- }
-
- /**
- * Runs console with the given helperset.
- *
- * @param Command[] $commands
- *
- * @return void
- */
- public static function run(HelperSet $helperSet, $commands = [])
- {
- $cli = new Application('Doctrine Command Line Interface', Version::VERSION);
-
- $cli->setCatchExceptions(true);
- $cli->setHelperSet($helperSet);
-
- self::addCommands($cli);
-
- $cli->addCommands($commands);
- $cli->run();
- }
-
- /**
- * @return void
- */
- public static function addCommands(Application $cli)
- {
- $cli->addCommands([
- new RunSqlCommand(),
- new ImportCommand(),
- new ReservedWordsCommand(),
- ]);
- }
-
- /**
- * Prints the instructions to create a configuration file
- */
- public static function printCliConfigTemplate()
- {
- echo <<<'HELP'
-You are missing a "cli-config.php" or "config/cli-config.php" file in your
-project, which is required to get the Doctrine-DBAL Console working. You can use the
-following sample as a template:
-
-_connection = $connection;
- }
-
- /**
- * Retrieves the Doctrine database Connection.
- *
- * @return Connection
- */
- public function getConnection()
- {
- return $this->_connection;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return 'connection';
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Tools/Dumper.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Tools/Dumper.php
deleted file mode 100644
index 3668efbe4..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Tools/Dumper.php
+++ /dev/null
@@ -1,182 +0,0 @@
-toArray();
- }
-
- if ($maxDepth === 0) {
- return is_object($var) ? get_class($var)
- : (is_array($var) ? 'Array(' . count($var) . ')' : $var);
- }
-
- if (is_array($var)) {
- $return = [];
-
- foreach ($var as $k => $v) {
- $return[$k] = self::export($v, $maxDepth - 1);
- }
-
- return $return;
- }
-
- if (! $isObj) {
- return $var;
- }
-
- $return = new stdClass();
- if ($var instanceof DateTimeInterface) {
- $return->__CLASS__ = get_class($var);
- $return->date = $var->format('c');
- $return->timezone = $var->getTimezone()->getName();
-
- return $return;
- }
-
- $return->__CLASS__ = self::getClass($var);
-
- if ($var instanceof Proxy) {
- $return->__IS_PROXY__ = true;
- $return->__PROXY_INITIALIZED__ = $var->__isInitialized();
- }
-
- if ($var instanceof ArrayObject || $var instanceof ArrayIterator) {
- $return->__STORAGE__ = self::export($var->getArrayCopy(), $maxDepth - 1);
- }
-
- return self::fillReturnWithClassAttributes($var, $return, $maxDepth);
- }
-
- /**
- * Fill the $return variable with class attributes
- * Based on obj2array function from {@see https://secure.php.net/manual/en/function.get-object-vars.php#47075}
- *
- * @param object $var
- *
- * @return mixed
- */
- private static function fillReturnWithClassAttributes($var, stdClass $return, int $maxDepth)
- {
- $clone = (array) $var;
-
- foreach (array_keys($clone) as $key) {
- $aux = explode("\0", $key);
- $name = end($aux);
- if ($aux[0] === '') {
- $name .= ':' . ($aux[1] === '*' ? 'protected' : $aux[1] . ':private');
- }
- $return->$name = self::export($clone[$key], $maxDepth - 1);
- }
-
- return $return;
- }
-
- /**
- * @param object $object
- */
- private static function getClass($object) : string
- {
- $class = get_class($object);
-
- if (! class_exists(Proxy::class)) {
- return $class;
- }
-
- $pos = strrpos($class, '\\' . Proxy::MARKER . '\\');
-
- if ($pos === false) {
- return $class;
- }
-
- return substr($class, $pos + strlen(Proxy::MARKER) + 2);
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/TransactionIsolationLevel.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/TransactionIsolationLevel.php
deleted file mode 100644
index 4e35639fb..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/TransactionIsolationLevel.php
+++ /dev/null
@@ -1,32 +0,0 @@
-getClobTypeDeclarationSQL($fieldDeclaration);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToDatabaseValue($value, AbstractPlatform $platform)
- {
- // @todo 3.0 - $value === null check to save real NULL in database
- return serialize($value);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- if ($value === null) {
- return null;
- }
-
- $value = is_resource($value) ? stream_get_contents($value) : $value;
-
- set_error_handler(function (int $code, string $message) : bool {
- throw ConversionException::conversionFailedUnserialization($this->getName(), $message);
- });
-
- try {
- return unserialize($value);
- } finally {
- restore_error_handler();
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return Types::ARRAY;
- }
-
- /**
- * {@inheritdoc}
- */
- public function requiresSQLCommentHint(AbstractPlatform $platform)
- {
- return true;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/BigIntType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/BigIntType.php
deleted file mode 100644
index 69cd5341d..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/BigIntType.php
+++ /dev/null
@@ -1,44 +0,0 @@
-getBigIntTypeDeclarationSQL($fieldDeclaration);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getBindingType()
- {
- return ParameterType::STRING;
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- return $value === null ? null : (string) $value;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/BinaryType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/BinaryType.php
deleted file mode 100644
index d604b3bff..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/BinaryType.php
+++ /dev/null
@@ -1,66 +0,0 @@
-getBinaryTypeDeclarationSQL($fieldDeclaration);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- if ($value === null) {
- return null;
- }
-
- if (is_string($value)) {
- $fp = fopen('php://temp', 'rb+');
- assert(is_resource($fp));
- fwrite($fp, $value);
- fseek($fp, 0);
- $value = $fp;
- }
-
- if (! is_resource($value)) {
- throw ConversionException::conversionFailed($value, Types::BINARY);
- }
-
- return $value;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return Types::BINARY;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getBindingType()
- {
- return ParameterType::BINARY;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/BlobType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/BlobType.php
deleted file mode 100644
index e4bb22f08..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/BlobType.php
+++ /dev/null
@@ -1,66 +0,0 @@
-getBlobTypeDeclarationSQL($fieldDeclaration);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- if ($value === null) {
- return null;
- }
-
- if (is_string($value)) {
- $fp = fopen('php://temp', 'rb+');
- assert(is_resource($fp));
- fwrite($fp, $value);
- fseek($fp, 0);
- $value = $fp;
- }
-
- if (! is_resource($value)) {
- throw ConversionException::conversionFailed($value, Types::BLOB);
- }
-
- return $value;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return Types::BLOB;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getBindingType()
- {
- return ParameterType::LARGE_OBJECT;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/BooleanType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/BooleanType.php
deleted file mode 100644
index bf9be9b19..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/BooleanType.php
+++ /dev/null
@@ -1,52 +0,0 @@
-getBooleanTypeDeclarationSQL($fieldDeclaration);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToDatabaseValue($value, AbstractPlatform $platform)
- {
- return $platform->convertBooleansToDatabaseValue($value);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- return $platform->convertFromBoolean($value);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return Types::BOOLEAN;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getBindingType()
- {
- return ParameterType::BOOLEAN;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/ConversionException.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/ConversionException.php
deleted file mode 100644
index b9f8a82e7..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/ConversionException.php
+++ /dev/null
@@ -1,109 +0,0 @@
- 32 ? substr($value, 0, 20) . '...' : $value;
-
- return new self('Could not convert database value "' . $value . '" to Doctrine Type ' . $toType);
- }
-
- /**
- * Thrown when a Database to Doctrine Type Conversion fails and we can make a statement
- * about the expected format.
- *
- * @param string $value
- * @param string $toType
- * @param string $expectedFormat
- *
- * @return \Doctrine\DBAL\Types\ConversionException
- */
- public static function conversionFailedFormat($value, $toType, $expectedFormat, ?Throwable $previous = null)
- {
- $value = strlen($value) > 32 ? substr($value, 0, 20) . '...' : $value;
-
- return new self(
- 'Could not convert database value "' . $value . '" to Doctrine Type ' .
- $toType . '. Expected format: ' . $expectedFormat,
- 0,
- $previous
- );
- }
-
- /**
- * Thrown when the PHP value passed to the converter was not of the expected type.
- *
- * @param mixed $value
- * @param string $toType
- * @param string[] $possibleTypes
- *
- * @return \Doctrine\DBAL\Types\ConversionException
- */
- public static function conversionFailedInvalidType($value, $toType, array $possibleTypes)
- {
- $actualType = is_object($value) ? get_class($value) : gettype($value);
-
- if (is_scalar($value)) {
- return new self(sprintf(
- "Could not convert PHP value '%s' of type '%s' to type '%s'. Expected one of the following types: %s",
- $value,
- $actualType,
- $toType,
- implode(', ', $possibleTypes)
- ));
- }
-
- return new self(sprintf(
- "Could not convert PHP value of type '%s' to type '%s'. Expected one of the following types: %s",
- $actualType,
- $toType,
- implode(', ', $possibleTypes)
- ));
- }
-
- public static function conversionFailedSerialization($value, $format, $error)
- {
- $actualType = is_object($value) ? get_class($value) : gettype($value);
-
- return new self(sprintf(
- "Could not convert PHP type '%s' to '%s', as an '%s' error was triggered by the serialization",
- $actualType,
- $format,
- $error
- ));
- }
-
- public static function conversionFailedUnserialization(string $format, string $error) : self
- {
- return new self(sprintf(
- "Could not convert database value to '%s' as an error was triggered by the unserialization: '%s'",
- $format,
- $error
- ));
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateImmutableType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateImmutableType.php
deleted file mode 100644
index a4c5d266d..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateImmutableType.php
+++ /dev/null
@@ -1,70 +0,0 @@
-format($platform->getDateFormatString());
- }
-
- throw ConversionException::conversionFailedInvalidType(
- $value,
- $this->getName(),
- ['null', DateTimeImmutable::class]
- );
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- if ($value === null || $value instanceof DateTimeImmutable) {
- return $value;
- }
-
- $dateTime = DateTimeImmutable::createFromFormat('!' . $platform->getDateFormatString(), $value);
-
- if (! $dateTime) {
- throw ConversionException::conversionFailedFormat(
- $value,
- $this->getName(),
- $platform->getDateFormatString()
- );
- }
-
- return $dateTime;
- }
-
- /**
- * {@inheritdoc}
- */
- public function requiresSQLCommentHint(AbstractPlatform $platform)
- {
- return true;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateIntervalType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateIntervalType.php
deleted file mode 100644
index 96a446e86..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateIntervalType.php
+++ /dev/null
@@ -1,87 +0,0 @@
-getVarcharTypeDeclarationSQL($fieldDeclaration);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToDatabaseValue($value, AbstractPlatform $platform)
- {
- if ($value === null) {
- return null;
- }
-
- if ($value instanceof DateInterval) {
- return $value->format(self::FORMAT);
- }
-
- throw ConversionException::conversionFailedInvalidType($value, $this->getName(), ['null', 'DateInterval']);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- if ($value === null || $value instanceof DateInterval) {
- return $value;
- }
-
- $negative = false;
-
- if (isset($value[0]) && ($value[0] === '+' || $value[0] === '-')) {
- $negative = $value[0] === '-';
- $value = substr($value, 1);
- }
-
- try {
- $interval = new DateInterval($value);
-
- if ($negative) {
- $interval->invert = 1;
- }
-
- return $interval;
- } catch (Throwable $exception) {
- throw ConversionException::conversionFailedFormat($value, $this->getName(), self::FORMAT, $exception);
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function requiresSQLCommentHint(AbstractPlatform $platform)
- {
- return true;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeImmutableType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeImmutableType.php
deleted file mode 100644
index 51960a8c3..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeImmutableType.php
+++ /dev/null
@@ -1,75 +0,0 @@
-format($platform->getDateTimeFormatString());
- }
-
- throw ConversionException::conversionFailedInvalidType(
- $value,
- $this->getName(),
- ['null', DateTimeImmutable::class]
- );
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- if ($value === null || $value instanceof DateTimeImmutable) {
- return $value;
- }
-
- $dateTime = DateTimeImmutable::createFromFormat($platform->getDateTimeFormatString(), $value);
-
- if (! $dateTime) {
- $dateTime = date_create_immutable($value);
- }
-
- if (! $dateTime) {
- throw ConversionException::conversionFailedFormat(
- $value,
- $this->getName(),
- $platform->getDateTimeFormatString()
- );
- }
-
- return $dateTime;
- }
-
- /**
- * {@inheritdoc}
- */
- public function requiresSQLCommentHint(AbstractPlatform $platform)
- {
- return true;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeType.php
deleted file mode 100644
index 65071a6b1..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeType.php
+++ /dev/null
@@ -1,68 +0,0 @@
-getDateTimeTypeDeclarationSQL($fieldDeclaration);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToDatabaseValue($value, AbstractPlatform $platform)
- {
- if ($value === null) {
- return $value;
- }
-
- if ($value instanceof DateTimeInterface) {
- return $value->format($platform->getDateTimeFormatString());
- }
-
- throw ConversionException::conversionFailedInvalidType($value, $this->getName(), ['null', 'DateTime']);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- if ($value === null || $value instanceof DateTimeInterface) {
- return $value;
- }
-
- $val = DateTime::createFromFormat($platform->getDateTimeFormatString(), $value);
-
- if (! $val) {
- $val = date_create($value);
- }
-
- if (! $val) {
- throw ConversionException::conversionFailedFormat($value, $this->getName(), $platform->getDateTimeFormatString());
- }
-
- return $val;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeTzImmutableType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeTzImmutableType.php
deleted file mode 100644
index b88862479..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeTzImmutableType.php
+++ /dev/null
@@ -1,70 +0,0 @@
-format($platform->getDateTimeTzFormatString());
- }
-
- throw ConversionException::conversionFailedInvalidType(
- $value,
- $this->getName(),
- ['null', DateTimeImmutable::class]
- );
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- if ($value === null || $value instanceof DateTimeImmutable) {
- return $value;
- }
-
- $dateTime = DateTimeImmutable::createFromFormat($platform->getDateTimeTzFormatString(), $value);
-
- if (! $dateTime) {
- throw ConversionException::conversionFailedFormat(
- $value,
- $this->getName(),
- $platform->getDateTimeTzFormatString()
- );
- }
-
- return $dateTime;
- }
-
- /**
- * {@inheritdoc}
- */
- public function requiresSQLCommentHint(AbstractPlatform $platform)
- {
- return true;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeTzType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeTzType.php
deleted file mode 100644
index 6240da892..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeTzType.php
+++ /dev/null
@@ -1,75 +0,0 @@
-getDateTimeTzTypeDeclarationSQL($fieldDeclaration);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToDatabaseValue($value, AbstractPlatform $platform)
- {
- if ($value === null) {
- return $value;
- }
-
- if ($value instanceof DateTimeInterface) {
- return $value->format($platform->getDateTimeTzFormatString());
- }
-
- throw ConversionException::conversionFailedInvalidType($value, $this->getName(), ['null', 'DateTime']);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- if ($value === null || $value instanceof DateTimeInterface) {
- return $value;
- }
-
- $val = DateTime::createFromFormat($platform->getDateTimeTzFormatString(), $value);
- if (! $val) {
- throw ConversionException::conversionFailedFormat($value, $this->getName(), $platform->getDateTimeTzFormatString());
- }
-
- return $val;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateType.php
deleted file mode 100644
index 15d9362f2..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateType.php
+++ /dev/null
@@ -1,62 +0,0 @@
-getDateTypeDeclarationSQL($fieldDeclaration);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToDatabaseValue($value, AbstractPlatform $platform)
- {
- if ($value === null) {
- return $value;
- }
-
- if ($value instanceof DateTimeInterface) {
- return $value->format($platform->getDateFormatString());
- }
-
- throw ConversionException::conversionFailedInvalidType($value, $this->getName(), ['null', 'DateTime']);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- if ($value === null || $value instanceof DateTimeInterface) {
- return $value;
- }
-
- $val = DateTime::createFromFormat('!' . $platform->getDateFormatString(), $value);
- if (! $val) {
- throw ConversionException::conversionFailedFormat($value, $this->getName(), $platform->getDateFormatString());
- }
-
- return $val;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DecimalType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DecimalType.php
deleted file mode 100644
index b2d37f00b..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DecimalType.php
+++ /dev/null
@@ -1,35 +0,0 @@
-getDecimalTypeDeclarationSQL($fieldDeclaration);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- return $value;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/FloatType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/FloatType.php
deleted file mode 100644
index 4988d7253..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/FloatType.php
+++ /dev/null
@@ -1,32 +0,0 @@
-getFloatDeclarationSQL($fieldDeclaration);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- return $value === null ? null : (float) $value;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/GuidType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/GuidType.php
deleted file mode 100644
index dd4516505..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/GuidType.php
+++ /dev/null
@@ -1,35 +0,0 @@
-getGuidTypeDeclarationSQL($fieldDeclaration);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return Types::GUID;
- }
-
- /**
- * {@inheritdoc}
- */
- public function requiresSQLCommentHint(AbstractPlatform $platform)
- {
- return ! $platform->hasNativeGuidType();
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/IntegerType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/IntegerType.php
deleted file mode 100644
index d7ab8fd80..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/IntegerType.php
+++ /dev/null
@@ -1,44 +0,0 @@
-getIntegerTypeDeclarationSQL($fieldDeclaration);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- return $value === null ? null : (int) $value;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getBindingType()
- {
- return ParameterType::INTEGER;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/JsonArrayType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/JsonArrayType.php
deleted file mode 100644
index bc468fba0..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/JsonArrayType.php
+++ /dev/null
@@ -1,46 +0,0 @@
-getJsonTypeDeclarationSQL($fieldDeclaration);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToDatabaseValue($value, AbstractPlatform $platform)
- {
- if ($value === null) {
- return null;
- }
-
- $encoded = json_encode($value);
-
- if (json_last_error() !== JSON_ERROR_NONE) {
- throw ConversionException::conversionFailedSerialization($value, 'json', json_last_error_msg());
- }
-
- return $encoded;
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- if ($value === null || $value === '') {
- return null;
- }
-
- if (is_resource($value)) {
- $value = stream_get_contents($value);
- }
-
- $val = json_decode($value, true);
-
- if (json_last_error() !== JSON_ERROR_NONE) {
- throw ConversionException::conversionFailed($value, $this->getName());
- }
-
- return $val;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return Types::JSON;
- }
-
- /**
- * {@inheritdoc}
- */
- public function requiresSQLCommentHint(AbstractPlatform $platform)
- {
- return ! $platform->hasNativeJsonType();
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/ObjectType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/ObjectType.php
deleted file mode 100644
index 82b1a752e..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/ObjectType.php
+++ /dev/null
@@ -1,71 +0,0 @@
-getClobTypeDeclarationSQL($fieldDeclaration);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToDatabaseValue($value, AbstractPlatform $platform)
- {
- return serialize($value);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- if ($value === null) {
- return null;
- }
-
- $value = is_resource($value) ? stream_get_contents($value) : $value;
-
- set_error_handler(function (int $code, string $message) : bool {
- throw ConversionException::conversionFailedUnserialization($this->getName(), $message);
- });
-
- try {
- return unserialize($value);
- } finally {
- restore_error_handler();
- }
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return Types::OBJECT;
- }
-
- /**
- * {@inheritdoc}
- */
- public function requiresSQLCommentHint(AbstractPlatform $platform)
- {
- return true;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/PhpDateTimeMappingType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/PhpDateTimeMappingType.php
deleted file mode 100644
index 456585053..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/PhpDateTimeMappingType.php
+++ /dev/null
@@ -1,12 +0,0 @@
-getClobTypeDeclarationSQL($fieldDeclaration);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToDatabaseValue($value, AbstractPlatform $platform)
- {
- if (! $value) {
- return null;
- }
-
- return implode(',', $value);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- if ($value === null) {
- return [];
- }
-
- $value = is_resource($value) ? stream_get_contents($value) : $value;
-
- return explode(',', $value);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return Types::SIMPLE_ARRAY;
- }
-
- /**
- * {@inheritdoc}
- */
- public function requiresSQLCommentHint(AbstractPlatform $platform)
- {
- return true;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/SmallIntType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/SmallIntType.php
deleted file mode 100644
index 5fa3cb74b..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/SmallIntType.php
+++ /dev/null
@@ -1,44 +0,0 @@
-getSmallIntTypeDeclarationSQL($fieldDeclaration);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- return $value === null ? null : (int) $value;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getBindingType()
- {
- return ParameterType::INTEGER;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/StringType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/StringType.php
deleted file mode 100644
index e0d1a552f..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/StringType.php
+++ /dev/null
@@ -1,35 +0,0 @@
-getVarcharTypeDeclarationSQL($fieldDeclaration);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getDefaultLength(AbstractPlatform $platform)
- {
- return $platform->getVarcharDefaultLength();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return Types::STRING;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/TextType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/TextType.php
deleted file mode 100644
index 76dd7c48c..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/TextType.php
+++ /dev/null
@@ -1,37 +0,0 @@
-getClobTypeDeclarationSQL($fieldDeclaration);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- return is_resource($value) ? stream_get_contents($value) : $value;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return Types::TEXT;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/TimeImmutableType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/TimeImmutableType.php
deleted file mode 100644
index cc4376955..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/TimeImmutableType.php
+++ /dev/null
@@ -1,70 +0,0 @@
-format($platform->getTimeFormatString());
- }
-
- throw ConversionException::conversionFailedInvalidType(
- $value,
- $this->getName(),
- ['null', DateTimeImmutable::class]
- );
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- if ($value === null || $value instanceof DateTimeImmutable) {
- return $value;
- }
-
- $dateTime = DateTimeImmutable::createFromFormat('!' . $platform->getTimeFormatString(), $value);
-
- if (! $dateTime) {
- throw ConversionException::conversionFailedFormat(
- $value,
- $this->getName(),
- $platform->getTimeFormatString()
- );
- }
-
- return $dateTime;
- }
-
- /**
- * {@inheritdoc}
- */
- public function requiresSQLCommentHint(AbstractPlatform $platform)
- {
- return true;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/TimeType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/TimeType.php
deleted file mode 100644
index 1eeb2c01d..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/TimeType.php
+++ /dev/null
@@ -1,62 +0,0 @@
-getTimeTypeDeclarationSQL($fieldDeclaration);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToDatabaseValue($value, AbstractPlatform $platform)
- {
- if ($value === null) {
- return $value;
- }
-
- if ($value instanceof DateTimeInterface) {
- return $value->format($platform->getTimeFormatString());
- }
-
- throw ConversionException::conversionFailedInvalidType($value, $this->getName(), ['null', 'DateTime']);
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- if ($value === null || $value instanceof DateTimeInterface) {
- return $value;
- }
-
- $val = DateTime::createFromFormat('!' . $platform->getTimeFormatString(), $value);
- if (! $val) {
- throw ConversionException::conversionFailedFormat($value, $this->getName(), $platform->getTimeFormatString());
- }
-
- return $val;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/Type.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/Type.php
deleted file mode 100644
index ac7ab7bec..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/Type.php
+++ /dev/null
@@ -1,384 +0,0 @@
- ArrayType::class,
- Types::BIGINT => BigIntType::class,
- Types::BINARY => BinaryType::class,
- Types::BLOB => BlobType::class,
- Types::BOOLEAN => BooleanType::class,
- Types::DATE_MUTABLE => DateType::class,
- Types::DATE_IMMUTABLE => DateImmutableType::class,
- Types::DATEINTERVAL => DateIntervalType::class,
- Types::DATETIME_MUTABLE => DateTimeType::class,
- Types::DATETIME_IMMUTABLE => DateTimeImmutableType::class,
- Types::DATETIMETZ_MUTABLE => DateTimeTzType::class,
- Types::DATETIMETZ_IMMUTABLE => DateTimeTzImmutableType::class,
- Types::DECIMAL => DecimalType::class,
- Types::FLOAT => FloatType::class,
- Types::GUID => GuidType::class,
- Types::INTEGER => IntegerType::class,
- Types::JSON => JsonType::class,
- Types::JSON_ARRAY => JsonArrayType::class,
- Types::OBJECT => ObjectType::class,
- Types::SIMPLE_ARRAY => SimpleArrayType::class,
- Types::SMALLINT => SmallIntType::class,
- Types::STRING => StringType::class,
- Types::TEXT => TextType::class,
- Types::TIME_MUTABLE => TimeType::class,
- Types::TIME_IMMUTABLE => TimeImmutableType::class,
- ];
-
- /** @var TypeRegistry|null */
- private static $typeRegistry;
-
- /**
- * @internal Do not instantiate directly - use {@see Type::addType()} method instead.
- */
- final public function __construct()
- {
- }
-
- /**
- * Converts a value from its PHP representation to its database representation
- * of this type.
- *
- * @param mixed $value The value to convert.
- * @param AbstractPlatform $platform The currently used database platform.
- *
- * @return mixed The database representation of the value.
- */
- public function convertToDatabaseValue($value, AbstractPlatform $platform)
- {
- return $value;
- }
-
- /**
- * Converts a value from its database representation to its PHP representation
- * of this type.
- *
- * @param mixed $value The value to convert.
- * @param AbstractPlatform $platform The currently used database platform.
- *
- * @return mixed The PHP representation of the value.
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- return $value;
- }
-
- /**
- * Gets the default length of this type.
- *
- * @deprecated Rely on information provided by the platform instead.
- *
- * @return int|null
- */
- public function getDefaultLength(AbstractPlatform $platform)
- {
- return null;
- }
-
- /**
- * Gets the SQL declaration snippet for a field of this type.
- *
- * @param mixed[] $fieldDeclaration The field declaration.
- * @param AbstractPlatform $platform The currently used database platform.
- *
- * @return string
- */
- abstract public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform);
-
- /**
- * Gets the name of this type.
- *
- * @return string
- *
- * @todo Needed?
- */
- abstract public function getName();
-
- /**
- * @internal This method is only to be used within DBAL for forward compatibility purposes. Do not use directly.
- */
- final public static function getTypeRegistry() : TypeRegistry
- {
- if (self::$typeRegistry === null) {
- self::$typeRegistry = self::createTypeRegistry();
- }
-
- return self::$typeRegistry;
- }
-
- private static function createTypeRegistry() : TypeRegistry
- {
- $registry = new TypeRegistry();
-
- foreach (self::BUILTIN_TYPES_MAP as $name => $class) {
- $registry->register($name, new $class());
- }
-
- return $registry;
- }
-
- /**
- * Factory method to create type instances.
- * Type instances are implemented as flyweights.
- *
- * @param string $name The name of the type (as returned by getName()).
- *
- * @return \Doctrine\DBAL\Types\Type
- *
- * @throws DBALException
- */
- public static function getType($name)
- {
- return self::getTypeRegistry()->get($name);
- }
-
- /**
- * Adds a custom type to the type map.
- *
- * @param string $name The name of the type. This should correspond to what getName() returns.
- * @param string $className The class name of the custom type.
- *
- * @return void
- *
- * @throws DBALException
- */
- public static function addType($name, $className)
- {
- self::getTypeRegistry()->register($name, new $className());
- }
-
- /**
- * Checks if exists support for a type.
- *
- * @param string $name The name of the type.
- *
- * @return bool TRUE if type is supported; FALSE otherwise.
- */
- public static function hasType($name)
- {
- return self::getTypeRegistry()->has($name);
- }
-
- /**
- * Overrides an already defined type to use a different implementation.
- *
- * @param string $name
- * @param string $className
- *
- * @return void
- *
- * @throws DBALException
- */
- public static function overrideType($name, $className)
- {
- self::getTypeRegistry()->override($name, new $className());
- }
-
- /**
- * Gets the (preferred) binding type for values of this type that
- * can be used when binding parameters to prepared statements.
- *
- * This method should return one of the {@link \Doctrine\DBAL\ParameterType} constants.
- *
- * @return int
- */
- public function getBindingType()
- {
- return ParameterType::STRING;
- }
-
- /**
- * Gets the types array map which holds all registered types and the corresponding
- * type class
- *
- * @return string[]
- */
- public static function getTypesMap()
- {
- return array_map(
- static function (Type $type) : string {
- return get_class($type);
- },
- self::getTypeRegistry()->getMap()
- );
- }
-
- /**
- * @deprecated Relying on string representation is discouraged and will be removed in DBAL 3.0.
- *
- * @return string
- */
- public function __toString()
- {
- $type = static::class;
- $position = strrpos($type, '\\');
-
- if ($position !== false) {
- $type = substr($type, $position);
- }
-
- return str_replace('Type', '', $type);
- }
-
- /**
- * Does working with this column require SQL conversion functions?
- *
- * This is a metadata function that is required for example in the ORM.
- * Usage of {@link convertToDatabaseValueSQL} and
- * {@link convertToPHPValueSQL} works for any type and mostly
- * does nothing. This method can additionally be used for optimization purposes.
- *
- * @return bool
- */
- public function canRequireSQLConversion()
- {
- return false;
- }
-
- /**
- * Modifies the SQL expression (identifier, parameter) to convert to a database value.
- *
- * @param string $sqlExpr
- *
- * @return string
- */
- public function convertToDatabaseValueSQL($sqlExpr, AbstractPlatform $platform)
- {
- return $sqlExpr;
- }
-
- /**
- * Modifies the SQL expression (identifier, parameter) to convert to a PHP value.
- *
- * @param string $sqlExpr
- * @param AbstractPlatform $platform
- *
- * @return string
- */
- public function convertToPHPValueSQL($sqlExpr, $platform)
- {
- return $sqlExpr;
- }
-
- /**
- * Gets an array of database types that map to this Doctrine type.
- *
- * @return string[]
- */
- public function getMappedDatabaseTypes(AbstractPlatform $platform)
- {
- return [];
- }
-
- /**
- * If this Doctrine Type maps to an already mapped database type,
- * reverse schema engineering can't tell them apart. You need to mark
- * one of those types as commented, which will have Doctrine use an SQL
- * comment to typehint the actual Doctrine Type.
- *
- * @return bool
- */
- public function requiresSQLCommentHint(AbstractPlatform $platform)
- {
- return false;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/TypeRegistry.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/TypeRegistry.php
deleted file mode 100644
index 7e8093cf7..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/TypeRegistry.php
+++ /dev/null
@@ -1,118 +0,0 @@
- Map of type names and their corresponding flyweight objects. */
- private $instances = [];
-
- /**
- * Finds a type by the given name.
- *
- * @throws DBALException
- */
- public function get(string $name) : Type
- {
- if (! isset($this->instances[$name])) {
- throw DBALException::unknownColumnType($name);
- }
-
- return $this->instances[$name];
- }
-
- /**
- * Finds a name for the given type.
- *
- * @throws DBALException
- */
- public function lookupName(Type $type) : string
- {
- $name = $this->findTypeName($type);
-
- if ($name === null) {
- throw DBALException::typeNotRegistered($type);
- }
-
- return $name;
- }
-
- /**
- * Checks if there is a type of the given name.
- */
- public function has(string $name) : bool
- {
- return isset($this->instances[$name]);
- }
-
- /**
- * Registers a custom type to the type map.
- *
- * @throws DBALException
- */
- public function register(string $name, Type $type) : void
- {
- if (isset($this->instances[$name])) {
- throw DBALException::typeExists($name);
- }
-
- if ($this->findTypeName($type) !== null) {
- throw DBALException::typeAlreadyRegistered($type);
- }
-
- $this->instances[$name] = $type;
- }
-
- /**
- * Overrides an already defined type to use a different implementation.
- *
- * @throws DBALException
- */
- public function override(string $name, Type $type) : void
- {
- if (! isset($this->instances[$name])) {
- throw DBALException::typeNotFound($name);
- }
-
- if (! in_array($this->findTypeName($type), [$name, null], true)) {
- throw DBALException::typeAlreadyRegistered($type);
- }
-
- $this->instances[$name] = $type;
- }
-
- /**
- * Gets the map of all registered types and their corresponding type instances.
- *
- * @internal
- *
- * @return array
- */
- public function getMap() : array
- {
- return $this->instances;
- }
-
- private function findTypeName(Type $type) : ?string
- {
- $name = array_search($type, $this->instances, true);
-
- if ($name === false) {
- return null;
- }
-
- return $name;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/Types.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/Types.php
deleted file mode 100644
index f8d0cf913..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/Types.php
+++ /dev/null
@@ -1,43 +0,0 @@
-format($platform->getDateTimeFormatString());
- }
-
- throw ConversionException::conversionFailedInvalidType(
- $value,
- $this->getName(),
- ['null', DateTimeImmutable::class]
- );
- }
-
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- if ($value === null || $value instanceof DateTimeImmutable) {
- return $value;
- }
-
- $dateTime = date_create_immutable($value);
-
- if (! $dateTime) {
- throw ConversionException::conversionFailed($value, $this->getName());
- }
-
- return $dateTime;
- }
-
- /**
- * {@inheritdoc}
- */
- public function requiresSQLCommentHint(AbstractPlatform $platform)
- {
- return true;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/VarDateTimeType.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/VarDateTimeType.php
deleted file mode 100644
index 1d9dbd3a6..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/VarDateTimeType.php
+++ /dev/null
@@ -1,34 +0,0 @@
- 0 it is necessary to use this type.
- */
-class VarDateTimeType extends DateTimeType
-{
- /**
- * {@inheritdoc}
- */
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- if ($value === null || $value instanceof DateTime) {
- return $value;
- }
-
- $val = date_create($value);
- if (! $val) {
- throw ConversionException::conversionFailed($value, $this->getName());
- }
-
- return $val;
- }
-}
diff --git a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Version.php b/vendor/doctrine/dbal/lib/Doctrine/DBAL/Version.php
deleted file mode 100644
index 2b1c0f23b..000000000
--- a/vendor/doctrine/dbal/lib/Doctrine/DBAL/Version.php
+++ /dev/null
@@ -1,33 +0,0 @@
- =>
- *
- * @var object[][]
- */
- private $_listeners = [];
-
- /**
- * Dispatches an event to all registered listeners.
- *
- * @param string $eventName The name of the event to dispatch. The name of the event is
- * the name of the method that is invoked on listeners.
- * @param EventArgs|null $eventArgs The event arguments to pass to the event handlers/listeners.
- * If not supplied, the single empty EventArgs instance is used.
- *
- * @return void
- */
- public function dispatchEvent($eventName, ?EventArgs $eventArgs = null)
- {
- if (! isset($this->_listeners[$eventName])) {
- return;
- }
-
- $eventArgs = $eventArgs ?? EventArgs::getEmptyInstance();
-
- foreach ($this->_listeners[$eventName] as $listener) {
- $listener->$eventName($eventArgs);
- }
- }
-
- /**
- * Gets the listeners of a specific event or all listeners.
- *
- * @param string|null $event The name of the event.
- *
- * @return object[]|object[][] The event listeners for the specified event, or all event listeners.
- */
- public function getListeners($event = null)
- {
- return $event ? $this->_listeners[$event] : $this->_listeners;
- }
-
- /**
- * Checks whether an event has any registered listeners.
- *
- * @param string $event
- *
- * @return bool TRUE if the specified event has any listeners, FALSE otherwise.
- */
- public function hasListeners($event)
- {
- return ! empty($this->_listeners[$event]);
- }
-
- /**
- * Adds an event listener that listens on the specified events.
- *
- * @param string|string[] $events The event(s) to listen on.
- * @param object $listener The listener object.
- *
- * @return void
- */
- public function addEventListener($events, $listener)
- {
- // Picks the hash code related to that listener
- $hash = spl_object_hash($listener);
-
- foreach ((array) $events as $event) {
- // Overrides listener if a previous one was associated already
- // Prevents duplicate listeners on same event (same instance only)
- $this->_listeners[$event][$hash] = $listener;
- }
- }
-
- /**
- * Removes an event listener from the specified events.
- *
- * @param string|string[] $events
- * @param object $listener
- *
- * @return void
- */
- public function removeEventListener($events, $listener)
- {
- // Picks the hash code related to that listener
- $hash = spl_object_hash($listener);
-
- foreach ((array) $events as $event) {
- unset($this->_listeners[$event][$hash]);
- }
- }
-
- /**
- * Adds an EventSubscriber. The subscriber is asked for all the events it is
- * interested in and added as a listener for these events.
- *
- * @param EventSubscriber $subscriber The subscriber.
- *
- * @return void
- */
- public function addEventSubscriber(EventSubscriber $subscriber)
- {
- $this->addEventListener($subscriber->getSubscribedEvents(), $subscriber);
- }
-
- /**
- * Removes an EventSubscriber. The subscriber is asked for all the events it is
- * interested in and removed as a listener for these events.
- *
- * @param EventSubscriber $subscriber The subscriber.
- *
- * @return void
- */
- public function removeEventSubscriber(EventSubscriber $subscriber)
- {
- $this->removeEventListener($subscriber->getSubscribedEvents(), $subscriber);
- }
-}
diff --git a/vendor/doctrine/event-manager/lib/Doctrine/Common/EventSubscriber.php b/vendor/doctrine/event-manager/lib/Doctrine/Common/EventSubscriber.php
deleted file mode 100644
index 7d5e2ea3f..000000000
--- a/vendor/doctrine/event-manager/lib/Doctrine/Common/EventSubscriber.php
+++ /dev/null
@@ -1,21 +0,0 @@
-
-crawlerdetect.io
-
-
-
-
-
-
-
-
-
-
-
-
-
-## About CrawlerDetect
-
-CrawlerDetect is a PHP class for detecting bots/crawlers/spiders via the user agent and http_from header. Currently able to detect 1,000's of bots/spiders/crawlers.
-
-### Installation
-Run `composer require jaybizzle/crawler-detect 1.*` or add `"jaybizzle/crawler-detect" :"1.*"` to your `composer.json`.
-
-### Usage
-```PHP
-use Jaybizzle\CrawlerDetect\CrawlerDetect;
-
-$CrawlerDetect = new CrawlerDetect;
-
-// Check the user agent of the current 'visitor'
-if($CrawlerDetect->isCrawler()) {
- // true if crawler user agent detected
-}
-
-// Pass a user agent as a string
-if($CrawlerDetect->isCrawler('Mozilla/5.0 (compatible; Sosospider/2.0; +http://help.soso.com/webspider.htm)')) {
- // true if crawler user agent detected
-}
-
-// Output the name of the bot that matched (if any)
-echo $CrawlerDetect->getMatches();
-```
-
-### Contributing
-If you find a bot/spider/crawler user agent that CrawlerDetect fails to detect, please submit a pull request with the regex pattern added to the `$data` array in `Fixtures/Crawlers.php` and add the failing user agent to `tests/crawlers.txt`.
-
-Failing that, just create an issue with the user agent you have found, and we'll take it from there :)
-
-### Laravel Package
-If you would like to use this with Laravel 4/5, please see [Laravel-Crawler-Detect](https://github.com/JayBizzle/Laravel-Crawler-Detect)
-
-### Symfony Bundle
-To use this library with Symfony 2/3/4, check out the [CrawlerDetectBundle](https://github.com/nicolasmure/CrawlerDetectBundle).
-
-### YII2 Extension
-To use this library with the YII2 framework, check out [yii2-crawler-detect](https://github.com/AlikDex/yii2-crawler-detect).
-
-### ES6 Library
-To use this library with NodeJS or any ES6 application based, check out [es6-crawler-detect](https://github.com/JefferyHus/es6-crawler-detect).
-
-### Python Library
-To use this library in a Python project, check out [crawlerdetect](https://github.com/moskrc/CrawlerDetect).
-
-### .NET Library
-To use this library in a .net standard (including .net core) based project, check out [NetCrawlerDetect](https://github.com/gplumb/NetCrawlerDetect).
-
-### Nette Extension
-To use this library with the Nette framework, checkout [NetteCrawlerDetect](https://github.com/JanGalek/Crawler-Detect).
-
-### Ruby Gem
-
-To use this library with Ruby on Rails or any Ruby-based application, check out [crawler_detect](https://github.com/loadkpi/crawler_detect) gem.
-
-_Parts of this class are based on the brilliant [MobileDetect](https://github.com/serbanghita/Mobile-Detect)_
-
-[](https://github.com/JayBizzle/Crawler-Detect)
diff --git a/vendor/jaybizzle/crawler-detect/composer.json b/vendor/jaybizzle/crawler-detect/composer.json
deleted file mode 100755
index 0c0babe6c..000000000
--- a/vendor/jaybizzle/crawler-detect/composer.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "name": "jaybizzle/crawler-detect",
- "type": "library",
- "description": "CrawlerDetect is a PHP class for detecting bots/crawlers/spiders via the user agent",
- "keywords": ["crawler", "crawler detect", "crawler detector", "crawlerdetect", "php crawler detect"],
- "homepage": "https://github.com/JayBizzle/Crawler-Detect/",
- "license": "MIT",
- "authors": [
- {
- "name": "Mark Beech",
- "email": "m@rkbee.ch",
- "role": "Developer"
- }
- ],
- "require": {
- "php": ">=5.3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8|^5.5|^6.5",
- "satooshi/php-coveralls": "1.*"
- },
- "autoload": {
- "psr-4": {
- "Jaybizzle\\CrawlerDetect\\": "src/"
- }
- },
- "scripts": {
- "test": "vendor/bin/phpunit"
- }
-}
diff --git a/vendor/jaybizzle/crawler-detect/export.php b/vendor/jaybizzle/crawler-detect/export.php
deleted file mode 100644
index 4c4b9d5d3..000000000
--- a/vendor/jaybizzle/crawler-detect/export.php
+++ /dev/null
@@ -1,41 +0,0 @@
-
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-require 'src/Fixtures/AbstractProvider.php';
-require 'src/Fixtures/Crawlers.php';
-require 'src/Fixtures/Exclusions.php';
-require 'src/Fixtures/Headers.php';
-
-$src = array(
- 'Crawlers',
- 'Exclusions',
- 'Headers',
-);
-
-foreach ($src as $class) {
- $class = "Jaybizzle\\CrawlerDetect\\Fixtures\\$class";
- $object = new $class;
-
- outputJson($object);
- outputTxt($object);
-}
-
-function outputJson($object)
-{
- $className = (new ReflectionClass($object))->getShortName();
- file_put_contents("raw/$className.json", json_encode($object->getAll()));
-}
-
-function outputTxt($object)
-{
- $className = (new ReflectionClass($object))->getShortName();
- file_put_contents("raw/$className.txt", implode($object->getAll(), PHP_EOL));
-}
diff --git a/vendor/jaybizzle/crawler-detect/raw/Crawlers.json b/vendor/jaybizzle/crawler-detect/raw/Crawlers.json
deleted file mode 100644
index ab3212eaf..000000000
--- a/vendor/jaybizzle/crawler-detect/raw/Crawlers.json
+++ /dev/null
@@ -1 +0,0 @@
-[".*Java.*outbrain"," YLT","^b0t$","^bluefish ","^Calypso v\\\/","^COMODO DCV","^DangDang","^DavClnt","^FDM ","^git\\\/","^Goose\\\/","^Grabber","^HTTPClient\\\/","^Java\\\/","^Jeode\\\/","^Jetty\\\/","^Mail\\\/","^Mget","^Microsoft URL Control","^NG\\\/[0-9\\.]","^NING\\\/","^PHP\\\/[0-9]","^RMA\\\/","^Ruby|Ruby\\\/[0-9]","^VSE\\\/[0-9]","^WordPress\\.com","^XRL\\\/[0-9]","^ZmEu","008\\\/","13TABS","192\\.comAgent","2ip\\.ru","404enemy","7Siters","80legs","a\\.pr-cy\\.ru","a3logics\\.in","A6-Indexer","Abonti","Aboundex","aboutthedomain","Accoona-AI-Agent","acoon","acrylicapps\\.com\\\/pulp","Acunetix","AdAuth\\\/","adbeat","AddThis","ADmantX","AdminLabs","adressendeutschland","adscanner","Adstxtaggregator","adstxt-worker","adstxt\\.com","agentslug","AHC","aihit","aiohttp\\\/","Airmail","akka-http\\\/","akula\\\/","alertra","alexa site audit","Alibaba\\.Security\\.Heimdall","Alligator","allloadin","AllSubmitter","alyze\\.info","amagit","^Amazon Simple Notification Service Agent$","Anarchie","AndroidDownloadManager","Anemone","AngleSharp","annotate_google","Ant\\.com","Anturis Agent","AnyEvent-HTTP\\\/","Apache Droid","Apache OpenOffice","Apache-HttpAsyncClient","Apache-HttpClient","ApacheBench","Apexoo","APIs-Google","AportWorm\\\/","AppBeat\\\/","AppEngine-Google","AppleSyndication","AppStoreScraperZ","Aprc\\\/[0-9]","Arachmo","arachnode","Arachnophilia","aria2","Arukereso","asafaweb","AskQuickly","Ask Jeeves","ASPSeek","Asterias","Astute","asynchttp","Attach","autocite","AutomaticWPTester","Autonomy","axios\\\/","AWS Security Scanner","B-l-i-t-z-B-O-T","Backlink-Ceck","backlink-check","BacklinkHttpStatus","BackStreet","BackWeb","Bad-Neighborhood","Badass","baidu\\.com","Bandit","basicstate","BatchFTP","Battleztar Bazinga","baypup\\\/","BazQux","BBBike","BCKLINKS","BDFetch","BegunAdvertising","Bidtellect","BigBozz","Bigfoot","biglotron","BingLocalSearch","BingPreview","binlar","biNu image cacher","Bitacle","biz_Directory","Black Hole","Blackboard Safeassign","BlackWidow","BlockNote\\.Net","Bloglines","Bloglovin","BlogPulseLive","BlogSearch","Blogtrottr","BlowFish","boitho\\.com-dc","BPImageWalker","Braintree-Webhooks","Branch Metrics API","Branch-Passthrough","Brandprotect","BrandVerity","Brandwatch","Brodie\\\/","Browsershots","BUbiNG","Buck\\\/","Buddy","BuiltWith","Bullseye","BunnySlippers","Burf Search","Butterfly\\\/","BuzzSumo","CAAM\\\/[0-9]","CakePHP","Calculon","Canary%20Mail","CaretNail","catexplorador","CC Metadata Scaper","Cegbfeieh","censys","Cerberian Drtrs","CERT\\.at-Statistics-Survey","cg-eye","changedetection","ChangesMeter","Charlotte","CheckHost","checkprivacy","CherryPicker","ChinaClaw","Chirp\\\/","chkme\\.com","Chlooe","Chromaxa","CirrusExplorer","CISPA Vulnerability Notification","Citoid","CJNetworkQuality","Clarsentia","clips\\.ua\\.ac\\.be","Cloud mapping","CloudEndure","CloudFlare-AlwaysOnline","Cloudinary","cmcm\\.com","coccoc","cognitiveseo","colly -","CommaFeed","Commons-HttpClient","commonscan","contactbigdatafr","contentkingapp","convera","CookieReports","copyright sheriff","CopyRightCheck","Copyscape","cortex\\\/","Cosmos4j\\.feedback","Covario-IDS","Craw\\\/","Crescent","Crowsnest","Criteo","CSHttp","CSSCheck","curb","Curious George","curl","cuwhois\\\/","cybo\\.com","DAP\\\/NetHTTP","DareBoost","DatabaseDriverMysqli","DataCha0s","Datafeedwatch","Datanyze","DataparkSearch","dataprovider","DataXu","Daum(oa)?[ \\\/][0-9]","dBpoweramp","ddline","deeris","Demon","DeuSu","developers\\.google\\.com\\\/\\+\\\/web\\\/snippet\\\/","Devil","Digg","Digincore","DigitalPebble","Dirbuster","Discourse Forum Onebox","Disqus\\\/","Dispatch\\\/","DittoSpyder","dlvr","DMBrowser","DNSPod-reporting","docoloc","Dolphin http client","DomainAppender","Donuts Content Explorer","dotMailer content retrieval","dotSemantic","downforeveryoneorjustme","Download Wonder","downnotifier","DowntimeDetector","Drip","drupact","Drupal \\(\\+http:\\\/\\\/drupal\\.org\\\/\\)","DTS Agent","dubaiindex","DuplexWeb-Google","EARTHCOM","Easy-Thumb","EasyDL","Ebingbong","ec2linkfinder","eCairn-Grabber","eCatch","ECCP","eContext\\\/","Ecxi","EirGrabber","ElectricMonk","elefent","EMail Exractor","EMail Wolf","EmailWolf","Embarcadero","Embed PHP Library","Embedly","endo\\\/","europarchive\\.org","evc-batch","EventMachine HttpClient","Everwall Link Expander","Evidon","Evrinid","ExactSearch","ExaleadCloudview","Excel\\\/","exif","Exploratodo","Express WebPictures","Extreme Picture Finder","EyeNetIE","ezooms","facebookexternalhit","facebookexternalua","facebookplatform","fairshare","Faraday v","fasthttp","Faveeo","Favicon downloader","faviconkit","faviconarchive","FavOrg","Feed Wrangler","Feedable\\\/","Feedbin","FeedBooster","FeedBucket","FeedBunch\\\/","FeedBurner","feeder","Feedly","FeedshowOnline","Feedspot","Feedwind\\\/","FeedZcollector","feeltiptop","Fetch API","Fetch\\\/[0-9]","Fever\\\/[0-9]","FHscan","Fimap","findlink","findthatfile","FlashGet","FlipboardBrowserProxy","FlipboardProxy","FlipboardRSS","Flock\\\/","fluffy","Flunky","flynxapp","forensiq","FoundSeoTool","http:\\\/\\\/www.neomo.de\\\/","free thumbnails","Freeuploader","Funnelback","G-i-g-a-b-o-t","g00g1e\\.net","ganarvisitas","geek-tools","Genieo","GentleSource","GetCode","Getintent","GetLinkInfo","getprismatic","GetRight","getroot","GetURLInfo\\\/","GetWeb","Geziyor","Ghost Inspector","GigablastOpenSource","GIS-LABS","github-camo","github\\.com","Go [\\d\\.]* package http","Go http package","Go-Ahead-Got-It","Go-http-client","Go!Zilla","gobyus","gofetch","GomezAgent","gooblog","Goodzer\\\/","Google AppsViewer","Google Desktop","Google favicon","Google Keyword Suggestion","Google Keyword Tool","Google Page Speed Insights","Google PP Default","Google Search Console","Google Web Preview","Google-Adwords","Google-Apps-Script","Google-Calendar-Importer","Google-HotelAdsVerifier","Google-HTTP-Java-Client","Google-Publisher-Plugin","Google-Read-Aloud","Google-SearchByImage","Google-Site-Verification","Google-Structured-Data-Testing-Tool","Google-Youtube-Links","google-xrawler","GoogleDocs","GoogleHC\\\/","GoogleProducer","GoogleSites","Google-Transparency-Report","Gookey","GoScraper","GoSpotCheck","gosquared-thumbnailer","Gotit","GoZilla","grabify","GrabNet","Grafula","Grammarly","GrapeFX","GreatNews","Gregarius","GRequests","grokkit","grouphigh","grub-client","gSOAP\\\/","GT::WWW","GTmetrix","GuzzleHttp","gvfs\\\/","HAA(A)?RTLAND http client","Haansoft","hackney\\\/","Hadi Agent","HappyApps-WebCheck","Hatena","Havij","HaxerMen","HeadlessChrome","HEADMasterSEO","HeartRails_Capture","help@dataminr\\.com","heritrix","historious","hkedcity","hledejLevne\\.cz","Hloader","HMView","Holmes","HonesoSearchEngine","HootSuite Image proxy","Hootsuite-WebFeed","hosterstats","HostTracker","ht:\\\/\\\/check","htdig","HTMLparser","htmlyse","HTTP Banner Detection","HTTP_Compression_Test","http_request2","http_requester","http-get","HTTP-Header-Abfrage","http-kit","http-request\\\/","HTTP-Tiny","HTTP::Lite","http\\.rb\\\/","http_get","HttpComponents","httphr","HTTPMon","HTTPie","httpRequest","httpscheck","httpssites_power","httpunit","HttpUrlConnection","httrack","huaweisymantec","HubSpot ","Humanlinks","i2kconnect\\\/","Iblog","ichiro","Id-search","IdeelaborPlagiaat","IDG Twitter Links Resolver","IDwhois\\\/","Iframely","igdeSpyder","IlTrovatore","Image Fetch","Image Sucker","ImageEngine\\\/","ImageVisu\\\/","Imagga","imagineeasy","imgsizer","InAGist","inbound\\.li parser","InDesign%20CC","Indy Library","InetURL","infegy","infohelfer","InfoTekies","InfoWizards Reciprocal Link","inpwrd\\.com","instabid","Instapaper","Integrity","integromedb","Intelliseek","InterGET","internet_archive","Internet Ninja","InternetSeer","internetVista monitor","internetwache","intraVnews","IODC","IOI","iplabel","ips-agent","IPS\\\/[0-9]","IPWorks HTTP\\\/S Component","iqdb\\\/","Iria","Irokez","isitup\\.org","iskanie","isUp\\.li","iThemes Sync\\\/","IZaBEE","iZSearch","JAHHO","janforman","Jaunt\\\/","Jbrofuzz","Jersey\\\/","JetCar","Jigsaw","Jobboerse","JobFeed discovery","Jobg8 URL Monitor","jobo","Jobrapido","Jobsearch1\\.5","JoinVision Generic","JolokiaPwn","Joomla","Jorgee","JS-Kit","JustView","Kaspersky Lab CFR link resolver","Kelny\\\/","Kerrigan\\\/","KeyCDN","Keyword Density","Keywords Research","khttp\\\/","KickFire","KimonoLabs\\\/","Kml-Google","knows\\.is","KOCMOHABT","kouio","kubectl","kube-probe","kulturarw3","KumKie","L\\.webis","Larbin","Lavf\\\/","LeechFTP","LeechGet","letsencrypt","Lftp","LibVLC","LibWeb","Libwhisker","libwww","Licorne","Liferea\\\/","Lightspeedsystems","Lighthouse","Likse","Link Valet","link_thumbnailer","LinkAlarm\\\/","linkCheck","linkdex","LinkExaminer","linkfluence","linkpeek","LinkPreviewGenerator","LinkScan","LinksManager","LinkTiger","LinkWalker","Lipperhey","Litemage_walker","livedoor ScreenShot","LoadImpactRload","localsearch-web","LongURL API","looid\\.com","looksystems\\.net","ltx71","lua-resty-http","lwp-request","lwp-trivial","LWP::Simple","lycos","LYT\\.SR","mabontland","Mag-Net","MagpieRSS","Mail\\.Ru","MailChimp","Majestic12","makecontact\\\/","Mandrill","MapperCmd","marketinggrader","MarkMonitor","MarkWatch","Mass Downloader","masscan\\\/","Mata Hari","Mediametric","Mediapartners-Google","mediawords","MegaIndex\\.ru","MeltwaterNews","Melvil Rawi","MemGator","Metaspinner","MetaURI","MFC_Tear_Sample","Microsearch","Microsoft Office ","Microsoft Outlook","Microsoft Windows Network Diagnostics","Microsoft-WebDAV-MiniRedir","Microsoft Data Access","MIDown tool","MIIxpc","Mindjet","Miniature\\.io","Miniflux","Mister PiX","mixdata dot com","mixed-content-scan","Mixmax-LinkPreview","mixnode","Mnogosearch","mogimogi","Mojeek","Mojolicious \\(Perl\\)","Monit\\\/","monitis","Monitority\\\/","montastic","MonTools","Moreover","Morfeus Fucking Scanner","Morning Paper","MovableType","mowser","Mrcgiguy","MS Web Services Client Protocol","MSFrontPage","mShots","MuckRack\\\/","muhstik-scan","MVAClient","MxToolbox\\\/","nagios","Najdi\\.si","Name Intelligence","Nameprotect","Navroad","NearSite","Needle","Nessus","Net Vampire","NetAnts","NETCRAFT","NetLyzer","NetMechanic","NetNewsWire","Netpursual","netresearch","NetShelter ContentScan","Netsparker","NetTrack","Netvibes","NetZIP","Neustar WPM","NeutrinoAPI","NewRelicPinger","NewsBlur .*Finder","NewsGator","newsme","newspaper\\\/","NetSystemsResearch","Nexgate Ruby Client","NG-Search","Nibbler","NICErsPRO","Nikto","nineconnections","NLNZ_IAHarvester","Nmap Scripting Engine","node-superagent","node-urllib","node\\.io","Nodemeter","NodePing","nominet\\.org\\.uk","nominet\\.uk","Norton-Safeweb","Notifixious","notifyninja","NotionEmbedder","nuhk","nutch","Nuzzel","nWormFeedFinder","nyawc\\\/","Nymesis","NYU","Ocelli\\\/","Octopus","oegp","Offline Explorer","Offline Navigator","OgScrper","og-scraper","okhttp","omgili","OMSC","Online Domain Tools","OpenCalaisSemanticProxy","Openfind","OpenLinkProfiler","Openstat\\\/","OpenVAS","OPPO A33","Optimizer","Orbiter","OrgProbe\\\/","orion-semantics","Outlook-Express","Outlook-iOS","ow\\.ly","Owler","ownCloud News","OxfordCloudService","Page Valet","page_verifier","page scorer","page2rss","PageGrabber","PagePeeker","PageScorer","Pagespeed\\\/","Panopta","panscient","Papa Foto","parsijoo","Pavuk","PayPal IPN","pcBrowser","Pcore-HTTP","Pearltrees","PECL::HTTP","peerindex","Peew","PeoplePal","Perlu -","PhantomJS Screenshoter","PhantomJS\\\/","Photon\\\/","phpservermon","Pi-Monster","Picscout","Picsearch","PictureFinder","Pimonster","ping\\.blo\\.gs","Pingability","PingAdmin\\.Ru","Pingdom","Pingoscope","PingSpot","pinterest\\.com","Pixray","Pizilla","Plagger\\\/","Ploetz \\+ Zeller","Plukkie","plumanalytics","PocketImageCache","PocketParser","Pockey","POE-Component-Client-HTTP","Polymail\\\/","Pompos","Porkbun","Port Monitor","postano","PostmanRuntime","PostPost","postrank","PowerPoint\\\/","Priceonomics Analysis Engine","PrintFriendly","PritTorrent","Prlog","probethenet","Project 25499","prospectb2b","Protopage","ProWebWalker","proximic","PRTG Network Monitor","pshtt, https scanning","PTST ","PTST\\\/[0-9]+","Pulsepoint XT3 web scraper","Pump","Python-httplib2","python-requests","Python-urllib","Qirina Hurdler","QQDownload","QrafterPro","Qseero","Qualidator","QueryN Metasearch","queuedriver","Quora Link Preview","Qwantify","Radian6","RankActive","RankFlex","RankSonicSiteAuditor","Re-re Studio","ReactorNetty","Readability","RealDownload","RealPlayer%20Downloader","RebelMouse","Recorder","RecurPost\\\/","redback\\\/","ReederForMac","Reeder\\\/","ReGet","RepoMonkey","request\\.js","reqwest\\\/","ResponseCodeTest","RestSharp","Riddler","Rival IQ","Robosourcer","Robozilla","ROI Hunter","RPT-HTTPClient","RSSOwl","safe-agent-scanner","SalesIntelligent","Saleslift","Sendsay\\.Ru","SauceNAO","SBIder","scalaj-http","scan\\.lol","ScanAlert","Scoop","scooter","ScoutJet","ScoutURLMonitor","ScrapeBox Page Scanner","SimpleScraper","Scrapy","Screaming","ScreenShotService","Scrubby","Scrutiny\\\/","search\\.thunderstone","Search37","searchenginepromotionhelp","Searchestate","SearchExpress","SearchSight","Seeker","semanticdiscovery","semanticjuice","Semiocast HTTP client","Semrush","sentry\\\/","SEO Browser","Seo Servis","seo-nastroj\\.cz","seo4ajax","Seobility","SEOCentro","SeoCheck","SEOkicks","Seomoz","SEOprofiler","SEOsearch","seoscanners","seositecheckup","SEOstats","servernfo","sexsearcher","Seznam","Shelob","Shodan","Shoppimon","ShopWiki","ShortLinkTranslate","shrinktheweb","Sideqik","SimplePie","SimplyFast","Siphon","SISTRIX","Site-Shot\\\/","Site Sucker","Site24x7","SiteBar","Sitebeam","Sitebulb\\\/","SiteCondor","SiteExplorer","SiteGuardian","Siteimprove","SiteIndexed","Sitemap(s)? Generator","SitemapGenerator","SiteMonitor","Siteshooter B0t","SiteSnagger","SiteSucker","SiteTruth","Sitevigil","sitexy\\.com","SkypeUriPreview","Slack\\\/","slider\\.com","slurp","SlySearch","SmartDownload","SMRF URL Expander","SMUrlExpander","Snake","Snappy","SnapSearch","Snarfer\\\/","SniffRSS","sniptracker","Snoopy","SnowHaze Search","sogou web","SortSite","Sottopop","sovereign\\.ai","SpaceBison","SpamExperts","Spammen","Spanner","spaziodati","SPDYCheck","Specificfeeds","speedy","SPEng","Spinn3r","spray-can","Sprinklr ","spyonweb","sqlmap","Sqlworm","Sqworm","SSL Labs","ssl-tools","StackRambler","Statastico\\\/","StatusCake","Steeler","Stratagems Kumo","Stroke\\.cz","StudioFACA","StumbleUpon","suchen","Sucuri","summify","SuperHTTP","Surphace Scout","Suzuran","SwiteScraper","Symfony BrowserKit","Symfony2 BrowserKit","SynHttpClient-Built","Sysomos","sysscan","Szukacz","T0PHackTeam","tAkeOut","Tarantula\\\/","Taringa UGC","TarmotGezgin","Teleport","Telesoft","Telesphoreo","Telesphorep","Tenon\\.io","teoma","terrainformatica","Test Certificate Info","testuri","Tetrahedron","TextRazor Downloader","The Drop Reaper","The Expert HTML Source Viewer","The Knowledge AI","The Intraformant","theinternetrules","TheNomad","Thinklab","Thumbshots","ThumbSniper","Thumbor","timewe\\.net","TinEye","Tiny Tiny RSS","TLSProbe\\\/","Toata","topster","touche\\.com","Traackr\\.com","tracemyfile","Trackuity","TrapitAgent","Trendiction","Trendsmap","trendspottr","truwoGPS","TryJsoup","TulipChain","Turingos","Turnitin","tweetedtimes","Tweetminster","Tweezler\\\/","twibble","Twice","Twikle","Twingly","Twisted PageGetter","Typhoeus","ubermetrics-technologies","uclassify","UdmSearch","unchaos","unirest-java","UniversalFeedParser","Unshorten\\.It","Untiny","UnwindFetchor","updated","updown\\.io daemon","Upflow","Uptimia","Urlcheckr","URL Verifier","URLitor","urlresolver","Urlstat","URLTester","UrlTrends Ranking Updater","URLy Warning","URLy\\.Warning","Vacuum","Vagabondo","VB Project","vBSEO","VCI","via ggpht\\.com GoogleImageProxy","VidibleScraper","Virusdie","visionutils","vkShare","VoidEYE","Voil","voltron","voyager\\\/","VSAgent\\\/","VSB-TUO\\\/","Vulnbusters Meter","VYU2","w3af\\.org","W3C_Unicorn","W3C-checklink","W3C-mobileOK","WAC-OFU","Wallpapers\\\/[0-9]+","WallpapersHD","wangling","Wappalyzer","WatchMouse","WbSrch\\\/","WDT\\.io","web-capture\\.net","Web-sniffer","Web Auto","Web Collage","Web Enhancer","Web Fetch","Web Fuck","Web Pix","Web Sauger","Web spyder","Web Sucker","Webalta","Webauskunft","WebAuto","WebCapture","WebClient\\\/","webcollage","WebCookies","WebCopier","WebCorp","WebDataStats","WebDoc","WebEnhancer","WebFetch","WebFuck","WebGazer","WebGo IS","WebImageCollector","WebImages","WebIndex","webkit2png","WebLeacher","webmastercoffee","webmon ","WebPix","WebReaper","WebSauger","webscreenie","Webshag","Webshot","Website Quester","websitepulse agent","WebsiteQuester","Websnapr","WebSniffer","Webster","WebStripper","WebSucker","Webthumb\\\/","WebThumbnail","WebWhacker","WebZIP","WeLikeLinks","WEPA","WeSEE","wf84","Wfuzz\\\/","wget","WhatsApp","WhatsMyIP","WhatWeb","WhereGoes\\?","Whibse","WhoRunsCoinHive","Whynder Magnet","Windows-RSS-Platform","WinPodder","wkhtmlto","wmtips","Woko","woorankreview","Word\\\/","WordPress\\\/","worldping-api","WordupinfoSearch","wotbox","WP Engine Install Performance API","wpif","wprecon\\.com survey","WPScan","wscheck","Wtrace","WWW-Collector-E","WWW-Mechanize","WWW::Document","WWW::Mechanize","www\\.monitor\\.us","WWWOFFLE","x09Mozilla","x22Mozilla","XaxisSemanticsClassifier","Xenu Link Sleuth","XING-contenttabreceiver","xpymep([0-9]?)\\.exe","Y!J-(ASR|BSC)","Y\\!J-BRW","Yaanb","yacy","Yahoo Link Preview","YahooCacheSystem","YahooYSMcm","YandeG","Yandex(?!Search)","yanga","yeti","Yo-yo","Yoleo Consumer","yoogliFetchAgent","YottaaMonitor","Your-Website-Sucks","yourls\\.org","YoYs\\.net","YP\\.PL","Zabbix","Zade","Zao","Zauba","Zemanta Aggregator","Zend_Http_Client","Zend\\\\Http\\\\Client","Zermelo","Zeus ","zgrab","ZnajdzFoto","ZnHTTP","Zombie\\.js","Zoom\\.Mac","ZyBorg","[a-z0-9\\-_]*(bot|crawl|archiver|transcoder|spider|uptime|validator|fetcher|cron|checker|reader|extractor|monitoring|analyzer)"]
\ No newline at end of file
diff --git a/vendor/jaybizzle/crawler-detect/raw/Crawlers.txt b/vendor/jaybizzle/crawler-detect/raw/Crawlers.txt
deleted file mode 100644
index f75e762e8..000000000
--- a/vendor/jaybizzle/crawler-detect/raw/Crawlers.txt
+++ /dev/null
@@ -1,1251 +0,0 @@
-.*Java.*outbrain
- YLT
-^b0t$
-^bluefish
-^Calypso v\/
-^COMODO DCV
-^DangDang
-^DavClnt
-^FDM
-^git\/
-^Goose\/
-^Grabber
-^HTTPClient\/
-^Java\/
-^Jeode\/
-^Jetty\/
-^Mail\/
-^Mget
-^Microsoft URL Control
-^NG\/[0-9\.]
-^NING\/
-^PHP\/[0-9]
-^RMA\/
-^Ruby|Ruby\/[0-9]
-^VSE\/[0-9]
-^WordPress\.com
-^XRL\/[0-9]
-^ZmEu
-008\/
-13TABS
-192\.comAgent
-2ip\.ru
-404enemy
-7Siters
-80legs
-a\.pr-cy\.ru
-a3logics\.in
-A6-Indexer
-Abonti
-Aboundex
-aboutthedomain
-Accoona-AI-Agent
-acoon
-acrylicapps\.com\/pulp
-Acunetix
-AdAuth\/
-adbeat
-AddThis
-ADmantX
-AdminLabs
-adressendeutschland
-adscanner
-Adstxtaggregator
-adstxt-worker
-adstxt\.com
-agentslug
-AHC
-aihit
-aiohttp\/
-Airmail
-akka-http\/
-akula\/
-alertra
-alexa site audit
-Alibaba\.Security\.Heimdall
-Alligator
-allloadin
-AllSubmitter
-alyze\.info
-amagit
-^Amazon Simple Notification Service Agent$
-Anarchie
-AndroidDownloadManager
-Anemone
-AngleSharp
-annotate_google
-Ant\.com
-Anturis Agent
-AnyEvent-HTTP\/
-Apache Droid
-Apache OpenOffice
-Apache-HttpAsyncClient
-Apache-HttpClient
-ApacheBench
-Apexoo
-APIs-Google
-AportWorm\/
-AppBeat\/
-AppEngine-Google
-AppleSyndication
-AppStoreScraperZ
-Aprc\/[0-9]
-Arachmo
-arachnode
-Arachnophilia
-aria2
-Arukereso
-asafaweb
-AskQuickly
-Ask Jeeves
-ASPSeek
-Asterias
-Astute
-asynchttp
-Attach
-autocite
-AutomaticWPTester
-Autonomy
-axios\/
-AWS Security Scanner
-B-l-i-t-z-B-O-T
-Backlink-Ceck
-backlink-check
-BacklinkHttpStatus
-BackStreet
-BackWeb
-Bad-Neighborhood
-Badass
-baidu\.com
-Bandit
-basicstate
-BatchFTP
-Battleztar Bazinga
-baypup\/
-BazQux
-BBBike
-BCKLINKS
-BDFetch
-BegunAdvertising
-Bidtellect
-BigBozz
-Bigfoot
-biglotron
-BingLocalSearch
-BingPreview
-binlar
-biNu image cacher
-Bitacle
-biz_Directory
-Black Hole
-Blackboard Safeassign
-BlackWidow
-BlockNote\.Net
-Bloglines
-Bloglovin
-BlogPulseLive
-BlogSearch
-Blogtrottr
-BlowFish
-boitho\.com-dc
-BPImageWalker
-Braintree-Webhooks
-Branch Metrics API
-Branch-Passthrough
-Brandprotect
-BrandVerity
-Brandwatch
-Brodie\/
-Browsershots
-BUbiNG
-Buck\/
-Buddy
-BuiltWith
-Bullseye
-BunnySlippers
-Burf Search
-Butterfly\/
-BuzzSumo
-CAAM\/[0-9]
-CakePHP
-Calculon
-Canary%20Mail
-CaretNail
-catexplorador
-CC Metadata Scaper
-Cegbfeieh
-censys
-Cerberian Drtrs
-CERT\.at-Statistics-Survey
-cg-eye
-changedetection
-ChangesMeter
-Charlotte
-CheckHost
-checkprivacy
-CherryPicker
-ChinaClaw
-Chirp\/
-chkme\.com
-Chlooe
-Chromaxa
-CirrusExplorer
-CISPA Vulnerability Notification
-Citoid
-CJNetworkQuality
-Clarsentia
-clips\.ua\.ac\.be
-Cloud mapping
-CloudEndure
-CloudFlare-AlwaysOnline
-Cloudinary
-cmcm\.com
-coccoc
-cognitiveseo
-colly -
-CommaFeed
-Commons-HttpClient
-commonscan
-contactbigdatafr
-contentkingapp
-convera
-CookieReports
-copyright sheriff
-CopyRightCheck
-Copyscape
-cortex\/
-Cosmos4j\.feedback
-Covario-IDS
-Craw\/
-Crescent
-Crowsnest
-Criteo
-CSHttp
-CSSCheck
-curb
-Curious George
-curl
-cuwhois\/
-cybo\.com
-DAP\/NetHTTP
-DareBoost
-DatabaseDriverMysqli
-DataCha0s
-Datafeedwatch
-Datanyze
-DataparkSearch
-dataprovider
-DataXu
-Daum(oa)?[ \/][0-9]
-dBpoweramp
-ddline
-deeris
-Demon
-DeuSu
-developers\.google\.com\/\+\/web\/snippet\/
-Devil
-Digg
-Digincore
-DigitalPebble
-Dirbuster
-Discourse Forum Onebox
-Disqus\/
-Dispatch\/
-DittoSpyder
-dlvr
-DMBrowser
-DNSPod-reporting
-docoloc
-Dolphin http client
-DomainAppender
-Donuts Content Explorer
-dotMailer content retrieval
-dotSemantic
-downforeveryoneorjustme
-Download Wonder
-downnotifier
-DowntimeDetector
-Drip
-drupact
-Drupal \(\+http:\/\/drupal\.org\/\)
-DTS Agent
-dubaiindex
-DuplexWeb-Google
-EARTHCOM
-Easy-Thumb
-EasyDL
-Ebingbong
-ec2linkfinder
-eCairn-Grabber
-eCatch
-ECCP
-eContext\/
-Ecxi
-EirGrabber
-ElectricMonk
-elefent
-EMail Exractor
-EMail Wolf
-EmailWolf
-Embarcadero
-Embed PHP Library
-Embedly
-endo\/
-europarchive\.org
-evc-batch
-EventMachine HttpClient
-Everwall Link Expander
-Evidon
-Evrinid
-ExactSearch
-ExaleadCloudview
-Excel\/
-exif
-Exploratodo
-Express WebPictures
-Extreme Picture Finder
-EyeNetIE
-ezooms
-facebookexternalhit
-facebookexternalua
-facebookplatform
-fairshare
-Faraday v
-fasthttp
-Faveeo
-Favicon downloader
-faviconkit
-faviconarchive
-FavOrg
-Feed Wrangler
-Feedable\/
-Feedbin
-FeedBooster
-FeedBucket
-FeedBunch\/
-FeedBurner
-feeder
-Feedly
-FeedshowOnline
-Feedspot
-Feedwind\/
-FeedZcollector
-feeltiptop
-Fetch API
-Fetch\/[0-9]
-Fever\/[0-9]
-FHscan
-Fimap
-findlink
-findthatfile
-FlashGet
-FlipboardBrowserProxy
-FlipboardProxy
-FlipboardRSS
-Flock\/
-fluffy
-Flunky
-flynxapp
-forensiq
-FoundSeoTool
-http:\/\/www.neomo.de\/
-free thumbnails
-Freeuploader
-Funnelback
-G-i-g-a-b-o-t
-g00g1e\.net
-ganarvisitas
-geek-tools
-Genieo
-GentleSource
-GetCode
-Getintent
-GetLinkInfo
-getprismatic
-GetRight
-getroot
-GetURLInfo\/
-GetWeb
-Geziyor
-Ghost Inspector
-GigablastOpenSource
-GIS-LABS
-github-camo
-github\.com
-Go [\d\.]* package http
-Go http package
-Go-Ahead-Got-It
-Go-http-client
-Go!Zilla
-gobyus
-gofetch
-GomezAgent
-gooblog
-Goodzer\/
-Google AppsViewer
-Google Desktop
-Google favicon
-Google Keyword Suggestion
-Google Keyword Tool
-Google Page Speed Insights
-Google PP Default
-Google Search Console
-Google Web Preview
-Google-Adwords
-Google-Apps-Script
-Google-Calendar-Importer
-Google-HotelAdsVerifier
-Google-HTTP-Java-Client
-Google-Publisher-Plugin
-Google-Read-Aloud
-Google-SearchByImage
-Google-Site-Verification
-Google-Structured-Data-Testing-Tool
-Google-Youtube-Links
-google-xrawler
-GoogleDocs
-GoogleHC\/
-GoogleProducer
-GoogleSites
-Google-Transparency-Report
-Gookey
-GoScraper
-GoSpotCheck
-gosquared-thumbnailer
-Gotit
-GoZilla
-grabify
-GrabNet
-Grafula
-Grammarly
-GrapeFX
-GreatNews
-Gregarius
-GRequests
-grokkit
-grouphigh
-grub-client
-gSOAP\/
-GT::WWW
-GTmetrix
-GuzzleHttp
-gvfs\/
-HAA(A)?RTLAND http client
-Haansoft
-hackney\/
-Hadi Agent
-HappyApps-WebCheck
-Hatena
-Havij
-HaxerMen
-HeadlessChrome
-HEADMasterSEO
-HeartRails_Capture
-help@dataminr\.com
-heritrix
-historious
-hkedcity
-hledejLevne\.cz
-Hloader
-HMView
-Holmes
-HonesoSearchEngine
-HootSuite Image proxy
-Hootsuite-WebFeed
-hosterstats
-HostTracker
-ht:\/\/check
-htdig
-HTMLparser
-htmlyse
-HTTP Banner Detection
-HTTP_Compression_Test
-http_request2
-http_requester
-http-get
-HTTP-Header-Abfrage
-http-kit
-http-request\/
-HTTP-Tiny
-HTTP::Lite
-http\.rb\/
-http_get
-HttpComponents
-httphr
-HTTPMon
-HTTPie
-httpRequest
-httpscheck
-httpssites_power
-httpunit
-HttpUrlConnection
-httrack
-huaweisymantec
-HubSpot
-Humanlinks
-i2kconnect\/
-Iblog
-ichiro
-Id-search
-IdeelaborPlagiaat
-IDG Twitter Links Resolver
-IDwhois\/
-Iframely
-igdeSpyder
-IlTrovatore
-Image Fetch
-Image Sucker
-ImageEngine\/
-ImageVisu\/
-Imagga
-imagineeasy
-imgsizer
-InAGist
-inbound\.li parser
-InDesign%20CC
-Indy Library
-InetURL
-infegy
-infohelfer
-InfoTekies
-InfoWizards Reciprocal Link
-inpwrd\.com
-instabid
-Instapaper
-Integrity
-integromedb
-Intelliseek
-InterGET
-internet_archive
-Internet Ninja
-InternetSeer
-internetVista monitor
-internetwache
-intraVnews
-IODC
-IOI
-iplabel
-ips-agent
-IPS\/[0-9]
-IPWorks HTTP\/S Component
-iqdb\/
-Iria
-Irokez
-isitup\.org
-iskanie
-isUp\.li
-iThemes Sync\/
-IZaBEE
-iZSearch
-JAHHO
-janforman
-Jaunt\/
-Jbrofuzz
-Jersey\/
-JetCar
-Jigsaw
-Jobboerse
-JobFeed discovery
-Jobg8 URL Monitor
-jobo
-Jobrapido
-Jobsearch1\.5
-JoinVision Generic
-JolokiaPwn
-Joomla
-Jorgee
-JS-Kit
-JustView
-Kaspersky Lab CFR link resolver
-Kelny\/
-Kerrigan\/
-KeyCDN
-Keyword Density
-Keywords Research
-khttp\/
-KickFire
-KimonoLabs\/
-Kml-Google
-knows\.is
-KOCMOHABT
-kouio
-kubectl
-kube-probe
-kulturarw3
-KumKie
-L\.webis
-Larbin
-Lavf\/
-LeechFTP
-LeechGet
-letsencrypt
-Lftp
-LibVLC
-LibWeb
-Libwhisker
-libwww
-Licorne
-Liferea\/
-Lightspeedsystems
-Lighthouse
-Likse
-Link Valet
-link_thumbnailer
-LinkAlarm\/
-linkCheck
-linkdex
-LinkExaminer
-linkfluence
-linkpeek
-LinkPreviewGenerator
-LinkScan
-LinksManager
-LinkTiger
-LinkWalker
-Lipperhey
-Litemage_walker
-livedoor ScreenShot
-LoadImpactRload
-localsearch-web
-LongURL API
-looid\.com
-looksystems\.net
-ltx71
-lua-resty-http
-lwp-request
-lwp-trivial
-LWP::Simple
-lycos
-LYT\.SR
-mabontland
-Mag-Net
-MagpieRSS
-Mail\.Ru
-MailChimp
-Majestic12
-makecontact\/
-Mandrill
-MapperCmd
-marketinggrader
-MarkMonitor
-MarkWatch
-Mass Downloader
-masscan\/
-Mata Hari
-Mediametric
-Mediapartners-Google
-mediawords
-MegaIndex\.ru
-MeltwaterNews
-Melvil Rawi
-MemGator
-Metaspinner
-MetaURI
-MFC_Tear_Sample
-Microsearch
-Microsoft Office
-Microsoft Outlook
-Microsoft Windows Network Diagnostics
-Microsoft-WebDAV-MiniRedir
-Microsoft Data Access
-MIDown tool
-MIIxpc
-Mindjet
-Miniature\.io
-Miniflux
-Mister PiX
-mixdata dot com
-mixed-content-scan
-Mixmax-LinkPreview
-mixnode
-Mnogosearch
-mogimogi
-Mojeek
-Mojolicious \(Perl\)
-Monit\/
-monitis
-Monitority\/
-montastic
-MonTools
-Moreover
-Morfeus Fucking Scanner
-Morning Paper
-MovableType
-mowser
-Mrcgiguy
-MS Web Services Client Protocol
-MSFrontPage
-mShots
-MuckRack\/
-muhstik-scan
-MVAClient
-MxToolbox\/
-nagios
-Najdi\.si
-Name Intelligence
-Nameprotect
-Navroad
-NearSite
-Needle
-Nessus
-Net Vampire
-NetAnts
-NETCRAFT
-NetLyzer
-NetMechanic
-NetNewsWire
-Netpursual
-netresearch
-NetShelter ContentScan
-Netsparker
-NetTrack
-Netvibes
-NetZIP
-Neustar WPM
-NeutrinoAPI
-NewRelicPinger
-NewsBlur .*Finder
-NewsGator
-newsme
-newspaper\/
-NetSystemsResearch
-Nexgate Ruby Client
-NG-Search
-Nibbler
-NICErsPRO
-Nikto
-nineconnections
-NLNZ_IAHarvester
-Nmap Scripting Engine
-node-superagent
-node-urllib
-node\.io
-Nodemeter
-NodePing
-nominet\.org\.uk
-nominet\.uk
-Norton-Safeweb
-Notifixious
-notifyninja
-NotionEmbedder
-nuhk
-nutch
-Nuzzel
-nWormFeedFinder
-nyawc\/
-Nymesis
-NYU
-Ocelli\/
-Octopus
-oegp
-Offline Explorer
-Offline Navigator
-OgScrper
-og-scraper
-okhttp
-omgili
-OMSC
-Online Domain Tools
-OpenCalaisSemanticProxy
-Openfind
-OpenLinkProfiler
-Openstat\/
-OpenVAS
-OPPO A33
-Optimizer
-Orbiter
-OrgProbe\/
-orion-semantics
-Outlook-Express
-Outlook-iOS
-ow\.ly
-Owler
-ownCloud News
-OxfordCloudService
-Page Valet
-page_verifier
-page scorer
-page2rss
-PageGrabber
-PagePeeker
-PageScorer
-Pagespeed\/
-Panopta
-panscient
-Papa Foto
-parsijoo
-Pavuk
-PayPal IPN
-pcBrowser
-Pcore-HTTP
-Pearltrees
-PECL::HTTP
-peerindex
-Peew
-PeoplePal
-Perlu -
-PhantomJS Screenshoter
-PhantomJS\/
-Photon\/
-phpservermon
-Pi-Monster
-Picscout
-Picsearch
-PictureFinder
-Pimonster
-ping\.blo\.gs
-Pingability
-PingAdmin\.Ru
-Pingdom
-Pingoscope
-PingSpot
-pinterest\.com
-Pixray
-Pizilla
-Plagger\/
-Ploetz \+ Zeller
-Plukkie
-plumanalytics
-PocketImageCache
-PocketParser
-Pockey
-POE-Component-Client-HTTP
-Polymail\/
-Pompos
-Porkbun
-Port Monitor
-postano
-PostmanRuntime
-PostPost
-postrank
-PowerPoint\/
-Priceonomics Analysis Engine
-PrintFriendly
-PritTorrent
-Prlog
-probethenet
-Project 25499
-prospectb2b
-Protopage
-ProWebWalker
-proximic
-PRTG Network Monitor
-pshtt, https scanning
-PTST
-PTST\/[0-9]+
-Pulsepoint XT3 web scraper
-Pump
-Python-httplib2
-python-requests
-Python-urllib
-Qirina Hurdler
-QQDownload
-QrafterPro
-Qseero
-Qualidator
-QueryN Metasearch
-queuedriver
-Quora Link Preview
-Qwantify
-Radian6
-RankActive
-RankFlex
-RankSonicSiteAuditor
-Re-re Studio
-ReactorNetty
-Readability
-RealDownload
-RealPlayer%20Downloader
-RebelMouse
-Recorder
-RecurPost\/
-redback\/
-ReederForMac
-Reeder\/
-ReGet
-RepoMonkey
-request\.js
-reqwest\/
-ResponseCodeTest
-RestSharp
-Riddler
-Rival IQ
-Robosourcer
-Robozilla
-ROI Hunter
-RPT-HTTPClient
-RSSOwl
-safe-agent-scanner
-SalesIntelligent
-Saleslift
-Sendsay\.Ru
-SauceNAO
-SBIder
-scalaj-http
-scan\.lol
-ScanAlert
-Scoop
-scooter
-ScoutJet
-ScoutURLMonitor
-ScrapeBox Page Scanner
-SimpleScraper
-Scrapy
-Screaming
-ScreenShotService
-Scrubby
-Scrutiny\/
-search\.thunderstone
-Search37
-searchenginepromotionhelp
-Searchestate
-SearchExpress
-SearchSight
-Seeker
-semanticdiscovery
-semanticjuice
-Semiocast HTTP client
-Semrush
-sentry\/
-SEO Browser
-Seo Servis
-seo-nastroj\.cz
-seo4ajax
-Seobility
-SEOCentro
-SeoCheck
-SEOkicks
-Seomoz
-SEOprofiler
-SEOsearch
-seoscanners
-seositecheckup
-SEOstats
-servernfo
-sexsearcher
-Seznam
-Shelob
-Shodan
-Shoppimon
-ShopWiki
-ShortLinkTranslate
-shrinktheweb
-Sideqik
-SimplePie
-SimplyFast
-Siphon
-SISTRIX
-Site-Shot\/
-Site Sucker
-Site24x7
-SiteBar
-Sitebeam
-Sitebulb\/
-SiteCondor
-SiteExplorer
-SiteGuardian
-Siteimprove
-SiteIndexed
-Sitemap(s)? Generator
-SitemapGenerator
-SiteMonitor
-Siteshooter B0t
-SiteSnagger
-SiteSucker
-SiteTruth
-Sitevigil
-sitexy\.com
-SkypeUriPreview
-Slack\/
-slider\.com
-slurp
-SlySearch
-SmartDownload
-SMRF URL Expander
-SMUrlExpander
-Snake
-Snappy
-SnapSearch
-Snarfer\/
-SniffRSS
-sniptracker
-Snoopy
-SnowHaze Search
-sogou web
-SortSite
-Sottopop
-sovereign\.ai
-SpaceBison
-SpamExperts
-Spammen
-Spanner
-spaziodati
-SPDYCheck
-Specificfeeds
-speedy
-SPEng
-Spinn3r
-spray-can
-Sprinklr
-spyonweb
-sqlmap
-Sqlworm
-Sqworm
-SSL Labs
-ssl-tools
-StackRambler
-Statastico\/
-StatusCake
-Steeler
-Stratagems Kumo
-Stroke\.cz
-StudioFACA
-StumbleUpon
-suchen
-Sucuri
-summify
-SuperHTTP
-Surphace Scout
-Suzuran
-SwiteScraper
-Symfony BrowserKit
-Symfony2 BrowserKit
-SynHttpClient-Built
-Sysomos
-sysscan
-Szukacz
-T0PHackTeam
-tAkeOut
-Tarantula\/
-Taringa UGC
-TarmotGezgin
-Teleport
-Telesoft
-Telesphoreo
-Telesphorep
-Tenon\.io
-teoma
-terrainformatica
-Test Certificate Info
-testuri
-Tetrahedron
-TextRazor Downloader
-The Drop Reaper
-The Expert HTML Source Viewer
-The Knowledge AI
-The Intraformant
-theinternetrules
-TheNomad
-Thinklab
-Thumbshots
-ThumbSniper
-Thumbor
-timewe\.net
-TinEye
-Tiny Tiny RSS
-TLSProbe\/
-Toata
-topster
-touche\.com
-Traackr\.com
-tracemyfile
-Trackuity
-TrapitAgent
-Trendiction
-Trendsmap
-trendspottr
-truwoGPS
-TryJsoup
-TulipChain
-Turingos
-Turnitin
-tweetedtimes
-Tweetminster
-Tweezler\/
-twibble
-Twice
-Twikle
-Twingly
-Twisted PageGetter
-Typhoeus
-ubermetrics-technologies
-uclassify
-UdmSearch
-unchaos
-unirest-java
-UniversalFeedParser
-Unshorten\.It
-Untiny
-UnwindFetchor
-updated
-updown\.io daemon
-Upflow
-Uptimia
-Urlcheckr
-URL Verifier
-URLitor
-urlresolver
-Urlstat
-URLTester
-UrlTrends Ranking Updater
-URLy Warning
-URLy\.Warning
-Vacuum
-Vagabondo
-VB Project
-vBSEO
-VCI
-via ggpht\.com GoogleImageProxy
-VidibleScraper
-Virusdie
-visionutils
-vkShare
-VoidEYE
-Voil
-voltron
-voyager\/
-VSAgent\/
-VSB-TUO\/
-Vulnbusters Meter
-VYU2
-w3af\.org
-W3C_Unicorn
-W3C-checklink
-W3C-mobileOK
-WAC-OFU
-Wallpapers\/[0-9]+
-WallpapersHD
-wangling
-Wappalyzer
-WatchMouse
-WbSrch\/
-WDT\.io
-web-capture\.net
-Web-sniffer
-Web Auto
-Web Collage
-Web Enhancer
-Web Fetch
-Web Fuck
-Web Pix
-Web Sauger
-Web spyder
-Web Sucker
-Webalta
-Webauskunft
-WebAuto
-WebCapture
-WebClient\/
-webcollage
-WebCookies
-WebCopier
-WebCorp
-WebDataStats
-WebDoc
-WebEnhancer
-WebFetch
-WebFuck
-WebGazer
-WebGo IS
-WebImageCollector
-WebImages
-WebIndex
-webkit2png
-WebLeacher
-webmastercoffee
-webmon
-WebPix
-WebReaper
-WebSauger
-webscreenie
-Webshag
-Webshot
-Website Quester
-websitepulse agent
-WebsiteQuester
-Websnapr
-WebSniffer
-Webster
-WebStripper
-WebSucker
-Webthumb\/
-WebThumbnail
-WebWhacker
-WebZIP
-WeLikeLinks
-WEPA
-WeSEE
-wf84
-Wfuzz\/
-wget
-WhatsApp
-WhatsMyIP
-WhatWeb
-WhereGoes\?
-Whibse
-WhoRunsCoinHive
-Whynder Magnet
-Windows-RSS-Platform
-WinPodder
-wkhtmlto
-wmtips
-Woko
-woorankreview
-Word\/
-WordPress\/
-worldping-api
-WordupinfoSearch
-wotbox
-WP Engine Install Performance API
-wpif
-wprecon\.com survey
-WPScan
-wscheck
-Wtrace
-WWW-Collector-E
-WWW-Mechanize
-WWW::Document
-WWW::Mechanize
-www\.monitor\.us
-WWWOFFLE
-x09Mozilla
-x22Mozilla
-XaxisSemanticsClassifier
-Xenu Link Sleuth
-XING-contenttabreceiver
-xpymep([0-9]?)\.exe
-Y!J-(ASR|BSC)
-Y\!J-BRW
-Yaanb
-yacy
-Yahoo Link Preview
-YahooCacheSystem
-YahooYSMcm
-YandeG
-Yandex(?!Search)
-yanga
-yeti
-Yo-yo
-Yoleo Consumer
-yoogliFetchAgent
-YottaaMonitor
-Your-Website-Sucks
-yourls\.org
-YoYs\.net
-YP\.PL
-Zabbix
-Zade
-Zao
-Zauba
-Zemanta Aggregator
-Zend_Http_Client
-Zend\\Http\\Client
-Zermelo
-Zeus
-zgrab
-ZnajdzFoto
-ZnHTTP
-Zombie\.js
-Zoom\.Mac
-ZyBorg
-[a-z0-9\-_]*(bot|crawl|archiver|transcoder|spider|uptime|validator|fetcher|cron|checker|reader|extractor|monitoring|analyzer)
\ No newline at end of file
diff --git a/vendor/jaybizzle/crawler-detect/raw/Exclusions.json b/vendor/jaybizzle/crawler-detect/raw/Exclusions.json
deleted file mode 100644
index a18eb985e..000000000
--- a/vendor/jaybizzle/crawler-detect/raw/Exclusions.json
+++ /dev/null
@@ -1 +0,0 @@
-["Safari.[\\d\\.]*","Firefox.[\\d\\.]*"," Chrome.[\\d\\.]*","Chromium.[\\d\\.]*","MSIE.[\\d\\.]","Opera\\\/[\\d\\.]*","Mozilla.[\\d\\.]*","AppleWebKit.[\\d\\.]*","Trident.[\\d\\.]*","Windows NT.[\\d\\.]*","Android [\\d\\.]*","Macintosh.","Ubuntu","Linux","[ ]Intel","Mac OS X [\\d_]*","(like )?Gecko(.[\\d\\.]*)?","KHTML,","CriOS.[\\d\\.]*","CPU iPhone OS ([0-9_])* like Mac OS X","CPU OS ([0-9_])* like Mac OS X","iPod","compatible","x86_..","i686","x64","X11","rv:[\\d\\.]*","Version.[\\d\\.]*","WOW64","Win64","Dalvik.[\\d\\.]*"," \\.NET CLR [\\d\\.]*","Presto.[\\d\\.]*","Media Center PC","BlackBerry","Build","Opera Mini\\\/\\d{1,2}\\.\\d{1,2}\\.[\\d\\.]*\\\/\\d{1,2}\\.","Opera"," \\.NET[\\d\\.]*","cubot","; M bot","; CRONO","; B bot","; IDbot","; ID bot","; POWER BOT",";"]
\ No newline at end of file
diff --git a/vendor/jaybizzle/crawler-detect/raw/Exclusions.txt b/vendor/jaybizzle/crawler-detect/raw/Exclusions.txt
deleted file mode 100644
index da56db9bd..000000000
--- a/vendor/jaybizzle/crawler-detect/raw/Exclusions.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-Safari.[\d\.]*
-Firefox.[\d\.]*
- Chrome.[\d\.]*
-Chromium.[\d\.]*
-MSIE.[\d\.]
-Opera\/[\d\.]*
-Mozilla.[\d\.]*
-AppleWebKit.[\d\.]*
-Trident.[\d\.]*
-Windows NT.[\d\.]*
-Android [\d\.]*
-Macintosh.
-Ubuntu
-Linux
-[ ]Intel
-Mac OS X [\d_]*
-(like )?Gecko(.[\d\.]*)?
-KHTML,
-CriOS.[\d\.]*
-CPU iPhone OS ([0-9_])* like Mac OS X
-CPU OS ([0-9_])* like Mac OS X
-iPod
-compatible
-x86_..
-i686
-x64
-X11
-rv:[\d\.]*
-Version.[\d\.]*
-WOW64
-Win64
-Dalvik.[\d\.]*
- \.NET CLR [\d\.]*
-Presto.[\d\.]*
-Media Center PC
-BlackBerry
-Build
-Opera Mini\/\d{1,2}\.\d{1,2}\.[\d\.]*\/\d{1,2}\.
-Opera
- \.NET[\d\.]*
-cubot
-; M bot
-; CRONO
-; B bot
-; IDbot
-; ID bot
-; POWER BOT
-;
\ No newline at end of file
diff --git a/vendor/jaybizzle/crawler-detect/raw/Headers.json b/vendor/jaybizzle/crawler-detect/raw/Headers.json
deleted file mode 100644
index 718f7f617..000000000
--- a/vendor/jaybizzle/crawler-detect/raw/Headers.json
+++ /dev/null
@@ -1 +0,0 @@
-["HTTP_USER_AGENT","HTTP_X_OPERAMINI_PHONE_UA","HTTP_X_DEVICE_USER_AGENT","HTTP_X_ORIGINAL_USER_AGENT","HTTP_X_SKYFIRE_PHONE","HTTP_X_BOLT_PHONE_UA","HTTP_DEVICE_STOCK_UA","HTTP_X_UCBROWSER_DEVICE_UA","HTTP_FROM","HTTP_X_SCANNER"]
\ No newline at end of file
diff --git a/vendor/jaybizzle/crawler-detect/raw/Headers.txt b/vendor/jaybizzle/crawler-detect/raw/Headers.txt
deleted file mode 100644
index 5e1ae3211..000000000
--- a/vendor/jaybizzle/crawler-detect/raw/Headers.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-HTTP_USER_AGENT
-HTTP_X_OPERAMINI_PHONE_UA
-HTTP_X_DEVICE_USER_AGENT
-HTTP_X_ORIGINAL_USER_AGENT
-HTTP_X_SKYFIRE_PHONE
-HTTP_X_BOLT_PHONE_UA
-HTTP_DEVICE_STOCK_UA
-HTTP_X_UCBROWSER_DEVICE_UA
-HTTP_FROM
-HTTP_X_SCANNER
\ No newline at end of file
diff --git a/vendor/jaybizzle/crawler-detect/src/CrawlerDetect.php b/vendor/jaybizzle/crawler-detect/src/CrawlerDetect.php
deleted file mode 100644
index 44f909b18..000000000
--- a/vendor/jaybizzle/crawler-detect/src/CrawlerDetect.php
+++ /dev/null
@@ -1,193 +0,0 @@
-
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Jaybizzle\CrawlerDetect;
-
-use Jaybizzle\CrawlerDetect\Fixtures\Headers;
-use Jaybizzle\CrawlerDetect\Fixtures\Crawlers;
-use Jaybizzle\CrawlerDetect\Fixtures\Exclusions;
-
-class CrawlerDetect
-{
- /**
- * The user agent.
- *
- * @var null
- */
- protected $userAgent = null;
-
- /**
- * Headers that contain a user agent.
- *
- * @var array
- */
- protected $httpHeaders = array();
-
- /**
- * Store regex matches.
- *
- * @var array
- */
- protected $matches = array();
-
- /**
- * Crawlers object.
- *
- * @var \Jaybizzle\CrawlerDetect\Fixtures\Crawlers
- */
- protected $crawlers;
-
- /**
- * Exclusions object.
- *
- * @var \Jaybizzle\CrawlerDetect\Fixtures\Exclusions
- */
- protected $exclusions;
-
- /**
- * Headers object.
- *
- * @var \Jaybizzle\CrawlerDetect\Fixtures\Headers
- */
- protected $uaHttpHeaders;
-
- /**
- * The compiled regex string.
- *
- * @var string
- */
- protected $compiledRegex;
-
- /**
- * The compiled exclusions regex string.
- *
- * @var string
- */
- protected $compiledExclusions;
-
- /**
- * Class constructor.
- */
- public function __construct(array $headers = null, $userAgent = null)
- {
- $this->crawlers = new Crawlers();
- $this->exclusions = new Exclusions();
- $this->uaHttpHeaders = new Headers();
-
- $this->compiledRegex = $this->compileRegex($this->crawlers->getAll());
- $this->compiledExclusions = $this->compileRegex($this->exclusions->getAll());
-
- $this->setHttpHeaders($headers);
- $this->setUserAgent($userAgent);
- }
-
- /**
- * Compile the regex patterns into one regex string.
- *
- * @param array
- *
- * @return string
- */
- public function compileRegex($patterns)
- {
- return '('.implode('|', $patterns).')';
- }
-
- /**
- * Set HTTP headers.
- *
- * @param array|null $httpHeaders
- */
- public function setHttpHeaders($httpHeaders)
- {
- // Use global _SERVER if $httpHeaders aren't defined.
- if (! is_array($httpHeaders) || ! count($httpHeaders)) {
- $httpHeaders = $_SERVER;
- }
-
- // Clear existing headers.
- $this->httpHeaders = array();
-
- // Only save HTTP headers. In PHP land, that means
- // only _SERVER vars that start with HTTP_.
- foreach ($httpHeaders as $key => $value) {
- if (strpos($key, 'HTTP_') === 0) {
- $this->httpHeaders[$key] = $value;
- }
- }
- }
-
- /**
- * Return user agent headers.
- *
- * @return array
- */
- public function getUaHttpHeaders()
- {
- return $this->uaHttpHeaders->getAll();
- }
-
- /**
- * Set the user agent.
- *
- * @param string $userAgent
- */
- public function setUserAgent($userAgent)
- {
- if (is_null($userAgent)) {
- foreach ($this->getUaHttpHeaders() as $altHeader) {
- if (isset($this->httpHeaders[$altHeader])) {
- $userAgent .= $this->httpHeaders[$altHeader].' ';
- }
- }
- }
-
- return $this->userAgent = $userAgent;
- }
-
- /**
- * Check user agent string against the regex.
- *
- * @param string|null $userAgent
- *
- * @return bool
- */
- public function isCrawler($userAgent = null)
- {
- $agent = trim(preg_replace(
- "/{$this->compiledExclusions}/i",
- '',
- $userAgent ?: $this->userAgent
- ));
-
- if ($agent == '') {
- return false;
- }
-
- $result = preg_match("/{$this->compiledRegex}/i", $agent, $matches);
-
- if ($matches) {
- $this->matches = $matches;
- }
-
- return (bool) $result;
- }
-
- /**
- * Return the matches.
- *
- * @return string|null
- */
- public function getMatches()
- {
- return isset($this->matches[0]) ? $this->matches[0] : null;
- }
-}
diff --git a/vendor/jaybizzle/crawler-detect/src/Fixtures/AbstractProvider.php b/vendor/jaybizzle/crawler-detect/src/Fixtures/AbstractProvider.php
deleted file mode 100644
index 26ea8e5fc..000000000
--- a/vendor/jaybizzle/crawler-detect/src/Fixtures/AbstractProvider.php
+++ /dev/null
@@ -1,32 +0,0 @@
-
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Jaybizzle\CrawlerDetect\Fixtures;
-
-abstract class AbstractProvider
-{
- /**
- * The data set.
- *
- * @var array
- */
- protected $data;
-
- /**
- * Return the data set.
- *
- * @return array
- */
- public function getAll()
- {
- return $this->data;
- }
-}
diff --git a/vendor/jaybizzle/crawler-detect/src/Fixtures/Crawlers.php b/vendor/jaybizzle/crawler-detect/src/Fixtures/Crawlers.php
deleted file mode 100644
index d5d648218..000000000
--- a/vendor/jaybizzle/crawler-detect/src/Fixtures/Crawlers.php
+++ /dev/null
@@ -1,1274 +0,0 @@
-
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Jaybizzle\CrawlerDetect\Fixtures;
-
-class Crawlers extends AbstractProvider
-{
- /**
- * Array of regular expressions to match against the user agent.
- *
- * @var array
- */
- protected $data = array(
- '.*Java.*outbrain',
- ' YLT',
- '^b0t$',
- '^bluefish ',
- '^Calypso v\/',
- '^COMODO DCV',
- '^DangDang',
- '^DavClnt',
- '^FDM ',
- '^git\/',
- '^Goose\/',
- '^Grabber',
- '^HTTPClient\/',
- '^Java\/',
- '^Jeode\/',
- '^Jetty\/',
- '^Mail\/',
- '^Mget',
- '^Microsoft URL Control',
- '^NG\/[0-9\.]',
- '^NING\/',
- '^PHP\/[0-9]',
- '^RMA\/',
- '^Ruby|Ruby\/[0-9]',
- '^VSE\/[0-9]',
- '^WordPress\.com',
- '^XRL\/[0-9]',
- '^ZmEu',
- '008\/',
- '13TABS',
- '192\.comAgent',
- '2ip\.ru',
- '404enemy',
- '7Siters',
- '80legs',
- 'a\.pr-cy\.ru',
- 'a3logics\.in',
- 'A6-Indexer',
- 'Abonti',
- 'Aboundex',
- 'aboutthedomain',
- 'Accoona-AI-Agent',
- 'acoon',
- 'acrylicapps\.com\/pulp',
- 'Acunetix',
- 'AdAuth\/',
- 'adbeat',
- 'AddThis',
- 'ADmantX',
- 'AdminLabs',
- 'adressendeutschland',
- 'adscanner',
- 'Adstxtaggregator',
- 'adstxt-worker',
- 'adstxt\.com',
- 'agentslug',
- 'AHC',
- 'aihit',
- 'aiohttp\/',
- 'Airmail',
- 'akka-http\/',
- 'akula\/',
- 'alertra',
- 'alexa site audit',
- 'Alibaba\.Security\.Heimdall',
- 'Alligator',
- 'allloadin',
- 'AllSubmitter',
- 'alyze\.info',
- 'amagit',
- '^Amazon Simple Notification Service Agent$',
- 'Anarchie',
- 'AndroidDownloadManager',
- 'Anemone',
- 'AngleSharp',
- 'annotate_google',
- 'Ant\.com',
- 'Anturis Agent',
- 'AnyEvent-HTTP\/',
- 'Apache Droid',
- 'Apache OpenOffice',
- 'Apache-HttpAsyncClient',
- 'Apache-HttpClient',
- 'ApacheBench',
- 'Apexoo',
- 'APIs-Google',
- 'AportWorm\/',
- 'AppBeat\/',
- 'AppEngine-Google',
- 'AppleSyndication',
- 'AppStoreScraperZ',
- 'Aprc\/[0-9]',
- 'Arachmo',
- 'arachnode',
- 'Arachnophilia',
- 'aria2',
- 'Arukereso',
- 'asafaweb',
- 'AskQuickly',
- 'Ask Jeeves',
- 'ASPSeek',
- 'Asterias',
- 'Astute',
- 'asynchttp',
- 'Attach',
- 'autocite',
- 'AutomaticWPTester',
- 'Autonomy',
- 'axios\/',
- 'AWS Security Scanner',
- 'B-l-i-t-z-B-O-T',
- 'Backlink-Ceck',
- 'backlink-check',
- 'BacklinkHttpStatus',
- 'BackStreet',
- 'BackWeb',
- 'Bad-Neighborhood',
- 'Badass',
- 'baidu\.com',
- 'Bandit',
- 'basicstate',
- 'BatchFTP',
- 'Battleztar Bazinga',
- 'baypup\/',
- 'BazQux',
- 'BBBike',
- 'BCKLINKS',
- 'BDFetch',
- 'BegunAdvertising',
- 'Bidtellect',
- 'BigBozz',
- 'Bigfoot',
- 'biglotron',
- 'BingLocalSearch',
- 'BingPreview',
- 'binlar',
- 'biNu image cacher',
- 'Bitacle',
- 'biz_Directory',
- 'Black Hole',
- 'Blackboard Safeassign',
- 'BlackWidow',
- 'BlockNote\.Net',
- 'Bloglines',
- 'Bloglovin',
- 'BlogPulseLive',
- 'BlogSearch',
- 'Blogtrottr',
- 'BlowFish',
- 'boitho\.com-dc',
- 'BPImageWalker',
- 'Braintree-Webhooks',
- 'Branch Metrics API',
- 'Branch-Passthrough',
- 'Brandprotect',
- 'BrandVerity',
- 'Brandwatch',
- 'Brodie\/',
- 'Browsershots',
- 'BUbiNG',
- 'Buck\/',
- 'Buddy',
- 'BuiltWith',
- 'Bullseye',
- 'BunnySlippers',
- 'Burf Search',
- 'Butterfly\/',
- 'BuzzSumo',
- 'CAAM\/[0-9]',
- 'CakePHP',
- 'Calculon',
- 'Canary%20Mail',
- 'CaretNail',
- 'catexplorador',
- 'CC Metadata Scaper',
- 'Cegbfeieh',
- 'censys',
- 'Cerberian Drtrs',
- 'CERT\.at-Statistics-Survey',
- 'cg-eye',
- 'changedetection',
- 'ChangesMeter',
- 'Charlotte',
- 'CheckHost',
- 'checkprivacy',
- 'CherryPicker',
- 'ChinaClaw',
- 'Chirp\/',
- 'chkme\.com',
- 'Chlooe',
- 'Chromaxa',
- 'CirrusExplorer',
- 'CISPA Vulnerability Notification',
- 'Citoid',
- 'CJNetworkQuality',
- 'Clarsentia',
- 'clips\.ua\.ac\.be',
- 'Cloud mapping',
- 'CloudEndure',
- 'CloudFlare-AlwaysOnline',
- 'Cloudinary',
- 'cmcm\.com',
- 'coccoc',
- 'cognitiveseo',
- 'colly -',
- 'CommaFeed',
- 'Commons-HttpClient',
- 'commonscan',
- 'contactbigdatafr',
- 'contentkingapp',
- 'convera',
- 'CookieReports',
- 'copyright sheriff',
- 'CopyRightCheck',
- 'Copyscape',
- 'cortex\/',
- 'Cosmos4j\.feedback',
- 'Covario-IDS',
- 'Craw\/',
- 'Crescent',
- 'Crowsnest',
- 'Criteo',
- 'CSHttp',
- 'CSSCheck',
- 'curb',
- 'Curious George',
- 'curl',
- 'cuwhois\/',
- 'cybo\.com',
- 'DAP\/NetHTTP',
- 'DareBoost',
- 'DatabaseDriverMysqli',
- 'DataCha0s',
- 'Datafeedwatch',
- 'Datanyze',
- 'DataparkSearch',
- 'dataprovider',
- 'DataXu',
- 'Daum(oa)?[ \/][0-9]',
- 'dBpoweramp',
- 'ddline',
- 'deeris',
- 'Demon',
- 'DeuSu',
- 'developers\.google\.com\/\+\/web\/snippet\/',
- 'Devil',
- 'Digg',
- 'Digincore',
- 'DigitalPebble',
- 'Dirbuster',
- 'Discourse Forum Onebox',
- 'Disqus\/',
- 'Dispatch\/',
- 'DittoSpyder',
- 'dlvr',
- 'DMBrowser',
- 'DNSPod-reporting',
- 'docoloc',
- 'Dolphin http client',
- 'DomainAppender',
- 'Donuts Content Explorer',
- 'dotMailer content retrieval',
- 'dotSemantic',
- 'downforeveryoneorjustme',
- 'Download Wonder',
- 'downnotifier',
- 'DowntimeDetector',
- 'Drip',
- 'drupact',
- 'Drupal \(\+http:\/\/drupal\.org\/\)',
- 'DTS Agent',
- 'dubaiindex',
- 'DuplexWeb-Google',
- 'EARTHCOM',
- 'Easy-Thumb',
- 'EasyDL',
- 'Ebingbong',
- 'ec2linkfinder',
- 'eCairn-Grabber',
- 'eCatch',
- 'ECCP',
- 'eContext\/',
- 'Ecxi',
- 'EirGrabber',
- 'ElectricMonk',
- 'elefent',
- 'EMail Exractor',
- 'EMail Wolf',
- 'EmailWolf',
- 'Embarcadero',
- 'Embed PHP Library',
- 'Embedly',
- 'endo\/',
- 'europarchive\.org',
- 'evc-batch',
- 'EventMachine HttpClient',
- 'Everwall Link Expander',
- 'Evidon',
- 'Evrinid',
- 'ExactSearch',
- 'ExaleadCloudview',
- 'Excel\/',
- 'exif',
- 'Exploratodo',
- 'Express WebPictures',
- 'Extreme Picture Finder',
- 'EyeNetIE',
- 'ezooms',
- 'facebookexternalhit',
- 'facebookexternalua',
- 'facebookplatform',
- 'fairshare',
- 'Faraday v',
- 'fasthttp',
- 'Faveeo',
- 'Favicon downloader',
- 'faviconkit',
- 'faviconarchive',
- 'FavOrg',
- 'Feed Wrangler',
- 'Feedable\/',
- 'Feedbin',
- 'FeedBooster',
- 'FeedBucket',
- 'FeedBunch\/',
- 'FeedBurner',
- 'feeder',
- 'Feedly',
- 'FeedshowOnline',
- 'Feedspot',
- 'Feedwind\/',
- 'FeedZcollector',
- 'feeltiptop',
- 'Fetch API',
- 'Fetch\/[0-9]',
- 'Fever\/[0-9]',
- 'FHscan',
- 'Fimap',
- 'findlink',
- 'findthatfile',
- 'FlashGet',
- 'FlipboardBrowserProxy',
- 'FlipboardProxy',
- 'FlipboardRSS',
- 'Flock\/',
- 'fluffy',
- 'Flunky',
- 'flynxapp',
- 'forensiq',
- 'FoundSeoTool',
- 'http:\/\/www.neomo.de\/', //'Francis [Bot]'
- 'free thumbnails',
- 'Freeuploader',
- 'Funnelback',
- 'G-i-g-a-b-o-t',
- 'g00g1e\.net',
- 'ganarvisitas',
- 'geek-tools',
- 'Genieo',
- 'GentleSource',
- 'GetCode',
- 'Getintent',
- 'GetLinkInfo',
- 'getprismatic',
- 'GetRight',
- 'getroot',
- 'GetURLInfo\/',
- 'GetWeb',
- 'Geziyor',
- 'Ghost Inspector',
- 'GigablastOpenSource',
- 'GIS-LABS',
- 'github-camo',
- 'github\.com',
- 'Go [\d\.]* package http',
- 'Go http package',
- 'Go-Ahead-Got-It',
- 'Go-http-client',
- 'Go!Zilla',
- 'gobyus',
- 'gofetch',
- 'GomezAgent',
- 'gooblog',
- 'Goodzer\/',
- 'Google AppsViewer',
- 'Google Desktop',
- 'Google favicon',
- 'Google Keyword Suggestion',
- 'Google Keyword Tool',
- 'Google Page Speed Insights',
- 'Google PP Default',
- 'Google Search Console',
- 'Google Web Preview',
- 'Google-Adwords',
- 'Google-Apps-Script',
- 'Google-Calendar-Importer',
- 'Google-HotelAdsVerifier',
- 'Google-HTTP-Java-Client',
- 'Google-Publisher-Plugin',
- 'Google-Read-Aloud',
- 'Google-SearchByImage',
- 'Google-Site-Verification',
- 'Google-Structured-Data-Testing-Tool',
- 'Google-Youtube-Links',
- 'google-xrawler',
- 'GoogleDocs',
- 'GoogleHC\/',
- 'GoogleProducer',
- 'GoogleSites',
- 'Google-Transparency-Report',
- 'Gookey',
- 'GoScraper',
- 'GoSpotCheck',
- 'gosquared-thumbnailer',
- 'Gotit',
- 'GoZilla',
- 'grabify',
- 'GrabNet',
- 'Grafula',
- 'Grammarly',
- 'GrapeFX',
- 'GreatNews',
- 'Gregarius',
- 'GRequests',
- 'grokkit',
- 'grouphigh',
- 'grub-client',
- 'gSOAP\/',
- 'GT::WWW',
- 'GTmetrix',
- 'GuzzleHttp',
- 'gvfs\/',
- 'HAA(A)?RTLAND http client',
- 'Haansoft',
- 'hackney\/',
- 'Hadi Agent',
- 'HappyApps-WebCheck',
- 'Hatena',
- 'Havij',
- 'HaxerMen',
- 'HeadlessChrome',
- 'HEADMasterSEO',
- 'HeartRails_Capture',
- 'help@dataminr\.com',
- 'heritrix',
- 'historious',
- 'hkedcity',
- 'hledejLevne\.cz',
- 'Hloader',
- 'HMView',
- 'Holmes',
- 'HonesoSearchEngine',
- 'HootSuite Image proxy',
- 'Hootsuite-WebFeed',
- 'hosterstats',
- 'HostTracker',
- 'ht:\/\/check',
- 'htdig',
- 'HTMLparser',
- 'htmlyse',
- 'HTTP Banner Detection',
- 'HTTP_Compression_Test',
- 'http_request2',
- 'http_requester',
- 'http-get',
- 'HTTP-Header-Abfrage',
- 'http-kit',
- 'http-request\/',
- 'HTTP-Tiny',
- 'HTTP::Lite',
- 'http\.rb\/',
- 'http_get',
- 'HttpComponents',
- 'httphr',
- 'HTTPMon',
- 'HTTPie',
- 'httpRequest',
- 'httpscheck',
- 'httpssites_power',
- 'httpunit',
- 'HttpUrlConnection',
- 'httrack',
- 'huaweisymantec',
- 'HubSpot ',
- 'Humanlinks',
- 'i2kconnect\/',
- 'Iblog',
- 'ichiro',
- 'Id-search',
- 'IdeelaborPlagiaat',
- 'IDG Twitter Links Resolver',
- 'IDwhois\/',
- 'Iframely',
- 'igdeSpyder',
- 'IlTrovatore',
- 'Image Fetch',
- 'Image Sucker',
- 'ImageEngine\/',
- 'ImageVisu\/',
- 'Imagga',
- 'imagineeasy',
- 'imgsizer',
- 'InAGist',
- 'inbound\.li parser',
- 'InDesign%20CC',
- 'Indy Library',
- 'InetURL',
- 'infegy',
- 'infohelfer',
- 'InfoTekies',
- 'InfoWizards Reciprocal Link',
- 'inpwrd\.com',
- 'instabid',
- 'Instapaper',
- 'Integrity',
- 'integromedb',
- 'Intelliseek',
- 'InterGET',
- 'internet_archive',
- 'Internet Ninja',
- 'InternetSeer',
- 'internetVista monitor',
- 'internetwache',
- 'intraVnews',
- 'IODC',
- 'IOI',
- 'iplabel',
- 'ips-agent',
- 'IPS\/[0-9]',
- 'IPWorks HTTP\/S Component',
- 'iqdb\/',
- 'Iria',
- 'Irokez',
- 'isitup\.org',
- 'iskanie',
- 'isUp\.li',
- 'iThemes Sync\/',
- 'IZaBEE',
- 'iZSearch',
- 'JAHHO',
- 'janforman',
- 'Jaunt\/',
- 'Jbrofuzz',
- 'Jersey\/',
- 'JetCar',
- 'Jigsaw',
- 'Jobboerse',
- 'JobFeed discovery',
- 'Jobg8 URL Monitor',
- 'jobo',
- 'Jobrapido',
- 'Jobsearch1\.5',
- 'JoinVision Generic',
- 'JolokiaPwn',
- 'Joomla',
- 'Jorgee',
- 'JS-Kit',
- 'JustView',
- 'Kaspersky Lab CFR link resolver',
- 'Kelny\/',
- 'Kerrigan\/',
- 'KeyCDN',
- 'Keyword Density',
- 'Keywords Research',
- 'khttp\/',
- 'KickFire',
- 'KimonoLabs\/',
- 'Kml-Google',
- 'knows\.is',
- 'KOCMOHABT',
- 'kouio',
- 'kubectl',
- 'kube-probe',
- 'kulturarw3',
- 'KumKie',
- 'L\.webis',
- 'Larbin',
- 'Lavf\/',
- 'LeechFTP',
- 'LeechGet',
- 'letsencrypt',
- 'Lftp',
- 'LibVLC',
- 'LibWeb',
- 'Libwhisker',
- 'libwww',
- 'Licorne',
- 'Liferea\/',
- 'Lightspeedsystems',
- 'Lighthouse',
- 'Likse',
- 'Link Valet',
- 'link_thumbnailer',
- 'LinkAlarm\/',
- 'linkCheck',
- 'linkdex',
- 'LinkExaminer',
- 'linkfluence',
- 'linkpeek',
- 'LinkPreviewGenerator',
- 'LinkScan',
- 'LinksManager',
- 'LinkTiger',
- 'LinkWalker',
- 'Lipperhey',
- 'Litemage_walker',
- 'livedoor ScreenShot',
- 'LoadImpactRload',
- 'localsearch-web',
- 'LongURL API',
- 'looid\.com',
- 'looksystems\.net',
- 'ltx71',
- 'lua-resty-http',
- 'lwp-request',
- 'lwp-trivial',
- 'LWP::Simple',
- 'lycos',
- 'LYT\.SR',
- 'mabontland',
- 'Mag-Net',
- 'MagpieRSS',
- 'Mail\.Ru',
- 'MailChimp',
- 'Majestic12',
- 'makecontact\/',
- 'Mandrill',
- 'MapperCmd',
- 'marketinggrader',
- 'MarkMonitor',
- 'MarkWatch',
- 'Mass Downloader',
- 'masscan\/',
- 'Mata Hari',
- 'Mediametric',
- 'Mediapartners-Google',
- 'mediawords',
- 'MegaIndex\.ru',
- 'MeltwaterNews',
- 'Melvil Rawi',
- 'MemGator',
- 'Metaspinner',
- 'MetaURI',
- 'MFC_Tear_Sample',
- 'Microsearch',
- 'Microsoft Office ',
- 'Microsoft Outlook',
- 'Microsoft Windows Network Diagnostics',
- 'Microsoft-WebDAV-MiniRedir',
- 'Microsoft Data Access',
- 'MIDown tool',
- 'MIIxpc',
- 'Mindjet',
- 'Miniature\.io',
- 'Miniflux',
- 'Mister PiX',
- 'mixdata dot com',
- 'mixed-content-scan',
- 'Mixmax-LinkPreview',
- 'mixnode',
- 'Mnogosearch',
- 'mogimogi',
- 'Mojeek',
- 'Mojolicious \(Perl\)',
- 'Monit\/',
- 'monitis',
- 'Monitority\/',
- 'montastic',
- 'MonTools',
- 'Moreover',
- 'Morfeus Fucking Scanner',
- 'Morning Paper',
- 'MovableType',
- 'mowser',
- 'Mrcgiguy',
- 'MS Web Services Client Protocol',
- 'MSFrontPage',
- 'mShots',
- 'MuckRack\/',
- 'muhstik-scan',
- 'MVAClient',
- 'MxToolbox\/',
- 'nagios',
- 'Najdi\.si',
- 'Name Intelligence',
- 'Nameprotect',
- 'Navroad',
- 'NearSite',
- 'Needle',
- 'Nessus',
- 'Net Vampire',
- 'NetAnts',
- 'NETCRAFT',
- 'NetLyzer',
- 'NetMechanic',
- 'NetNewsWire',
- 'Netpursual',
- 'netresearch',
- 'NetShelter ContentScan',
- 'Netsparker',
- 'NetTrack',
- 'Netvibes',
- 'NetZIP',
- 'Neustar WPM',
- 'NeutrinoAPI',
- 'NewRelicPinger',
- 'NewsBlur .*Finder',
- 'NewsGator',
- 'newsme',
- 'newspaper\/',
- 'NetSystemsResearch',
- 'Nexgate Ruby Client',
- 'NG-Search',
- 'Nibbler',
- 'NICErsPRO',
- 'Nikto',
- 'nineconnections',
- 'NLNZ_IAHarvester',
- 'Nmap Scripting Engine',
- 'node-superagent',
- 'node-urllib',
- 'node\.io',
- 'Nodemeter',
- 'NodePing',
- 'nominet\.org\.uk',
- 'nominet\.uk',
- 'Norton-Safeweb',
- 'Notifixious',
- 'notifyninja',
- 'NotionEmbedder',
- 'nuhk',
- 'nutch',
- 'Nuzzel',
- 'nWormFeedFinder',
- 'nyawc\/',
- 'Nymesis',
- 'NYU',
- 'Ocelli\/',
- 'Octopus',
- 'oegp',
- 'Offline Explorer',
- 'Offline Navigator',
- 'OgScrper',
- 'og-scraper',
- 'okhttp',
- 'omgili',
- 'OMSC',
- 'Online Domain Tools',
- 'OpenCalaisSemanticProxy',
- 'Openfind',
- 'OpenLinkProfiler',
- 'Openstat\/',
- 'OpenVAS',
- 'OPPO A33',
- 'Optimizer',
- 'Orbiter',
- 'OrgProbe\/',
- 'orion-semantics',
- 'Outlook-Express',
- 'Outlook-iOS',
- 'ow\.ly',
- 'Owler',
- 'ownCloud News',
- 'OxfordCloudService',
- 'Page Valet',
- 'page_verifier',
- 'page scorer',
- 'page2rss',
- 'PageGrabber',
- 'PagePeeker',
- 'PageScorer',
- 'Pagespeed\/',
- 'Panopta',
- 'panscient',
- 'Papa Foto',
- 'parsijoo',
- 'Pavuk',
- 'PayPal IPN',
- 'pcBrowser',
- 'Pcore-HTTP',
- 'Pearltrees',
- 'PECL::HTTP',
- 'peerindex',
- 'Peew',
- 'PeoplePal',
- 'Perlu -',
- 'PhantomJS Screenshoter',
- 'PhantomJS\/',
- 'Photon\/',
- 'phpservermon',
- 'Pi-Monster',
- 'Picscout',
- 'Picsearch',
- 'PictureFinder',
- 'Pimonster',
- 'ping\.blo\.gs',
- 'Pingability',
- 'PingAdmin\.Ru',
- 'Pingdom',
- 'Pingoscope',
- 'PingSpot',
- 'pinterest\.com',
- 'Pixray',
- 'Pizilla',
- 'Plagger\/',
- 'Ploetz \+ Zeller',
- 'Plukkie',
- 'plumanalytics',
- 'PocketImageCache',
- 'PocketParser',
- 'Pockey',
- 'POE-Component-Client-HTTP',
- 'Polymail\/',
- 'Pompos',
- 'Porkbun',
- 'Port Monitor',
- 'postano',
- 'PostmanRuntime',
- 'PostPost',
- 'postrank',
- 'PowerPoint\/',
- 'Priceonomics Analysis Engine',
- 'PrintFriendly',
- 'PritTorrent',
- 'Prlog',
- 'probethenet',
- 'Project 25499',
- 'prospectb2b',
- 'Protopage',
- 'ProWebWalker',
- 'proximic',
- 'PRTG Network Monitor',
- 'pshtt, https scanning',
- 'PTST ',
- 'PTST\/[0-9]+',
- 'Pulsepoint XT3 web scraper',
- 'Pump',
- 'Python-httplib2',
- 'python-requests',
- 'Python-urllib',
- 'Qirina Hurdler',
- 'QQDownload',
- 'QrafterPro',
- 'Qseero',
- 'Qualidator',
- 'QueryN Metasearch',
- 'queuedriver',
- 'Quora Link Preview',
- 'Qwantify',
- 'Radian6',
- 'RankActive',
- 'RankFlex',
- 'RankSonicSiteAuditor',
- 'Re-re Studio',
- 'ReactorNetty',
- 'Readability',
- 'RealDownload',
- 'RealPlayer%20Downloader',
- 'RebelMouse',
- 'Recorder',
- 'RecurPost\/',
- 'redback\/',
- 'ReederForMac',
- 'Reeder\/',
- 'ReGet',
- 'RepoMonkey',
- 'request\.js',
- 'reqwest\/',
- 'ResponseCodeTest',
- 'RestSharp',
- 'Riddler',
- 'Rival IQ',
- 'Robosourcer',
- 'Robozilla',
- 'ROI Hunter',
- 'RPT-HTTPClient',
- 'RSSOwl',
- 'safe-agent-scanner',
- 'SalesIntelligent',
- 'Saleslift',
- 'Sendsay\.Ru',
- 'SauceNAO',
- 'SBIder',
- 'scalaj-http',
- 'scan\.lol',
- 'ScanAlert',
- 'Scoop',
- 'scooter',
- 'ScoutJet',
- 'ScoutURLMonitor',
- 'ScrapeBox Page Scanner',
- 'SimpleScraper',
- 'Scrapy',
- 'Screaming',
- 'ScreenShotService',
- 'Scrubby',
- 'Scrutiny\/',
- 'search\.thunderstone',
- 'Search37',
- 'searchenginepromotionhelp',
- 'Searchestate',
- 'SearchExpress',
- 'SearchSight',
- 'Seeker',
- 'semanticdiscovery',
- 'semanticjuice',
- 'Semiocast HTTP client',
- 'Semrush',
- 'sentry\/',
- 'SEO Browser',
- 'Seo Servis',
- 'seo-nastroj\.cz',
- 'seo4ajax',
- 'Seobility',
- 'SEOCentro',
- 'SeoCheck',
- 'SEOkicks',
- 'Seomoz',
- 'SEOprofiler',
- 'SEOsearch',
- 'seoscanners',
- 'seositecheckup',
- 'SEOstats',
- 'servernfo',
- 'sexsearcher',
- 'Seznam',
- 'Shelob',
- 'Shodan',
- 'Shoppimon',
- 'ShopWiki',
- 'ShortLinkTranslate',
- 'shrinktheweb',
- 'Sideqik',
- 'SimplePie',
- 'SimplyFast',
- 'Siphon',
- 'SISTRIX',
- 'Site-Shot\/',
- 'Site Sucker',
- 'Site24x7',
- 'SiteBar',
- 'Sitebeam',
- 'Sitebulb\/',
- 'SiteCondor',
- 'SiteExplorer',
- 'SiteGuardian',
- 'Siteimprove',
- 'SiteIndexed',
- 'Sitemap(s)? Generator',
- 'SitemapGenerator',
- 'SiteMonitor',
- 'Siteshooter B0t',
- 'SiteSnagger',
- 'SiteSucker',
- 'SiteTruth',
- 'Sitevigil',
- 'sitexy\.com',
- 'SkypeUriPreview',
- 'Slack\/',
- 'slider\.com',
- 'slurp',
- 'SlySearch',
- 'SmartDownload',
- 'SMRF URL Expander',
- 'SMUrlExpander',
- 'Snake',
- 'Snappy',
- 'SnapSearch',
- 'Snarfer\/',
- 'SniffRSS',
- 'sniptracker',
- 'Snoopy',
- 'SnowHaze Search',
- 'sogou web',
- 'SortSite',
- 'Sottopop',
- 'sovereign\.ai',
- 'SpaceBison',
- 'SpamExperts',
- 'Spammen',
- 'Spanner',
- 'spaziodati',
- 'SPDYCheck',
- 'Specificfeeds',
- 'speedy',
- 'SPEng',
- 'Spinn3r',
- 'spray-can',
- 'Sprinklr ',
- 'spyonweb',
- 'sqlmap',
- 'Sqlworm',
- 'Sqworm',
- 'SSL Labs',
- 'ssl-tools',
- 'StackRambler',
- 'Statastico\/',
- 'StatusCake',
- 'Steeler',
- 'Stratagems Kumo',
- 'Stroke\.cz',
- 'StudioFACA',
- 'StumbleUpon',
- 'suchen',
- 'Sucuri',
- 'summify',
- 'SuperHTTP',
- 'Surphace Scout',
- 'Suzuran',
- 'SwiteScraper',
- 'Symfony BrowserKit',
- 'Symfony2 BrowserKit',
- 'SynHttpClient-Built',
- 'Sysomos',
- 'sysscan',
- 'Szukacz',
- 'T0PHackTeam',
- 'tAkeOut',
- 'Tarantula\/',
- 'Taringa UGC',
- 'TarmotGezgin',
- 'Teleport',
- 'Telesoft',
- 'Telesphoreo',
- 'Telesphorep',
- 'Tenon\.io',
- 'teoma',
- 'terrainformatica',
- 'Test Certificate Info',
- 'testuri',
- 'Tetrahedron',
- 'TextRazor Downloader',
- 'The Drop Reaper',
- 'The Expert HTML Source Viewer',
- 'The Knowledge AI',
- 'The Intraformant',
- 'theinternetrules',
- 'TheNomad',
- 'Thinklab',
- 'Thumbshots',
- 'ThumbSniper',
- 'Thumbor',
- 'timewe\.net',
- 'TinEye',
- 'Tiny Tiny RSS',
- 'TLSProbe\/',
- 'Toata',
- 'topster',
- 'touche\.com',
- 'Traackr\.com',
- 'tracemyfile',
- 'Trackuity',
- 'TrapitAgent',
- 'Trendiction',
- 'Trendsmap',
- 'trendspottr',
- 'truwoGPS',
- 'TryJsoup',
- 'TulipChain',
- 'Turingos',
- 'Turnitin',
- 'tweetedtimes',
- 'Tweetminster',
- 'Tweezler\/',
- 'twibble',
- 'Twice',
- 'Twikle',
- 'Twingly',
- 'Twisted PageGetter',
- 'Typhoeus',
- 'ubermetrics-technologies',
- 'uclassify',
- 'UdmSearch',
- 'unchaos',
- 'unirest-java',
- 'UniversalFeedParser',
- 'Unshorten\.It',
- 'Untiny',
- 'UnwindFetchor',
- 'updated',
- 'updown\.io daemon',
- 'Upflow',
- 'Uptimia',
- 'Urlcheckr',
- 'URL Verifier',
- 'URLitor',
- 'urlresolver',
- 'Urlstat',
- 'URLTester',
- 'UrlTrends Ranking Updater',
- 'URLy Warning',
- 'URLy\.Warning',
- 'Vacuum',
- 'Vagabondo',
- 'VB Project',
- 'vBSEO',
- 'VCI',
- 'via ggpht\.com GoogleImageProxy',
- 'VidibleScraper',
- 'Virusdie',
- 'visionutils',
- 'vkShare',
- 'VoidEYE',
- 'Voil',
- 'voltron',
- 'voyager\/',
- 'VSAgent\/',
- 'VSB-TUO\/',
- 'Vulnbusters Meter',
- 'VYU2',
- 'w3af\.org',
- 'W3C_Unicorn',
- 'W3C-checklink',
- 'W3C-mobileOK',
- 'WAC-OFU',
- 'Wallpapers\/[0-9]+',
- 'WallpapersHD',
- 'wangling',
- 'Wappalyzer',
- 'WatchMouse',
- 'WbSrch\/',
- 'WDT\.io',
- 'web-capture\.net',
- 'Web-sniffer',
- 'Web Auto',
- 'Web Collage',
- 'Web Enhancer',
- 'Web Fetch',
- 'Web Fuck',
- 'Web Pix',
- 'Web Sauger',
- 'Web spyder',
- 'Web Sucker',
- 'Webalta',
- 'Webauskunft',
- 'WebAuto',
- 'WebCapture',
- 'WebClient\/',
- 'webcollage',
- 'WebCookies',
- 'WebCopier',
- 'WebCorp',
- 'WebDataStats',
- 'WebDoc',
- 'WebEnhancer',
- 'WebFetch',
- 'WebFuck',
- 'WebGazer',
- 'WebGo IS',
- 'WebImageCollector',
- 'WebImages',
- 'WebIndex',
- 'webkit2png',
- 'WebLeacher',
- 'webmastercoffee',
- 'webmon ',
- 'WebPix',
- 'WebReaper',
- 'WebSauger',
- 'webscreenie',
- 'Webshag',
- 'Webshot',
- 'Website Quester',
- 'websitepulse agent',
- 'WebsiteQuester',
- 'Websnapr',
- 'WebSniffer',
- 'Webster',
- 'WebStripper',
- 'WebSucker',
- 'Webthumb\/',
- 'WebThumbnail',
- 'WebWhacker',
- 'WebZIP',
- 'WeLikeLinks',
- 'WEPA',
- 'WeSEE',
- 'wf84',
- 'Wfuzz\/',
- 'wget',
- 'WhatsApp',
- 'WhatsMyIP',
- 'WhatWeb',
- 'WhereGoes\?',
- 'Whibse',
- 'WhoRunsCoinHive',
- 'Whynder Magnet',
- 'Windows-RSS-Platform',
- 'WinPodder',
- 'wkhtmlto',
- 'wmtips',
- 'Woko',
- 'woorankreview',
- 'Word\/',
- 'WordPress\/',
- 'worldping-api',
- 'WordupinfoSearch',
- 'wotbox',
- 'WP Engine Install Performance API',
- 'wpif',
- 'wprecon\.com survey',
- 'WPScan',
- 'wscheck',
- 'Wtrace',
- 'WWW-Collector-E',
- 'WWW-Mechanize',
- 'WWW::Document',
- 'WWW::Mechanize',
- 'www\.monitor\.us',
- 'WWWOFFLE',
- 'x09Mozilla',
- 'x22Mozilla',
- 'XaxisSemanticsClassifier',
- 'Xenu Link Sleuth',
- 'XING-contenttabreceiver',
- 'xpymep([0-9]?)\.exe',
- 'Y!J-(ASR|BSC)',
- 'Y\!J-BRW',
- 'Yaanb',
- 'yacy',
- 'Yahoo Link Preview',
- 'YahooCacheSystem',
- 'YahooYSMcm',
- 'YandeG',
- 'Yandex(?!Search)',
- 'yanga',
- 'yeti',
- 'Yo-yo',
- 'Yoleo Consumer',
- 'yoogliFetchAgent',
- 'YottaaMonitor',
- 'Your-Website-Sucks',
- 'yourls\.org',
- 'YoYs\.net',
- 'YP\.PL',
- 'Zabbix',
- 'Zade',
- 'Zao',
- 'Zauba',
- 'Zemanta Aggregator',
- 'Zend_Http_Client',
- 'Zend\\\\Http\\\\Client',
- 'Zermelo',
- 'Zeus ',
- 'zgrab',
- 'ZnajdzFoto',
- 'ZnHTTP',
- 'Zombie\.js',
- 'Zoom\.Mac',
- 'ZyBorg',
- '[a-z0-9\-_]*(bot|crawl|archiver|transcoder|spider|uptime|validator|fetcher|cron|checker|reader|extractor|monitoring|analyzer)',
- );
-}
diff --git a/vendor/jaybizzle/crawler-detect/src/Fixtures/Exclusions.php b/vendor/jaybizzle/crawler-detect/src/Fixtures/Exclusions.php
deleted file mode 100644
index e6b3ca897..000000000
--- a/vendor/jaybizzle/crawler-detect/src/Fixtures/Exclusions.php
+++ /dev/null
@@ -1,72 +0,0 @@
-
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Jaybizzle\CrawlerDetect\Fixtures;
-
-class Exclusions extends AbstractProvider
-{
- /**
- * List of strings to remove from the user agent before running the crawler regex
- * Over a large list of user agents, this gives us about a 55% speed increase!
- *
- * @var array
- */
- protected $data = array(
- 'Safari.[\d\.]*',
- 'Firefox.[\d\.]*',
- ' Chrome.[\d\.]*',
- 'Chromium.[\d\.]*',
- 'MSIE.[\d\.]',
- 'Opera\/[\d\.]*',
- 'Mozilla.[\d\.]*',
- 'AppleWebKit.[\d\.]*',
- 'Trident.[\d\.]*',
- 'Windows NT.[\d\.]*',
- 'Android [\d\.]*',
- 'Macintosh.',
- 'Ubuntu',
- 'Linux',
- '[ ]Intel',
- 'Mac OS X [\d_]*',
- '(like )?Gecko(.[\d\.]*)?',
- 'KHTML,',
- 'CriOS.[\d\.]*',
- 'CPU iPhone OS ([0-9_])* like Mac OS X',
- 'CPU OS ([0-9_])* like Mac OS X',
- 'iPod',
- 'compatible',
- 'x86_..',
- 'i686',
- 'x64',
- 'X11',
- 'rv:[\d\.]*',
- 'Version.[\d\.]*',
- 'WOW64',
- 'Win64',
- 'Dalvik.[\d\.]*',
- ' \.NET CLR [\d\.]*',
- 'Presto.[\d\.]*',
- 'Media Center PC',
- 'BlackBerry',
- 'Build',
- 'Opera Mini\/\d{1,2}\.\d{1,2}\.[\d\.]*\/\d{1,2}\.',
- 'Opera',
- ' \.NET[\d\.]*',
- 'cubot',
- '; M bot',
- '; CRONO',
- '; B bot',
- '; IDbot',
- '; ID bot',
- '; POWER BOT',
- ';', // Remove the following characters ;
- );
-}
diff --git a/vendor/jaybizzle/crawler-detect/src/Fixtures/Headers.php b/vendor/jaybizzle/crawler-detect/src/Fixtures/Headers.php
deleted file mode 100644
index 35c60c389..000000000
--- a/vendor/jaybizzle/crawler-detect/src/Fixtures/Headers.php
+++ /dev/null
@@ -1,37 +0,0 @@
-
- *
- * This source file is subject to the MIT license that is bundled
- * with this source code in the file LICENSE.
- */
-
-namespace Jaybizzle\CrawlerDetect\Fixtures;
-
-class Headers extends AbstractProvider
-{
- /**
- * All possible HTTP headers that represent the user agent string.
- *
- * @var array
- */
- protected $data = array(
- // The default User-Agent string.
- 'HTTP_USER_AGENT',
- // Header can occur on devices using Opera Mini.
- 'HTTP_X_OPERAMINI_PHONE_UA',
- // Vodafone specific header: http://www.seoprinciple.com/mobile-web-community-still-angry-at-vodafone/24/
- 'HTTP_X_DEVICE_USER_AGENT',
- 'HTTP_X_ORIGINAL_USER_AGENT',
- 'HTTP_X_SKYFIRE_PHONE',
- 'HTTP_X_BOLT_PHONE_UA',
- 'HTTP_DEVICE_STOCK_UA',
- 'HTTP_X_UCBROWSER_DEVICE_UA',
- // Sometimes, bots (especially Google) use a genuine user agent, but fill this header in with their email address
- 'HTTP_FROM',
- 'HTTP_X_SCANNER', // Seen in use by Netsparker
- );
-}
diff --git a/vendor/jenssegers/agent/LICENSE b/vendor/jenssegers/agent/LICENSE
deleted file mode 100644
index 229071a82..000000000
--- a/vendor/jenssegers/agent/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Jens Segers
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/jenssegers/agent/README.md b/vendor/jenssegers/agent/README.md
deleted file mode 100644
index 1c074552b..000000000
--- a/vendor/jenssegers/agent/README.md
+++ /dev/null
@@ -1,180 +0,0 @@
-Agent
-=====
-
-[](https://packagist.org/packages/jenssegers/agent) [](https://packagist.org/packages/jenssegers/agent) [](https://travis-ci.org/jenssegers/agent) [](https://coveralls.io/r/jenssegers/agent) [](https://www.paypal.me/jenssegers)
-
-A PHP desktop/mobile user agent parser with support for Laravel, based on [Mobile Detect](https://github.com/serbanghita/Mobile-Detect) with desktop support and additional functionality.
-
-
-
-
-
-Installation
-------------
-
-Install using composer:
-
-```bash
-composer require jenssegers/agent
-```
-
-Laravel (optional)
-------------------
-
-Add the service provider in `config/app.php`:
-
-```php
-Jenssegers\Agent\AgentServiceProvider::class,
-```
-
-And add the Agent alias to `config/app.php`:
-
-```php
-'Agent' => Jenssegers\Agent\Facades\Agent::class,
-```
-
-Basic Usage
------------
-
-Start by creating an `Agent` instance (or use the `Agent` Facade if you are using Laravel):
-
-```php
-use Jenssegers\Agent\Agent;
-
-$agent = new Agent();
-```
-
-If you want to parse user agents other than the current request in CLI scripts for example, you can use the `setUserAgent` and `setHttpHeaders` methods:
-
-```php
-$agent->setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.13+ (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2');
-$agent->setHttpHeaders($headers);
-```
-
-All of the original [Mobile Detect](https://github.com/serbanghita/Mobile-Detect) methods are still available, check out some original examples at https://github.com/serbanghita/Mobile-Detect/wiki/Code-examples
-
-### Is?
-
-Check for a certain property in the user agent.
-
-```php
-$agent->is('Windows');
-$agent->is('Firefox');
-$agent->is('iPhone');
-$agent->is('OS X');
-```
-
-### Magic is-method
-
-Magic method that does the same as the previous `is()` method:
-
-```php
-$agent->isAndroidOS();
-$agent->isNexus();
-$agent->isSafari();
-```
-
-### Mobile detection
-
-Check for mobile device:
-
-```php
-$agent->isMobile();
-$agent->isTablet();
-```
-
-### Match user agent
-
-Search the user agent with a regular expression:
-
-```php
-$agent->match('regexp');
-```
-
-Additional Functionality
-------------------------
-
-### Accept languages
-
-Get the browser's accept languages. Example:
-
-```php
-$languages = $agent->languages();
-// ['nl-nl', 'nl', 'en-us', 'en']
-```
-
-### Device name
-
-Get the device name, if mobile. (iPhone, Nexus, AsusTablet, ...)
-
-```php
-$device = $agent->device();
-```
-
-### Operating system name
-
-Get the operating system. (Ubuntu, Windows, OS X, ...)
-
-```php
-$platform = $agent->platform();
-```
-
-### Browser name
-
-Get the browser name. (Chrome, IE, Safari, Firefox, ...)
-
-```php
-$browser = $agent->browser();
-```
-
-### Desktop detection
-
-Check if the user is using a desktop device.
-
-```php
-$agent->isDesktop();
-```
-
-*This checks if a user is not a mobile device, tablet or robot.*
-
-### Phone detection
-
-Check if the user is using a phone device.
-
-```php
-$agent->isPhone();
-```
-
-### Robot detection
-
-Check if the user is a robot. This uses [jaybizzle/crawler-detect](https://github.com/JayBizzle/Crawler-Detect) to do the actual robot detection.
-
-```php
-$agent->isRobot();
-```
-
-### Robot name
-
-Get the robot name.
-
-```php
-$robot = $agent->robot();
-```
-
-### Browser/platform version
-
-MobileDetect recently added a `version` method that can get the version number for components. To get the browser or platform version you can use:
-
-```php
-$browser = $agent->browser();
-$version = $agent->version($browser);
-
-$platform = $agent->platform();
-$version = $agent->version($platform);
-```
-
-*Note, the version method is still in beta, so it might not return the correct result.*
-
-## License
-
-Laravel User Agent is licensed under [The MIT License (MIT)](LICENSE).
diff --git a/vendor/jenssegers/agent/composer.json b/vendor/jenssegers/agent/composer.json
deleted file mode 100644
index c87056872..000000000
--- a/vendor/jenssegers/agent/composer.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "name": "jenssegers/agent",
- "description": "Desktop/mobile user agent parser with support for Laravel, based on Mobiledetect",
- "keywords": ["laravel", "useragent", "agent", "user agent", "browser", "platform", "mobile", "desktop"],
- "homepage": "https://github.com/jenssegers/agent",
- "license" : "MIT",
- "authors": [
- {
- "name": "Jens Segers",
- "homepage": "https://jenssegers.com"
- }
- ],
- "require": {
- "php": ">=5.6",
- "mobiledetect/mobiledetectlib": "^2.7.6",
- "jaybizzle/crawler-detect": "^1.2"
- },
- "require-dev": {
- "phpunit/phpunit": "^5.0|^6.0|^7.0",
- "php-coveralls/php-coveralls": "^2.1"
- },
- "autoload": {
- "psr-4": {
- "Jenssegers\\Agent\\": "src/"
- }
- },
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- },
- "laravel": {
- "providers": [
- "Jenssegers\\Agent\\AgentServiceProvider"
- ],
- "aliases": {
- "Agent": "Jenssegers\\Agent\\Facades\\Agent"
- }
- }
- },
- "suggest": {
- "illuminate/support": "^4.0|^5.0"
- }
-}
diff --git a/vendor/jenssegers/agent/src/Agent.php b/vendor/jenssegers/agent/src/Agent.php
deleted file mode 100644
index a1549f0b4..000000000
--- a/vendor/jenssegers/agent/src/Agent.php
+++ /dev/null
@@ -1,383 +0,0 @@
- 'Macintosh',
- ];
-
- /**
- * List of additional operating systems.
- * @var array
- */
- protected static $additionalOperatingSystems = [
- 'Windows' => 'Windows',
- 'Windows NT' => 'Windows NT',
- 'OS X' => 'Mac OS X',
- 'Debian' => 'Debian',
- 'Ubuntu' => 'Ubuntu',
- 'Macintosh' => 'PPC',
- 'OpenBSD' => 'OpenBSD',
- 'Linux' => 'Linux',
- 'ChromeOS' => 'CrOS',
- ];
-
- /**
- * List of additional browsers.
- * @var array
- */
- protected static $additionalBrowsers = [
- 'Opera Mini' => 'Opera Mini',
- 'Opera' => 'Opera|OPR',
- 'Edge' => 'Edge',
- 'UCBrowser' => 'UCBrowser',
- 'Vivaldi' => 'Vivaldi',
- 'Chrome' => 'Chrome',
- 'Firefox' => 'Firefox',
- 'Safari' => 'Safari',
- 'IE' => 'MSIE|IEMobile|MSIEMobile|Trident/[.0-9]+',
- 'Netscape' => 'Netscape',
- 'Mozilla' => 'Mozilla',
- ];
-
- /**
- * List of additional properties.
- * @var array
- */
- protected static $additionalProperties = [
- // Operating systems
- 'Windows' => 'Windows NT [VER]',
- 'Windows NT' => 'Windows NT [VER]',
- 'OS X' => 'OS X [VER]',
- 'BlackBerryOS' => ['BlackBerry[\w]+/[VER]', 'BlackBerry.*Version/[VER]', 'Version/[VER]'],
- 'AndroidOS' => 'Android [VER]',
- 'ChromeOS' => 'CrOS x86_64 [VER]',
-
- // Browsers
- 'Opera Mini' => 'Opera Mini/[VER]',
- 'Opera' => [' OPR/[VER]', 'Opera Mini/[VER]', 'Version/[VER]', 'Opera [VER]'],
- 'Netscape' => 'Netscape/[VER]',
- 'Mozilla' => 'rv:[VER]',
- 'IE' => ['IEMobile/[VER];', 'IEMobile [VER]', 'MSIE [VER];', 'rv:[VER]'],
- 'Edge' => 'Edge/[VER]',
- 'Vivaldi' => 'Vivaldi/[VER]',
- ];
-
- /**
- * @var CrawlerDetect
- */
- protected static $crawlerDetect;
-
- /**
- * Get all detection rules. These rules include the additional
- * platforms and browsers and utilities.
- * @return array
- */
- public static function getDetectionRulesExtended()
- {
- static $rules;
-
- if (!$rules) {
- $rules = static::mergeRules(
- static::$desktopDevices, // NEW
- static::$phoneDevices,
- static::$tabletDevices,
- static::$operatingSystems,
- static::$additionalOperatingSystems, // NEW
- static::$browsers,
- static::$additionalBrowsers, // NEW
- static::$utilities
- );
- }
-
- return $rules;
- }
-
- public function getRules()
- {
- if ($this->detectionType === static::DETECTION_TYPE_EXTENDED) {
- return static::getDetectionRulesExtended();
- }
-
- return static::getMobileDetectionRules();
- }
-
- /**
- * @return CrawlerDetect
- */
- public function getCrawlerDetect()
- {
- if (static::$crawlerDetect === null) {
- static::$crawlerDetect = new CrawlerDetect();
- }
-
- return static::$crawlerDetect;
- }
-
- public static function getBrowsers()
- {
- return static::mergeRules(
- static::$additionalBrowsers,
- static::$browsers
- );
- }
-
- public static function getOperatingSystems()
- {
- return static::mergeRules(
- static::$operatingSystems,
- static::$additionalOperatingSystems
- );
- }
-
- public static function getPlatforms()
- {
- return static::mergeRules(
- static::$operatingSystems,
- static::$additionalOperatingSystems
- );
- }
-
- public static function getDesktopDevices()
- {
- return static::$desktopDevices;
- }
-
- public static function getProperties()
- {
- return static::mergeRules(
- static::$additionalProperties,
- static::$properties
- );
- }
-
- /**
- * Get accept languages.
- * @param string $acceptLanguage
- * @return array
- */
- public function languages($acceptLanguage = null)
- {
- if ($acceptLanguage === null) {
- $acceptLanguage = $this->getHttpHeader('HTTP_ACCEPT_LANGUAGE');
- }
-
- if (!$acceptLanguage) {
- return [];
- }
-
- $languages = [];
-
- // Parse accept language string.
- foreach (explode(',', $acceptLanguage) as $piece) {
- $parts = explode(';', $piece);
- $language = strtolower($parts[0]);
- $priority = empty($parts[1]) ? 1. : floatval(str_replace('q=', '', $parts[1]));
-
- $languages[$language] = $priority;
- }
-
- // Sort languages by priority.
- arsort($languages);
-
- return array_keys($languages);
- }
-
- /**
- * Match a detection rule and return the matched key.
- * @param array $rules
- * @param string|null $userAgent
- * @return string
- */
- protected function findDetectionRulesAgainstUA(array $rules, $userAgent = null)
- {
- // Loop given rules
- foreach ($rules as $key => $regex) {
- if (empty($regex)) {
- continue;
- }
-
- // Check match
- if ($this->match($regex, $userAgent)) {
- return $key ?: reset($this->matchesArray);
- }
- }
-
- return false;
- }
-
- /**
- * Get the browser name.
- * @param string|null $userAgent
- * @return string
- */
- public function browser($userAgent = null)
- {
- return $this->findDetectionRulesAgainstUA(static::getBrowsers(), $userAgent);
- }
-
- /**
- * Get the platform name.
- * @param string|null $userAgent
- * @return string
- */
- public function platform($userAgent = null)
- {
- return $this->findDetectionRulesAgainstUA(static::getPlatforms(), $userAgent);
- }
-
- /**
- * Get the device name.
- * @param string|null $userAgent
- * @return string
- */
- public function device($userAgent = null)
- {
- $rules = static::mergeRules(
- static::getDesktopDevices(),
- static::getPhoneDevices(),
- static::getTabletDevices(),
- static::getUtilities()
- );
-
- return $this->findDetectionRulesAgainstUA($rules, $userAgent);
- }
-
- /**
- * Check if the device is a desktop computer.
- * @param string|null $userAgent deprecated
- * @param array $httpHeaders deprecated
- * @return bool
- */
- public function isDesktop($userAgent = null, $httpHeaders = null)
- {
- return !$this->isMobile($userAgent, $httpHeaders) && !$this->isTablet($userAgent, $httpHeaders) && !$this->isRobot($userAgent);
- }
-
- /**
- * Check if the device is a mobile phone.
- * @param string|null $userAgent deprecated
- * @param array $httpHeaders deprecated
- * @return bool
- */
- public function isPhone($userAgent = null, $httpHeaders = null)
- {
- return $this->isMobile($userAgent, $httpHeaders) && !$this->isTablet($userAgent, $httpHeaders);
- }
-
- /**
- * Get the robot name.
- * @param string|null $userAgent
- * @return string|bool
- */
- public function robot($userAgent = null)
- {
- if ($this->getCrawlerDetect()->isCrawler($userAgent ?: $this->userAgent)) {
- return ucfirst($this->getCrawlerDetect()->getMatches());
- }
-
- return false;
- }
-
- /**
- * Check if device is a robot.
- * @param string|null $userAgent
- * @return bool
- */
- public function isRobot($userAgent = null)
- {
- return $this->getCrawlerDetect()->isCrawler($userAgent ?: $this->userAgent);
- }
-
- public function version($propertyName, $type = self::VERSION_TYPE_STRING)
- {
- if (empty($propertyName)) {
- return false;
- }
-
- // set the $type to the default if we don't recognize the type
- if ($type !== self::VERSION_TYPE_STRING && $type !== self::VERSION_TYPE_FLOAT) {
- $type = self::VERSION_TYPE_STRING;
- }
-
- $properties = self::getProperties();
-
- // Check if the property exists in the properties array.
- if (true === isset($properties[$propertyName])) {
-
- // Prepare the pattern to be matched.
- // Make sure we always deal with an array (string is converted).
- $properties[$propertyName] = (array) $properties[$propertyName];
-
- foreach ($properties[$propertyName] as $propertyMatchString) {
- if (is_array($propertyMatchString)) {
- $propertyMatchString = implode("|", $propertyMatchString);
- }
-
- $propertyPattern = str_replace('[VER]', self::VER, $propertyMatchString);
-
- // Identify and extract the version.
- preg_match(sprintf('#%s#is', $propertyPattern), $this->userAgent, $match);
-
- if (false === empty($match[1])) {
- $version = ($type === self::VERSION_TYPE_FLOAT ? $this->prepareVersionNo($match[1]) : $match[1]);
-
- return $version;
- }
- }
- }
-
- return false;
- }
-
- /**
- * Merge multiple rules into one array.
- * @param array $all
- * @return array
- */
- protected static function mergeRules(...$all)
- {
- $merged = [];
-
- foreach ($all as $rules) {
- foreach ($rules as $key => $value) {
- if (empty($merged[$key])) {
- $merged[$key] = $value;
- } elseif (is_array($merged[$key])) {
- $merged[$key][] = $value;
- } else {
- $merged[$key] .= '|' . $value;
- }
- }
- }
-
- return $merged;
- }
-
- /**
- * @inheritdoc
- */
- public function __call($name, $arguments)
- {
- // Make sure the name starts with 'is', otherwise
- if (strpos($name, 'is') !== 0) {
- throw new BadMethodCallException("No such method exists: $name");
- }
-
- $this->setDetectionType(self::DETECTION_TYPE_EXTENDED);
-
- $key = substr($name, 2);
-
- return $this->matchUAAgainstKey($key);
- }
-}
diff --git a/vendor/jenssegers/agent/src/AgentServiceProvider.php b/vendor/jenssegers/agent/src/AgentServiceProvider.php
deleted file mode 100644
index b3334bb3e..000000000
--- a/vendor/jenssegers/agent/src/AgentServiceProvider.php
+++ /dev/null
@@ -1,37 +0,0 @@
-app->singleton('agent', function ($app) {
- return new Agent($app['request']->server());
- });
-
- $this->app->alias('agent', Agent::class);
- }
-
- /**
- * Get the services provided by the provider.
- *
- * @return array
- */
- public function provides()
- {
- return ['agent', Agent::class];
- }
-}
diff --git a/vendor/jenssegers/agent/src/Facades/Agent.php b/vendor/jenssegers/agent/src/Facades/Agent.php
deleted file mode 100644
index 863a227fc..000000000
--- a/vendor/jenssegers/agent/src/Facades/Agent.php
+++ /dev/null
@@ -1,18 +0,0 @@
- Serban Ghita, Nick Ilyin and contributors.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Developer’s Certificate of Origin 1.1
-
-By making a contribution to this project, I certify that:
-
-(a) The contribution was created in whole or in part by me and I
- have the right to submit it under the open source license
- indicated in the file; or
-
-(b) The contribution is based upon previous work that, to the best
- of my knowledge, is covered under an appropriate open source
- license and I have the right under that license to submit that
- work with modifications, whether created in whole or in part
- by me, under the same open source license (unless I am
- permitted to submit under a different license), as indicated
- in the file; or
-
-(c) The contribution was provided directly to me by some other
- person who certified (a), (b) or (c) and I have not modified
- it.
-
-(d) I understand and agree that this project and the contribution
- are public and that a record of the contribution (including all
- personal information I submit with it, including my sign-off) is
- maintained indefinitely and may be redistributed consistent with
- this project or the open source license(s) involved.
diff --git a/vendor/mobiledetect/mobiledetectlib/Mobile_Detect.json b/vendor/mobiledetect/mobiledetectlib/Mobile_Detect.json
deleted file mode 100644
index 2b807e115..000000000
--- a/vendor/mobiledetect/mobiledetectlib/Mobile_Detect.json
+++ /dev/null
@@ -1 +0,0 @@
-{"version":"2.8.34","headerMatch":{"HTTP_ACCEPT":{"matches":["application\/x-obml2d","application\/vnd.rim.html","text\/vnd.wap.wml","application\/vnd.wap.xhtml+xml"]},"HTTP_X_WAP_PROFILE":null,"HTTP_X_WAP_CLIENTID":null,"HTTP_WAP_CONNECTION":null,"HTTP_PROFILE":null,"HTTP_X_OPERAMINI_PHONE_UA":null,"HTTP_X_NOKIA_GATEWAY_ID":null,"HTTP_X_ORANGE_ID":null,"HTTP_X_VODAFONE_3GPDPCONTEXT":null,"HTTP_X_HUAWEI_USERID":null,"HTTP_UA_OS":null,"HTTP_X_MOBILE_GATEWAY":null,"HTTP_X_ATT_DEVICEID":null,"HTTP_UA_CPU":{"matches":["ARM"]}},"uaHttpHeaders":["HTTP_USER_AGENT","HTTP_X_OPERAMINI_PHONE_UA","HTTP_X_DEVICE_USER_AGENT","HTTP_X_ORIGINAL_USER_AGENT","HTTP_X_SKYFIRE_PHONE","HTTP_X_BOLT_PHONE_UA","HTTP_DEVICE_STOCK_UA","HTTP_X_UCBROWSER_DEVICE_UA"],"uaMatch":{"phones":{"iPhone":"\\biPhone\\b|\\biPod\\b","BlackBerry":"BlackBerry|\\bBB10\\b|rim[0-9]+|\\b(BBA100|BBB100|BBD100|BBE100|BBF100|STH100)\\b-[0-9]+","HTC":"HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m|Android [0-9.]+; Pixel","Nexus":"Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6","Dell":"Dell[;]? (Streak|Aero|Venue|Venue Pro|Flash|Smoke|Mini 3iX)|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b","Motorola":"Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b|XT1068|XT1092|XT1052","Samsung":"\\bSamsung\\b|SM-G950F|SM-G955F|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|SM-N910C|SM-A310F|GT-I9190|SM-J500FN|SM-G903F|SM-J330F","LG":"\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323|M257)|LM-G710","Sony":"SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533","Asus":"Asus.*Galaxy|PadFone.*Mobile","NokiaLumia":"Lumia [0-9]{3,4}","Micromax":"Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b","Palm":"PalmSource|Palm","Vertu":"Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature","Pantech":"PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790","Fly":"IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250","Wiko":"KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM","iMobile":"i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)","SimValley":"\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b","Wolfgang":"AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q","Alcatel":"Alcatel","Nintendo":"Nintendo (3DS|Switch)","Amoi":"Amoi","INQ":"INQ","OnePlus":"ONEPLUS","GenericPhone":"Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser"},"tablets":{"iPad":"iPad|iPad.*Mobile","NexusTablet":"Android.*Nexus[\\s]+(7|9|10)","GoogleTablet":"Android.*Pixel C","SamsungTablet":"SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-T116BU|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|SM-T719|SM-T813|SM-T819|SM-T580|SM-T355Y?|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587|SM-P350|SM-P555M|SM-P355M|SM-T113NU|SM-T815Y|SM-T585|SM-T285|SM-T825|SM-W708|SM-T835|SM-T830|SM-T837V|SM-T720|SM-T510|SM-T387V","Kindle":"Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\\b|Android.*Silk\/[0-9.]+ like Chrome\/[0-9.]+ (?!Mobile)","SurfaceTablet":"Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)","HPTablet":"HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10","AsusTablet":"^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z|\\bP027\\b|\\bP024\\b|\\bP00C\\b","BlackBerryTablet":"PlayBook|RIM Tablet","HTCtablet":"HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410","MotorolaTablet":"xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617","NookTablet":"Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2","AcerTablet":"Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b|\\bA3-A20\\b|\\bA3-A30","ToshibaTablet":"Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO","LGTablet":"\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b","FujitsuTablet":"Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b","PrestigioTablet":"PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002","LenovoTablet":"Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-850M|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)|TB-X103F|TB-X304X|TB-X304F|TB-X304L|TB-X505F|TB-X505L|TB-X505X|TB-X605F|TB-X605L|TB-8703F|TB-8703X|TB-8703N|TB-8704N|TB-8704F|TB-8704X|TB-8704V|TB-7304F|TB-7304I|TB-7304X|Tab2A7-10F|Tab2A7-20F|TB2-X30L|YT3-X50L|YT3-X50F|YT3-X50M|YT-X705F|YT-X703F|YT-X703L|YT-X705L|YT-X705X|TB2-X30F|TB2-X30L|TB2-X30M|A2107A-F|A2107A-H|TB3-730F|TB3-730M|TB3-730X|TB-7504F|TB-7504X","DellTablet":"Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7","YarvikTablet":"Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b","MedionTablet":"Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB","ArnovaTablet":"97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2","IntensoTablet":"INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004","IRUTablet":"M702pro","MegafonTablet":"MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b","EbodaTablet":"E-Boda (Supreme|Impresspeed|Izzycomm|Essential)","AllViewTablet":"Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)","ArchosTablet":"\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b","AinolTablet":"NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark","NokiaLumiaTablet":"Lumia 2520","SonyTablet":"Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP641|SGP612|SOT31|SGP771|SGP611|SGP612|SGP712","PhilipsTablet":"\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b","CubeTablet":"Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT","CobyTablet":"MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010","MIDTablet":"M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10","MSITablet":"MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b","SMiTTablet":"Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)","RockChipTablet":"Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A","FlyTablet":"IQ310|Fly Vision","bqTablet":"Android.*(bq)?.*\\b(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris ([E|M]10|M8))\\b|Maxwell.*Lite|Maxwell.*Plus","HuaweiTablet":"MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim|M2-A01L|BAH-L09|BAH-W09|AGS-L09|CMR-AL19","NecTablet":"\\bN-06D|\\bN-08D","PantechTablet":"Pantech.*P4100","BronchoTablet":"Broncho.*(N701|N708|N802|a710)","VersusTablet":"TOUCHPAD.*[78910]|\\bTOUCHTAB\\b","ZyncTablet":"z1000|Z99 2G|z930|z990|z909|Z919|z900","PositivoTablet":"TB07STA|TB10STA|TB07FTA|TB10FTA","NabiTablet":"Android.*\\bNabi","KoboTablet":"Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build","DanewTablet":"DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b","TexetTablet":"NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE","PlaystationTablet":"Playstation.*(Portable|Vita)","TrekstorTablet":"ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab","PyleAudioTablet":"\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b","AdvanTablet":"Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ","DanyTechTablet":"Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1","GalapadTablet":"Android.*\\bG1\\b(?!\\))","MicromaxTablet":"Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b","KarbonnTablet":"Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b","AllFineTablet":"Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide","PROSCANTablet":"\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b","YONESTablet":"BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026","ChangJiaTablet":"TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503","GUTablet":"TX-A1301|TX-M9002|Q702|kf026","PointOfViewTablet":"TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10","OvermaxTablet":"OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)|Qualcore 1027","HCLTablet":"HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync","DPSTablet":"DPS Dream 9|DPS Dual 7","VistureTablet":"V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10","CrestaTablet":"CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989","MediatekTablet":"\\bMT8125|MT8389|MT8135|MT8377\\b","ConcordeTablet":"Concorde([ ]+)?Tab|ConCorde ReadMan","GoCleverTablet":"GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042","ModecomTablet":"FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003","VoninoTablet":"\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b","ECSTablet":"V07OT2|TM105A|S10OT1|TR10CS1","StorexTablet":"eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab","VodafoneTablet":"SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497|VFD 1400","EssentielBTablet":"Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2","RossMoorTablet":"RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711","iMobileTablet":"i-mobile i-note","TolinoTablet":"tolino tab [0-9.]+|tolino shine","AudioSonicTablet":"\\bC-22Q|T7-QC|T-17B|T-17P\\b","AMPETablet":"Android.* A78 ","SkkTablet":"Android.* (SKYPAD|PHOENIX|CYCLOPS)","TecnoTablet":"TECNO P9|TECNO DP8D","JXDTablet":"Android.* \\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b","iJoyTablet":"Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)","FX2Tablet":"FX2 PAD7|FX2 PAD10","XoroTablet":"KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151","ViewsonicTablet":"ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a","VerizonTablet":"QTAQZ3|QTAIR7|QTAQTZ3|QTASUN1|QTASUN2|QTAXIA1","OdysTablet":"LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10","CaptivaTablet":"CAPTIVA PAD","IconbitTablet":"NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S","TeclastTablet":"T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi","OndaTablet":"\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+|V10 \\b4G\\b","JaytechTablet":"TPC-PA762","BlaupunktTablet":"Endeavour 800NG|Endeavour 1010","DigmaTablet":"\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b","EvolioTablet":"ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b","LavaTablet":"QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b","AocTablet":"MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712","MpmanTablet":"MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\bMPG7\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010","CelkonTablet":"CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b","WolderTablet":"miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b","MediacomTablet":"M-MPI10C3G|M-SP10EG|M-SP10EGP|M-SP10HXAH|M-SP7HXAH|M-SP10HXBH|M-SP8HXAH|M-SP8MXA","MiTablet":"\\bMI PAD\\b|\\bHM NOTE 1W\\b","NibiruTablet":"Nibiru M1|Nibiru Jupiter One","NexoTablet":"NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI","LeaderTablet":"TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100","UbislateTablet":"UbiSlate[\\s]?7C","PocketBookTablet":"Pocketbook","KocasoTablet":"\\b(TB-1207)\\b","HisenseTablet":"\\b(F5281|E2371)\\b","Hudl":"Hudl HT7S3|Hudl 2","TelstraTablet":"T-Hub2","GenericTablet":"Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bTP750\\b|\\bQTAQZ3\\b|WVT101|TM1088|KT107"},"browsers":{"Chrome":"\\bCrMo\\b|CriOS|Android.*Chrome\/[.0-9]* (Mobile)?","Dolfin":"\\bDolfin\\b","Opera":"Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\/[0-9.]+$|Coast\/[0-9.]+","Skyfire":"Skyfire","Edge":"Mobile Safari\/[.0-9]* Edge","IE":"IEMobile|MSIEMobile","Firefox":"fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS","Bolt":"bolt","TeaShark":"teashark","Blazer":"Blazer","Safari":"Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari","WeChat":"\\bMicroMessenger\\b","UCBrowser":"UC.*Browser|UCWEB","baiduboxapp":"baiduboxapp","baidubrowser":"baidubrowser","DiigoBrowser":"DiigoBrowser","Mercury":"\\bMercury\\b","ObigoBrowser":"Obigo","NetFront":"NF-Browser","GenericBrowser":"NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger","PaleMoon":"Android.*PaleMoon|Mobile.*PaleMoon"},"os":{"AndroidOS":"Android","BlackBerryOS":"blackberry|\\bBB10\\b|rim tablet os","PalmOS":"PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino","SymbianOS":"Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b","WindowsMobileOS":"Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Windows Mobile|Windows Phone [0-9.]+|WCE;","WindowsPhoneOS":"Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;","iOS":"\\biPhone.*Mobile|\\biPod|\\biPad|AppleCoreMedia","iPadOS":"CPU OS 13","MeeGoOS":"MeeGo","MaemoOS":"Maemo","JavaOS":"J2ME\/|\\bMIDP\\b|\\bCLDC\\b","webOS":"webOS|hpwOS","badaOS":"\\bBada\\b","BREWOS":"BREW"},"utilities":{"Bot":"Googlebot|facebookexternalhit|Google-AMPHTML|s~amp-validator|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|YandexMobileBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom|contentkingapp","MobileBot":"Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker\/M1A1-R2D2","DesktopMode":"WPDesktop","TV":"SonyDTV|HbbTV","WebKit":"(webkit)[ \/]([\\w.]+)","Console":"\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|Nintendo Switch|PLAYSTATION|Xbox)\\b","Watch":"SM-V700"}}}
\ No newline at end of file
diff --git a/vendor/mobiledetect/mobiledetectlib/Mobile_Detect.php b/vendor/mobiledetect/mobiledetectlib/Mobile_Detect.php
deleted file mode 100644
index b105eb717..000000000
--- a/vendor/mobiledetect/mobiledetectlib/Mobile_Detect.php
+++ /dev/null
@@ -1,1477 +0,0 @@
-
- * @author Nick Ilyin
- * Original author: Victor Stanciu
- *
- * @version 2.8.34
- */
-class Mobile_Detect
-{
- /**
- * Mobile detection type.
- *
- * @deprecated since version 2.6.9
- */
- const DETECTION_TYPE_MOBILE = 'mobile';
-
- /**
- * Extended detection type.
- *
- * @deprecated since version 2.6.9
- */
- const DETECTION_TYPE_EXTENDED = 'extended';
-
- /**
- * A frequently used regular expression to extract version #s.
- *
- * @deprecated since version 2.6.9
- */
- const VER = '([\w._\+]+)';
-
- /**
- * Top-level device.
- */
- const MOBILE_GRADE_A = 'A';
-
- /**
- * Mid-level device.
- */
- const MOBILE_GRADE_B = 'B';
-
- /**
- * Low-level device.
- */
- const MOBILE_GRADE_C = 'C';
-
- /**
- * Stores the version number of the current release.
- */
- const VERSION = '2.8.34';
-
- /**
- * A type for the version() method indicating a string return value.
- */
- const VERSION_TYPE_STRING = 'text';
-
- /**
- * A type for the version() method indicating a float return value.
- */
- const VERSION_TYPE_FLOAT = 'float';
-
- /**
- * A cache for resolved matches
- * @var array
- */
- protected $cache = array();
-
- /**
- * The User-Agent HTTP header is stored in here.
- * @var string
- */
- protected $userAgent = null;
-
- /**
- * HTTP headers in the PHP-flavor. So HTTP_USER_AGENT and SERVER_SOFTWARE.
- * @var array
- */
- protected $httpHeaders = array();
-
- /**
- * CloudFront headers. E.g. CloudFront-Is-Desktop-Viewer, CloudFront-Is-Mobile-Viewer & CloudFront-Is-Tablet-Viewer.
- * @var array
- */
- protected $cloudfrontHeaders = array();
-
- /**
- * The matching Regex.
- * This is good for debug.
- * @var string
- */
- protected $matchingRegex = null;
-
- /**
- * The matches extracted from the regex expression.
- * This is good for debug.
- *
- * @var string
- */
- protected $matchesArray = null;
-
- /**
- * The detection type, using self::DETECTION_TYPE_MOBILE or self::DETECTION_TYPE_EXTENDED.
- *
- * @deprecated since version 2.6.9
- *
- * @var string
- */
- protected $detectionType = self::DETECTION_TYPE_MOBILE;
-
- /**
- * HTTP headers that trigger the 'isMobile' detection
- * to be true.
- *
- * @var array
- */
- protected static $mobileHeaders = array(
-
- 'HTTP_ACCEPT' => array('matches' => array(
- // Opera Mini; @reference: http://dev.opera.com/articles/view/opera-binary-markup-language/
- 'application/x-obml2d',
- // BlackBerry devices.
- 'application/vnd.rim.html',
- 'text/vnd.wap.wml',
- 'application/vnd.wap.xhtml+xml'
- )),
- 'HTTP_X_WAP_PROFILE' => null,
- 'HTTP_X_WAP_CLIENTID' => null,
- 'HTTP_WAP_CONNECTION' => null,
- 'HTTP_PROFILE' => null,
- // Reported by Opera on Nokia devices (eg. C3).
- 'HTTP_X_OPERAMINI_PHONE_UA' => null,
- 'HTTP_X_NOKIA_GATEWAY_ID' => null,
- 'HTTP_X_ORANGE_ID' => null,
- 'HTTP_X_VODAFONE_3GPDPCONTEXT' => null,
- 'HTTP_X_HUAWEI_USERID' => null,
- // Reported by Windows Smartphones.
- 'HTTP_UA_OS' => null,
- // Reported by Verizon, Vodafone proxy system.
- 'HTTP_X_MOBILE_GATEWAY' => null,
- // Seen this on HTC Sensation. SensationXE_Beats_Z715e.
- 'HTTP_X_ATT_DEVICEID' => null,
- // Seen this on a HTC.
- 'HTTP_UA_CPU' => array('matches' => array('ARM')),
- );
-
- /**
- * List of mobile devices (phones).
- *
- * @var array
- */
- protected static $phoneDevices = array(
- 'iPhone' => '\biPhone\b|\biPod\b', // |\biTunes
- 'BlackBerry' => 'BlackBerry|\bBB10\b|rim[0-9]+|\b(BBA100|BBB100|BBD100|BBE100|BBF100|STH100)\b-[0-9]+',
- 'HTC' => 'HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\bEVO\b|T-Mobile G1|Z520m|Android [0-9.]+; Pixel',
- 'Nexus' => 'Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 6',
- // @todo: Is 'Dell Streak' a tablet or a phone? ;)
- 'Dell' => 'Dell[;]? (Streak|Aero|Venue|Venue Pro|Flash|Smoke|Mini 3iX)|XCD28|XCD35|\b001DL\b|\b101DL\b|\bGS01\b',
- 'Motorola' => 'Motorola|DROIDX|DROID BIONIC|\bDroid\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\bMoto E\b|XT1068|XT1092|XT1052',
- 'Samsung' => '\bSamsung\b|SM-G950F|SM-G955F|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|SM-N910C|SM-A310F|GT-I9190|SM-J500FN|SM-G903F|SM-J330F',
- 'LG' => '\bLG\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323|M257)|LM-G710',
- 'Sony' => 'SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533',
- 'Asus' => 'Asus.*Galaxy|PadFone.*Mobile',
- 'NokiaLumia' => 'Lumia [0-9]{3,4}',
- // http://www.micromaxinfo.com/mobiles/smartphones
- // Added because the codes might conflict with Acer Tablets.
- 'Micromax' => 'Micromax.*\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\b',
- // @todo Complete the regex.
- 'Palm' => 'PalmSource|Palm', // avantgo|blazer|elaine|hiptop|plucker|xiino ;
- 'Vertu' => 'Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature', // Just for fun ;)
- // http://www.pantech.co.kr/en/prod/prodList.do?gbrand=VEGA (PANTECH)
- // Most of the VEGA devices are legacy. PANTECH seem to be newer devices based on Android.
- 'Pantech' => 'PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790',
- // http://www.fly-phone.com/devices/smartphones/ ; Included only smartphones.
- 'Fly' => 'IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250',
- // http://fr.wikomobile.com
- 'Wiko' => 'KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM',
- 'iMobile' => 'i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)',
- // Added simvalley mobile just for fun. They have some interesting devices.
- // http://www.simvalley.fr/telephonie---gps-_22_telephonie-mobile_telephones_.html
- 'SimValley' => '\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\b',
- // Wolfgang - a brand that is sold by Aldi supermarkets.
- // http://www.wolfgangmobile.com/
- 'Wolfgang' => 'AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q',
- 'Alcatel' => 'Alcatel',
- 'Nintendo' => 'Nintendo (3DS|Switch)',
- // http://en.wikipedia.org/wiki/Amoi
- 'Amoi' => 'Amoi',
- // http://en.wikipedia.org/wiki/INQ
- 'INQ' => 'INQ',
- 'OnePlus' => 'ONEPLUS',
- // @Tapatalk is a mobile app; http://support.tapatalk.com/threads/smf-2-0-2-os-and-browser-detection-plugin-and-tapatalk.15565/#post-79039
- 'GenericPhone' => 'Tapatalk|PDA;|SAGEM|\bmmp\b|pocket|\bpsp\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\bwap\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser',
- );
-
- /**
- * List of tablet devices.
- *
- * @var array
- */
- protected static $tabletDevices = array(
- // @todo: check for mobile friendly emails topic.
- 'iPad' => 'iPad|iPad.*Mobile',
- // Removed |^.*Android.*Nexus(?!(?:Mobile).)*$
- // @see #442
- // @todo Merge NexusTablet into GoogleTablet.
- 'NexusTablet' => 'Android.*Nexus[\s]+(7|9|10)',
- // https://en.wikipedia.org/wiki/Pixel_C
- 'GoogleTablet' => 'Android.*Pixel C',
- 'SamsungTablet' => 'SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-T116BU|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|SM-T719|SM-T813|SM-T819|SM-T580|SM-T355Y?|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587|SM-P350|SM-P555M|SM-P355M|SM-T113NU|SM-T815Y|SM-T585|SM-T285|SM-T825|SM-W708|SM-T835|SM-T830|SM-T837V|SM-T720|SM-T510|SM-T387V', // SCH-P709|SCH-P729|SM-T2558|GT-I9205 - Samsung Mega - treat them like a regular phone.
- // http://docs.aws.amazon.com/silk/latest/developerguide/user-agent.html
- 'Kindle' => 'Kindle|Silk.*Accelerated|Android.*\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\b|Android.*Silk/[0-9.]+ like Chrome/[0-9.]+ (?!Mobile)',
- // Only the Surface tablets with Windows RT are considered mobile.
- // http://msdn.microsoft.com/en-us/library/ie/hh920767(v=vs.85).aspx
- 'SurfaceTablet' => 'Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)',
- // http://shopping1.hp.com/is-bin/INTERSHOP.enfinity/WFS/WW-USSMBPublicStore-Site/en_US/-/USD/ViewStandardCatalog-Browse?CatalogCategoryID=JfIQ7EN5lqMAAAEyDcJUDwMT
- 'HPTablet' => 'HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10',
- // Watch out for PadFone, see #132.
- // http://www.asus.com/de/Tablets_Mobile/Memo_Pad_Products/
- 'AsusTablet' => '^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\bK00F\b|\bK00C\b|\bK00E\b|\bK00L\b|TX201LA|ME176C|ME102A|\bM80TA\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\bME70C\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z|\bP027\b|\bP024\b|\bP00C\b',
- 'BlackBerryTablet' => 'PlayBook|RIM Tablet',
- 'HTCtablet' => 'HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410',
- 'MotorolaTablet' => 'xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617',
- 'NookTablet' => 'Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2',
- // http://www.acer.ro/ac/ro/RO/content/drivers
- // http://www.packardbell.co.uk/pb/en/GB/content/download (Packard Bell is part of Acer)
- // http://us.acer.com/ac/en/US/content/group/tablets
- // http://www.acer.de/ac/de/DE/content/models/tablets/
- // Can conflict with Micromax and Motorola phones codes.
- 'AcerTablet' => 'Android.*; \b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\b|W3-810|\bA3-A10\b|\bA3-A11\b|\bA3-A20\b|\bA3-A30',
- // http://eu.computers.toshiba-europe.com/innovation/family/Tablets/1098744/banner_id/tablet_footerlink/
- // http://us.toshiba.com/tablets/tablet-finder
- // http://www.toshiba.co.jp/regza/tablet/
- 'ToshibaTablet' => 'Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO',
- // http://www.nttdocomo.co.jp/english/service/developer/smart_phone/technical_info/spec/index.html
- // http://www.lg.com/us/tablets
- 'LGTablet' => '\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\b',
- 'FujitsuTablet' => 'Android.*\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\b',
- // Prestigio Tablets http://www.prestigio.com/support
- 'PrestigioTablet' => 'PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002',
- // http://support.lenovo.com/en_GB/downloads/default.page?#
- 'LenovoTablet' => 'Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-850M|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)|TB-X103F|TB-X304X|TB-X304F|TB-X304L|TB-X505F|TB-X505L|TB-X505X|TB-X605F|TB-X605L|TB-8703F|TB-8703X|TB-8703N|TB-8704N|TB-8704F|TB-8704X|TB-8704V|TB-7304F|TB-7304I|TB-7304X|Tab2A7-10F|Tab2A7-20F|TB2-X30L|YT3-X50L|YT3-X50F|YT3-X50M|YT-X705F|YT-X703F|YT-X703L|YT-X705L|YT-X705X|TB2-X30F|TB2-X30L|TB2-X30M|A2107A-F|A2107A-H|TB3-730F|TB3-730M|TB3-730X|TB-7504F|TB-7504X',
- // http://www.dell.com/support/home/us/en/04/Products/tab_mob/tablets
- 'DellTablet' => 'Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7',
- // http://www.yarvik.com/en/matrix/tablets/
- 'YarvikTablet' => 'Android.*\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\b',
- 'MedionTablet' => 'Android.*\bOYO\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB',
- 'ArnovaTablet' => '97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2',
- // http://www.intenso.de/kategorie_en.php?kategorie=33
- // @todo: http://www.nbhkdz.com/read/b8e64202f92a2df129126bff.html - investigate
- 'IntensoTablet' => 'INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004',
- // IRU.ru Tablets http://www.iru.ru/catalog/soho/planetable/
- 'IRUTablet' => 'M702pro',
- 'MegafonTablet' => 'MegaFon V9|\bZTE V9\b|Android.*\bMT7A\b',
- // http://www.e-boda.ro/tablete-pc.html
- 'EbodaTablet' => 'E-Boda (Supreme|Impresspeed|Izzycomm|Essential)',
- // http://www.allview.ro/produse/droseries/lista-tablete-pc/
- 'AllViewTablet' => 'Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)',
- // http://wiki.archosfans.com/index.php?title=Main_Page
- // @note Rewrite the regex format after we add more UAs.
- 'ArchosTablet' => '\b(101G9|80G9|A101IT)\b|Qilive 97R|Archos5|\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\b',
- // http://www.ainol.com/plugin.php?identifier=ainol&module=product
- 'AinolTablet' => 'NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark',
- 'NokiaLumiaTablet' => 'Lumia 2520',
- // @todo: inspect http://esupport.sony.com/US/p/select-system.pl?DIRECTOR=DRIVER
- // Readers http://www.atsuhiro-me.net/ebook/sony-reader/sony-reader-web-browser
- // http://www.sony.jp/support/tablet/
- 'SonyTablet' => 'Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP641|SGP612|SOT31|SGP771|SGP611|SGP612|SGP712',
- // http://www.support.philips.com/support/catalog/worldproducts.jsp?userLanguage=en&userCountry=cn&categoryid=3G_LTE_TABLET_SU_CN_CARE&title=3G%20tablets%20/%20LTE%20range&_dyncharset=UTF-8
- 'PhilipsTablet' => '\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\b',
- // db + http://www.cube-tablet.com/buy-products.html
- 'CubeTablet' => 'Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT',
- // http://www.cobyusa.com/?p=pcat&pcat_id=3001
- 'CobyTablet' => 'MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010',
- // http://www.match.net.cn/products.asp
- 'MIDTablet' => 'M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10',
- // http://www.msi.com/support
- // @todo Research the Windows Tablets.
- 'MSITablet' => 'MSI \b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\b',
- // @todo http://www.kyoceramobile.com/support/drivers/
- // 'KyoceraTablet' => null,
- // @todo http://intexuae.com/index.php/category/mobile-devices/tablets-products/
- // 'IntextTablet' => null,
- // http://pdadb.net/index.php?m=pdalist&list=SMiT (NoName Chinese Tablets)
- // http://www.imp3.net/14/show.php?itemid=20454
- 'SMiTTablet' => 'Android.*(\bMID\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)',
- // http://www.rock-chips.com/index.php?do=prod&pid=2
- 'RockChipTablet' => 'Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A',
- // http://www.fly-phone.com/devices/tablets/ ; http://www.fly-phone.com/service/
- 'FlyTablet' => 'IQ310|Fly Vision',
- // http://www.bqreaders.com/gb/tablets-prices-sale.html
- 'bqTablet' => 'Android.*(bq)?.*\b(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris ([E|M]10|M8))\b|Maxwell.*Lite|Maxwell.*Plus',
- // http://www.huaweidevice.com/worldwide/productFamily.do?method=index&directoryId=5011&treeId=3290
- // http://www.huaweidevice.com/worldwide/downloadCenter.do?method=index&directoryId=3372&treeId=0&tb=1&type=software (including legacy tablets)
- 'HuaweiTablet' => 'MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim|M2-A01L|BAH-L09|BAH-W09|AGS-L09|CMR-AL19',
- // Nec or Medias Tab
- 'NecTablet' => '\bN-06D|\bN-08D',
- // Pantech Tablets: http://www.pantechusa.com/phones/
- 'PantechTablet' => 'Pantech.*P4100',
- // Broncho Tablets: http://www.broncho.cn/ (hard to find)
- 'BronchoTablet' => 'Broncho.*(N701|N708|N802|a710)',
- // http://versusuk.com/support.html
- 'VersusTablet' => 'TOUCHPAD.*[78910]|\bTOUCHTAB\b',
- // http://www.zync.in/index.php/our-products/tablet-phablets
- 'ZyncTablet' => 'z1000|Z99 2G|z930|z990|z909|Z919|z900', // Removed "z999" because of https://github.com/serbanghita/Mobile-Detect/issues/717
- // http://www.positivoinformatica.com.br/www/pessoal/tablet-ypy/
- 'PositivoTablet' => 'TB07STA|TB10STA|TB07FTA|TB10FTA',
- // https://www.nabitablet.com/
- 'NabiTablet' => 'Android.*\bNabi',
- 'KoboTablet' => 'Kobo Touch|\bK080\b|\bVox\b Build|\bArc\b Build',
- // French Danew Tablets http://www.danew.com/produits-tablette.php
- 'DanewTablet' => 'DSlide.*\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\b',
- // Texet Tablets and Readers http://www.texet.ru/tablet/
- 'TexetTablet' => 'NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE',
- // Avoid detecting 'PLAYSTATION 3' as mobile.
- 'PlaystationTablet' => 'Playstation.*(Portable|Vita)',
- // http://www.trekstor.de/surftabs.html
- 'TrekstorTablet' => 'ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab',
- // http://www.pyleaudio.com/Products.aspx?%2fproducts%2fPersonal-Electronics%2fTablets
- 'PyleAudioTablet' => '\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\b',
- // http://www.advandigital.com/index.php?link=content-product&jns=JP001
- // because of the short codenames we have to include whitespaces to reduce the possible conflicts.
- 'AdvanTablet' => 'Android.* \b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\b ',
- // http://www.danytech.com/category/tablet-pc
- 'DanyTechTablet' => 'Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1',
- // http://www.galapad.net/product.html
- 'GalapadTablet' => 'Android.*\bG1\b(?!\))',
- // http://www.micromaxinfo.com/tablet/funbook
- 'MicromaxTablet' => 'Funbook|Micromax.*\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\b',
- // http://www.karbonnmobiles.com/products_tablet.php
- 'KarbonnTablet' => 'Android.*\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\b',
- // http://www.myallfine.com/Products.asp
- 'AllFineTablet' => 'Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide',
- // http://www.proscanvideo.com/products-search.asp?itemClass=TABLET&itemnmbr=
- 'PROSCANTablet' => '\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\b',
- // http://www.yonesnav.com/products/products.php
- 'YONESTablet' => 'BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026',
- // http://www.cjshowroom.com/eproducts.aspx?classcode=004001001
- // China manufacturer makes tablets for different small brands (eg. http://www.zeepad.net/index.html)
- 'ChangJiaTablet' => 'TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503',
- // http://www.gloryunion.cn/products.asp
- // http://www.allwinnertech.com/en/apply/mobile.html
- // http://www.ptcl.com.pk/pd_content.php?pd_id=284 (EVOTAB)
- // @todo: Softwiner tablets?
- // aka. Cute or Cool tablets. Not sure yet, must research to avoid collisions.
- 'GUTablet' => 'TX-A1301|TX-M9002|Q702|kf026', // A12R|D75A|D77|D79|R83|A95|A106C|R15|A75|A76|D71|D72|R71|R73|R77|D82|R85|D92|A97|D92|R91|A10F|A77F|W71F|A78F|W78F|W81F|A97F|W91F|W97F|R16G|C72|C73E|K72|K73|R96G
- // http://www.pointofview-online.com/showroom.php?shop_mode=product_listing&category_id=118
- 'PointOfViewTablet' => 'TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10',
- // http://www.overmax.pl/pl/katalog-produktow,p8/tablety,c14/
- // @todo: add more tests.
- 'OvermaxTablet' => 'OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)|Qualcore 1027',
- // http://hclmetablet.com/India/index.php
- 'HCLTablet' => 'HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync',
- // http://www.edigital.hu/Tablet_es_e-book_olvaso/Tablet-c18385.html
- 'DPSTablet' => 'DPS Dream 9|DPS Dual 7',
- // http://www.visture.com/index.asp
- 'VistureTablet' => 'V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10',
- // http://www.mijncresta.nl/tablet
- 'CrestaTablet' => 'CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989',
- // MediaTek - http://www.mediatek.com/_en/01_products/02_proSys.php?cata_sn=1&cata1_sn=1&cata2_sn=309
- 'MediatekTablet' => '\bMT8125|MT8389|MT8135|MT8377\b',
- // Concorde tab
- 'ConcordeTablet' => 'Concorde([ ]+)?Tab|ConCorde ReadMan',
- // GoClever Tablets - http://www.goclever.com/uk/products,c1/tablet,c5/
- 'GoCleverTablet' => 'GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042',
- // Modecom Tablets - http://www.modecom.eu/tablets/portal/
- 'ModecomTablet' => 'FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003',
- // Vonino Tablets
- 'VoninoTablet' => '\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\bQ8\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\b',
- // ECS Tablets - http://www.ecs.com.tw/ECSWebSite/Product/Product_Tablet_List.aspx?CategoryID=14&MenuID=107&childid=M_107&LanID=0
- 'ECSTablet' => 'V07OT2|TM105A|S10OT1|TR10CS1',
- // Storex Tablets - http://storex.fr/espace_client/support.html
- // @note: no need to add all the tablet codes since they are guided by the first regex.
- 'StorexTablet' => 'eZee[_\']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab',
- // Generic Vodafone tablets.
- 'VodafoneTablet' => 'SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497|VFD 1400',
- // French tablets - Essentiel B http://www.boulanger.fr/tablette_tactile_e-book/tablette_tactile_essentiel_b/cl_68908.htm?multiChoiceToDelete=brand&mc_brand=essentielb
- // Aka: http://www.essentielb.fr/
- 'EssentielBTablet' => 'Smart[ \']?TAB[ ]+?[0-9]+|Family[ \']?TAB2',
- // Ross & Moor - http://ross-moor.ru/
- 'RossMoorTablet' => 'RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711',
- // i-mobile http://product.i-mobilephone.com/Mobile_Device
- 'iMobileTablet' => 'i-mobile i-note',
- // http://www.tolino.de/de/vergleichen/
- 'TolinoTablet' => 'tolino tab [0-9.]+|tolino shine',
- // AudioSonic - a Kmart brand
- // http://www.kmart.com.au/webapp/wcs/stores/servlet/Search?langId=-1&storeId=10701&catalogId=10001&categoryId=193001&pageSize=72¤tPage=1&searchCategory=193001%2b4294965664&sortBy=p_MaxPrice%7c1
- 'AudioSonicTablet' => '\bC-22Q|T7-QC|T-17B|T-17P\b',
- // AMPE Tablets - http://www.ampe.com.my/product-category/tablets/
- // @todo: add them gradually to avoid conflicts.
- 'AMPETablet' => 'Android.* A78 ',
- // Skk Mobile - http://skkmobile.com.ph/product_tablets.php
- 'SkkTablet' => 'Android.* (SKYPAD|PHOENIX|CYCLOPS)',
- // Tecno Mobile (only tablet) - http://www.tecno-mobile.com/index.php/product?filterby=smart&list_order=all&page=1
- 'TecnoTablet' => 'TECNO P9|TECNO DP8D',
- // JXD (consoles & tablets) - http://jxd.hk/products.asp?selectclassid=009008&clsid=3
- 'JXDTablet' => 'Android.* \b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\b',
- // i-Joy tablets - http://www.i-joy.es/en/cat/products/tablets/
- 'iJoyTablet' => 'Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)',
- // http://www.intracon.eu/tablet
- 'FX2Tablet' => 'FX2 PAD7|FX2 PAD10',
- // http://www.xoro.de/produkte/
- // @note: Might be the same brand with 'Simply tablets'
- 'XoroTablet' => 'KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151',
- // http://www1.viewsonic.com/products/computing/tablets/
- 'ViewsonicTablet' => 'ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a',
- // https://www.verizonwireless.com/tablets/verizon/
- 'VerizonTablet' => 'QTAQZ3|QTAIR7|QTAQTZ3|QTASUN1|QTASUN2|QTAXIA1',
- // http://www.odys.de/web/internet-tablet_en.html
- 'OdysTablet' => 'LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\bXELIO\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10',
- // http://www.captiva-power.de/products.html#tablets-en
- 'CaptivaTablet' => 'CAPTIVA PAD',
- // IconBIT - http://www.iconbit.com/products/tablets/
- 'IconbitTablet' => 'NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S',
- // http://www.teclast.com/topic.php?channelID=70&topicID=140&pid=63
- 'TeclastTablet' => 'T98 4G|\bP80\b|\bX90HD\b|X98 Air|X98 Air 3G|\bX89\b|P80 3G|\bX80h\b|P98 Air|\bX89HD\b|P98 3G|\bP90HD\b|P89 3G|X98 3G|\bP70h\b|P79HD 3G|G18d 3G|\bP79HD\b|\bP89s\b|\bA88\b|\bP10HD\b|\bP19HD\b|G18 3G|\bP78HD\b|\bA78\b|\bP75\b|G17s 3G|G17h 3G|\bP85t\b|\bP90\b|\bP11\b|\bP98t\b|\bP98HD\b|\bG18d\b|\bP85s\b|\bP11HD\b|\bP88s\b|\bA80HD\b|\bA80se\b|\bA10h\b|\bP89\b|\bP78s\b|\bG18\b|\bP85\b|\bA70h\b|\bA70\b|\bG17\b|\bP18\b|\bA80s\b|\bA11s\b|\bP88HD\b|\bA80h\b|\bP76s\b|\bP76h\b|\bP98\b|\bA10HD\b|\bP78\b|\bP88\b|\bA11\b|\bA10t\b|\bP76a\b|\bP76t\b|\bP76e\b|\bP85HD\b|\bP85a\b|\bP86\b|\bP75HD\b|\bP76v\b|\bA12\b|\bP75a\b|\bA15\b|\bP76Ti\b|\bP81HD\b|\bA10\b|\bT760VE\b|\bT720HD\b|\bP76\b|\bP73\b|\bP71\b|\bP72\b|\bT720SE\b|\bC520Ti\b|\bT760\b|\bT720VE\b|T720-3GE|T720-WiFi',
- // Onda - http://www.onda-tablet.com/buy-android-onda.html?dir=desc&limit=all&order=price
- 'OndaTablet' => '\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\b[\s]+|V10 \b4G\b',
- 'JaytechTablet' => 'TPC-PA762',
- 'BlaupunktTablet' => 'Endeavour 800NG|Endeavour 1010',
- // http://www.digma.ru/support/download/
- // @todo: Ebooks also (if requested)
- 'DigmaTablet' => '\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\b',
- // http://www.evolioshop.com/ro/tablete-pc.html
- // http://www.evolio.ro/support/downloads_static.html?cat=2
- // @todo: Research some more
- 'EvolioTablet' => 'ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\bEvotab\b|\bNeura\b',
- // @todo http://www.lavamobiles.com/tablets-data-cards
- 'LavaTablet' => 'QPAD E704|\bIvoryS\b|E-TAB IVORY|\bE-TAB\b',
- // http://www.breezetablet.com/
- 'AocTablet' => 'MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712',
- // http://www.mpmaneurope.com/en/products/internet-tablets-14/android-tablets-14/
- 'MpmanTablet' => 'MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\bMPG7\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010',
- // https://www.celkonmobiles.com/?_a=categoryphones&sid=2
- 'CelkonTablet' => 'CT695|CT888|CT[\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\bCT-1\b',
- // http://www.wolderelectronics.com/productos/manuales-y-guias-rapidas/categoria-2-miTab
- 'WolderTablet' => 'miTab \b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\b',
- 'MediacomTablet' => 'M-MPI10C3G|M-SP10EG|M-SP10EGP|M-SP10HXAH|M-SP7HXAH|M-SP10HXBH|M-SP8HXAH|M-SP8MXA',
- // http://www.mi.com/en
- 'MiTablet' => '\bMI PAD\b|\bHM NOTE 1W\b',
- // http://www.nbru.cn/index.html
- 'NibiruTablet' => 'Nibiru M1|Nibiru Jupiter One',
- // http://navroad.com/products/produkty/tablety/
- // http://navroad.com/products/produkty/tablety/
- 'NexoTablet' => 'NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI',
- // http://leader-online.com/new_site/product-category/tablets/
- // http://www.leader-online.net.au/List/Tablet
- 'LeaderTablet' => 'TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100',
- // http://www.datawind.com/ubislate/
- 'UbislateTablet' => 'UbiSlate[\s]?7C',
- // http://www.pocketbook-int.com/ru/support
- 'PocketBookTablet' => 'Pocketbook',
- // http://www.kocaso.com/product_tablet.html
- 'KocasoTablet' => '\b(TB-1207)\b',
- // http://global.hisense.com/product/asia/tablet/Sero7/201412/t20141215_91832.htm
- 'HisenseTablet' => '\b(F5281|E2371)\b',
- // http://www.tesco.com/direct/hudl/
- 'Hudl' => 'Hudl HT7S3|Hudl 2',
- // http://www.telstra.com.au/home-phone/thub-2/
- 'TelstraTablet' => 'T-Hub2',
- 'GenericTablet' => 'Android.*\b97D\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\bA7EB\b|CatNova8|A1_07|CT704|CT1002|\bM721\b|rk30sdk|\bEVOTAB\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\bM6pro\b|CT1020W|arc 10HD|\bTP750\b|\bQTAQZ3\b|WVT101|TM1088|KT107'
- );
-
- /**
- * List of mobile Operating Systems.
- *
- * @var array
- */
- protected static $operatingSystems = array(
- 'AndroidOS' => 'Android',
- 'BlackBerryOS' => 'blackberry|\bBB10\b|rim tablet os',
- 'PalmOS' => 'PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino',
- 'SymbianOS' => 'Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\bS60\b',
- // @reference: http://en.wikipedia.org/wiki/Windows_Mobile
- 'WindowsMobileOS' => 'Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Windows Mobile|Windows Phone [0-9.]+|WCE;',
- // @reference: http://en.wikipedia.org/wiki/Windows_Phone
- // http://wifeng.cn/?r=blog&a=view&id=106
- // http://nicksnettravels.builttoroam.com/post/2011/01/10/Bogus-Windows-Phone-7-User-Agent-String.aspx
- // http://msdn.microsoft.com/library/ms537503.aspx
- // https://msdn.microsoft.com/en-us/library/hh869301(v=vs.85).aspx
- 'WindowsPhoneOS' => 'Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;',
- 'iOS' => '\biPhone.*Mobile|\biPod|\biPad|AppleCoreMedia',
- // https://en.wikipedia.org/wiki/IPadOS
- 'iPadOS' => 'CPU OS 13',
- // http://en.wikipedia.org/wiki/MeeGo
- // @todo: research MeeGo in UAs
- 'MeeGoOS' => 'MeeGo',
- // http://en.wikipedia.org/wiki/Maemo
- // @todo: research Maemo in UAs
- 'MaemoOS' => 'Maemo',
- 'JavaOS' => 'J2ME/|\bMIDP\b|\bCLDC\b', // '|Java/' produces bug #135
- 'webOS' => 'webOS|hpwOS',
- 'badaOS' => '\bBada\b',
- 'BREWOS' => 'BREW',
- );
-
- /**
- * List of mobile User Agents.
- *
- * IMPORTANT: This is a list of only mobile browsers.
- * Mobile Detect 2.x supports only mobile browsers,
- * it was never designed to detect all browsers.
- * The change will come in 2017 in the 3.x release for PHP7.
- *
- * @var array
- */
- protected static $browsers = array(
- //'Vivaldi' => 'Vivaldi',
- // @reference: https://developers.google.com/chrome/mobile/docs/user-agent
- 'Chrome' => '\bCrMo\b|CriOS|Android.*Chrome/[.0-9]* (Mobile)?',
- 'Dolfin' => '\bDolfin\b',
- 'Opera' => 'Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+$|Coast/[0-9.]+',
- 'Skyfire' => 'Skyfire',
- 'Edge' => 'Mobile Safari/[.0-9]* Edge',
- 'IE' => 'IEMobile|MSIEMobile', // |Trident/[.0-9]+
- 'Firefox' => 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS',
- 'Bolt' => 'bolt',
- 'TeaShark' => 'teashark',
- 'Blazer' => 'Blazer',
- // @reference: http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html#//apple_ref/doc/uid/TP40006517-SW3
- 'Safari' => 'Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari',
- // http://en.wikipedia.org/wiki/Midori_(web_browser)
- //'Midori' => 'midori',
- //'Tizen' => 'Tizen',
- 'WeChat' => '\bMicroMessenger\b',
- 'UCBrowser' => 'UC.*Browser|UCWEB',
- 'baiduboxapp' => 'baiduboxapp',
- 'baidubrowser' => 'baidubrowser',
- // https://github.com/serbanghita/Mobile-Detect/issues/7
- 'DiigoBrowser' => 'DiigoBrowser',
- // http://www.puffinbrowser.com/index.php
- // https://github.com/serbanghita/Mobile-Detect/issues/752
- // 'Puffin' => 'Puffin',
- // http://mercury-browser.com/index.html
- 'Mercury' => '\bMercury\b',
- // http://en.wikipedia.org/wiki/Obigo_Browser
- 'ObigoBrowser' => 'Obigo',
- // http://en.wikipedia.org/wiki/NetFront
- 'NetFront' => 'NF-Browser',
- // @reference: http://en.wikipedia.org/wiki/Minimo
- // http://en.wikipedia.org/wiki/Vision_Mobile_Browser
- 'GenericBrowser' => 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger',
- // @reference: https://en.wikipedia.org/wiki/Pale_Moon_(web_browser)
- 'PaleMoon' => 'Android.*PaleMoon|Mobile.*PaleMoon',
- );
-
- /**
- * Utilities.
- *
- * @var array
- */
- protected static $utilities = array(
- // Experimental. When a mobile device wants to switch to 'Desktop Mode'.
- // http://scottcate.com/technology/windows-phone-8-ie10-desktop-or-mobile/
- // https://github.com/serbanghita/Mobile-Detect/issues/57#issuecomment-15024011
- // https://developers.facebook.com/docs/sharing/best-practices
- 'Bot' => 'Googlebot|facebookexternalhit|Google-AMPHTML|s~amp-validator|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|YandexMobileBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom|contentkingapp',
- 'MobileBot' => 'Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker/M1A1-R2D2',
- 'DesktopMode' => 'WPDesktop',
- 'TV' => 'SonyDTV|HbbTV', // experimental
- 'WebKit' => '(webkit)[ /]([\w.]+)',
- // @todo: Include JXD consoles.
- 'Console' => '\b(Nintendo|Nintendo WiiU|Nintendo 3DS|Nintendo Switch|PLAYSTATION|Xbox)\b',
- 'Watch' => 'SM-V700',
- );
-
- /**
- * All possible HTTP headers that represent the
- * User-Agent string.
- *
- * @var array
- */
- protected static $uaHttpHeaders = array(
- // The default User-Agent string.
- 'HTTP_USER_AGENT',
- // Header can occur on devices using Opera Mini.
- 'HTTP_X_OPERAMINI_PHONE_UA',
- // Vodafone specific header: http://www.seoprinciple.com/mobile-web-community-still-angry-at-vodafone/24/
- 'HTTP_X_DEVICE_USER_AGENT',
- 'HTTP_X_ORIGINAL_USER_AGENT',
- 'HTTP_X_SKYFIRE_PHONE',
- 'HTTP_X_BOLT_PHONE_UA',
- 'HTTP_DEVICE_STOCK_UA',
- 'HTTP_X_UCBROWSER_DEVICE_UA'
- );
-
- /**
- * The individual segments that could exist in a User-Agent string. VER refers to the regular
- * expression defined in the constant self::VER.
- *
- * @var array
- */
- protected static $properties = array(
-
- // Build
- 'Mobile' => 'Mobile/[VER]',
- 'Build' => 'Build/[VER]',
- 'Version' => 'Version/[VER]',
- 'VendorID' => 'VendorID/[VER]',
-
- // Devices
- 'iPad' => 'iPad.*CPU[a-z ]+[VER]',
- 'iPhone' => 'iPhone.*CPU[a-z ]+[VER]',
- 'iPod' => 'iPod.*CPU[a-z ]+[VER]',
- //'BlackBerry' => array('BlackBerry[VER]', 'BlackBerry [VER];'),
- 'Kindle' => 'Kindle/[VER]',
-
- // Browser
- 'Chrome' => array('Chrome/[VER]', 'CriOS/[VER]', 'CrMo/[VER]'),
- 'Coast' => array('Coast/[VER]'),
- 'Dolfin' => 'Dolfin/[VER]',
- // @reference: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent/Firefox
- 'Firefox' => array('Firefox/[VER]', 'FxiOS/[VER]'),
- 'Fennec' => 'Fennec/[VER]',
- // http://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx
- // https://msdn.microsoft.com/en-us/library/ie/hh869301(v=vs.85).aspx
- 'Edge' => 'Edge/[VER]',
- 'IE' => array('IEMobile/[VER];', 'IEMobile [VER]', 'MSIE [VER];', 'Trident/[0-9.]+;.*rv:[VER]'),
- // http://en.wikipedia.org/wiki/NetFront
- 'NetFront' => 'NetFront/[VER]',
- 'NokiaBrowser' => 'NokiaBrowser/[VER]',
- 'Opera' => array( ' OPR/[VER]', 'Opera Mini/[VER]', 'Version/[VER]' ),
- 'Opera Mini' => 'Opera Mini/[VER]',
- 'Opera Mobi' => 'Version/[VER]',
- 'UCBrowser' => array( 'UCWEB[VER]', 'UC.*Browser/[VER]' ),
- 'MQQBrowser' => 'MQQBrowser/[VER]',
- 'MicroMessenger' => 'MicroMessenger/[VER]',
- 'baiduboxapp' => 'baiduboxapp/[VER]',
- 'baidubrowser' => 'baidubrowser/[VER]',
- 'SamsungBrowser' => 'SamsungBrowser/[VER]',
- 'Iron' => 'Iron/[VER]',
- // @note: Safari 7534.48.3 is actually Version 5.1.
- // @note: On BlackBerry the Version is overwriten by the OS.
- 'Safari' => array( 'Version/[VER]', 'Safari/[VER]' ),
- 'Skyfire' => 'Skyfire/[VER]',
- 'Tizen' => 'Tizen/[VER]',
- 'Webkit' => 'webkit[ /][VER]',
- 'PaleMoon' => 'PaleMoon/[VER]',
-
- // Engine
- 'Gecko' => 'Gecko/[VER]',
- 'Trident' => 'Trident/[VER]',
- 'Presto' => 'Presto/[VER]',
- 'Goanna' => 'Goanna/[VER]',
-
- // OS
- 'iOS' => ' \bi?OS\b [VER][ ;]{1}',
- 'Android' => 'Android [VER]',
- 'BlackBerry' => array('BlackBerry[\w]+/[VER]', 'BlackBerry.*Version/[VER]', 'Version/[VER]'),
- 'BREW' => 'BREW [VER]',
- 'Java' => 'Java/[VER]',
- // @reference: http://windowsteamblog.com/windows_phone/b/wpdev/archive/2011/08/29/introducing-the-ie9-on-windows-phone-mango-user-agent-string.aspx
- // @reference: http://en.wikipedia.org/wiki/Windows_NT#Releases
- 'Windows Phone OS' => array( 'Windows Phone OS [VER]', 'Windows Phone [VER]'),
- 'Windows Phone' => 'Windows Phone [VER]',
- 'Windows CE' => 'Windows CE/[VER]',
- // http://social.msdn.microsoft.com/Forums/en-US/windowsdeveloperpreviewgeneral/thread/6be392da-4d2f-41b4-8354-8dcee20c85cd
- 'Windows NT' => 'Windows NT [VER]',
- 'Symbian' => array('SymbianOS/[VER]', 'Symbian/[VER]'),
- 'webOS' => array('webOS/[VER]', 'hpwOS/[VER];'),
- );
-
- /**
- * Construct an instance of this class.
- *
- * @param array $headers Specify the headers as injection. Should be PHP _SERVER flavored.
- * If left empty, will use the global _SERVER['HTTP_*'] vars instead.
- * @param string $userAgent Inject the User-Agent header. If null, will use HTTP_USER_AGENT
- * from the $headers array instead.
- */
- public function __construct(
- array $headers = null,
- $userAgent = null
- ) {
- $this->setHttpHeaders($headers);
- $this->setUserAgent($userAgent);
- }
-
- /**
- * Get the current script version.
- * This is useful for the demo.php file,
- * so people can check on what version they are testing
- * for mobile devices.
- *
- * @return string The version number in semantic version format.
- */
- public static function getScriptVersion()
- {
- return self::VERSION;
- }
-
- /**
- * Set the HTTP Headers. Must be PHP-flavored. This method will reset existing headers.
- *
- * @param array $httpHeaders The headers to set. If null, then using PHP's _SERVER to extract
- * the headers. The default null is left for backwards compatibility.
- */
- public function setHttpHeaders($httpHeaders = null)
- {
- // use global _SERVER if $httpHeaders aren't defined
- if (!is_array($httpHeaders) || !count($httpHeaders)) {
- $httpHeaders = $_SERVER;
- }
-
- // clear existing headers
- $this->httpHeaders = array();
-
- // Only save HTTP headers. In PHP land, that means only _SERVER vars that
- // start with HTTP_.
- foreach ($httpHeaders as $key => $value) {
- if (substr($key, 0, 5) === 'HTTP_') {
- $this->httpHeaders[$key] = $value;
- }
- }
-
- // In case we're dealing with CloudFront, we need to know.
- $this->setCfHeaders($httpHeaders);
- }
-
- /**
- * Retrieves the HTTP headers.
- *
- * @return array
- */
- public function getHttpHeaders()
- {
- return $this->httpHeaders;
- }
-
- /**
- * Retrieves a particular header. If it doesn't exist, no exception/error is caused.
- * Simply null is returned.
- *
- * @param string $header The name of the header to retrieve. Can be HTTP compliant such as
- * "User-Agent" or "X-Device-User-Agent" or can be php-esque with the
- * all-caps, HTTP_ prefixed, underscore seperated awesomeness.
- *
- * @return string|null The value of the header.
- */
- public function getHttpHeader($header)
- {
- // are we using PHP-flavored headers?
- if (strpos($header, '_') === false) {
- $header = str_replace('-', '_', $header);
- $header = strtoupper($header);
- }
-
- // test the alternate, too
- $altHeader = 'HTTP_' . $header;
-
- //Test both the regular and the HTTP_ prefix
- if (isset($this->httpHeaders[$header])) {
- return $this->httpHeaders[$header];
- } elseif (isset($this->httpHeaders[$altHeader])) {
- return $this->httpHeaders[$altHeader];
- }
-
- return null;
- }
-
- public function getMobileHeaders()
- {
- return self::$mobileHeaders;
- }
-
- /**
- * Get all possible HTTP headers that
- * can contain the User-Agent string.
- *
- * @return array List of HTTP headers.
- */
- public function getUaHttpHeaders()
- {
- return self::$uaHttpHeaders;
- }
-
-
- /**
- * Set CloudFront headers
- * http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html#header-caching-web-device
- *
- * @param array $cfHeaders List of HTTP headers
- *
- * @return boolean If there were CloudFront headers to be set
- */
- public function setCfHeaders($cfHeaders = null) {
- // use global _SERVER if $cfHeaders aren't defined
- if (!is_array($cfHeaders) || !count($cfHeaders)) {
- $cfHeaders = $_SERVER;
- }
-
- // clear existing headers
- $this->cloudfrontHeaders = array();
-
- // Only save CLOUDFRONT headers. In PHP land, that means only _SERVER vars that
- // start with cloudfront-.
- $response = false;
- foreach ($cfHeaders as $key => $value) {
- if (substr(strtolower($key), 0, 16) === 'http_cloudfront_') {
- $this->cloudfrontHeaders[strtoupper($key)] = $value;
- $response = true;
- }
- }
-
- return $response;
- }
-
- /**
- * Retrieves the cloudfront headers.
- *
- * @return array
- */
- public function getCfHeaders()
- {
- return $this->cloudfrontHeaders;
- }
-
- /**
- * @param string $userAgent
- * @return string
- */
- private function prepareUserAgent($userAgent) {
- $userAgent = trim($userAgent);
- $userAgent = substr($userAgent, 0, 500);
- return $userAgent;
- }
-
- /**
- * Set the User-Agent to be used.
- *
- * @param string $userAgent The user agent string to set.
- *
- * @return string|null
- */
- public function setUserAgent($userAgent = null)
- {
- // Invalidate cache due to #375
- $this->cache = array();
-
- if (false === empty($userAgent)) {
- return $this->userAgent = $this->prepareUserAgent($userAgent);
- } else {
- $this->userAgent = null;
- foreach ($this->getUaHttpHeaders() as $altHeader) {
- if (false === empty($this->httpHeaders[$altHeader])) { // @todo: should use getHttpHeader(), but it would be slow. (Serban)
- $this->userAgent .= $this->httpHeaders[$altHeader] . " ";
- }
- }
-
- if (!empty($this->userAgent)) {
- return $this->userAgent = $this->prepareUserAgent($this->userAgent);
- }
- }
-
- if (count($this->getCfHeaders()) > 0) {
- return $this->userAgent = 'Amazon CloudFront';
- }
- return $this->userAgent = null;
- }
-
- /**
- * Retrieve the User-Agent.
- *
- * @return string|null The user agent if it's set.
- */
- public function getUserAgent()
- {
- return $this->userAgent;
- }
-
- /**
- * Set the detection type. Must be one of self::DETECTION_TYPE_MOBILE or
- * self::DETECTION_TYPE_EXTENDED. Otherwise, nothing is set.
- *
- * @deprecated since version 2.6.9
- *
- * @param string $type The type. Must be a self::DETECTION_TYPE_* constant. The default
- * parameter is null which will default to self::DETECTION_TYPE_MOBILE.
- */
- public function setDetectionType($type = null)
- {
- if ($type === null) {
- $type = self::DETECTION_TYPE_MOBILE;
- }
-
- if ($type !== self::DETECTION_TYPE_MOBILE && $type !== self::DETECTION_TYPE_EXTENDED) {
- return;
- }
-
- $this->detectionType = $type;
- }
-
- public function getMatchingRegex()
- {
- return $this->matchingRegex;
- }
-
- public function getMatchesArray()
- {
- return $this->matchesArray;
- }
-
- /**
- * Retrieve the list of known phone devices.
- *
- * @return array List of phone devices.
- */
- public static function getPhoneDevices()
- {
- return self::$phoneDevices;
- }
-
- /**
- * Retrieve the list of known tablet devices.
- *
- * @return array List of tablet devices.
- */
- public static function getTabletDevices()
- {
- return self::$tabletDevices;
- }
-
- /**
- * Alias for getBrowsers() method.
- *
- * @return array List of user agents.
- */
- public static function getUserAgents()
- {
- return self::getBrowsers();
- }
-
- /**
- * Retrieve the list of known browsers. Specifically, the user agents.
- *
- * @return array List of browsers / user agents.
- */
- public static function getBrowsers()
- {
- return self::$browsers;
- }
-
- /**
- * Retrieve the list of known utilities.
- *
- * @return array List of utilities.
- */
- public static function getUtilities()
- {
- return self::$utilities;
- }
-
- /**
- * Method gets the mobile detection rules. This method is used for the magic methods $detect->is*().
- *
- * @deprecated since version 2.6.9
- *
- * @return array All the rules (but not extended).
- */
- public static function getMobileDetectionRules()
- {
- static $rules;
-
- if (!$rules) {
- $rules = array_merge(
- self::$phoneDevices,
- self::$tabletDevices,
- self::$operatingSystems,
- self::$browsers
- );
- }
-
- return $rules;
-
- }
-
- /**
- * Method gets the mobile detection rules + utilities.
- * The reason this is separate is because utilities rules
- * don't necessary imply mobile. This method is used inside
- * the new $detect->is('stuff') method.
- *
- * @deprecated since version 2.6.9
- *
- * @return array All the rules + extended.
- */
- public function getMobileDetectionRulesExtended()
- {
- static $rules;
-
- if (!$rules) {
- // Merge all rules together.
- $rules = array_merge(
- self::$phoneDevices,
- self::$tabletDevices,
- self::$operatingSystems,
- self::$browsers,
- self::$utilities
- );
- }
-
- return $rules;
- }
-
- /**
- * Retrieve the current set of rules.
- *
- * @deprecated since version 2.6.9
- *
- * @return array
- */
- public function getRules()
- {
- if ($this->detectionType == self::DETECTION_TYPE_EXTENDED) {
- return self::getMobileDetectionRulesExtended();
- } else {
- return self::getMobileDetectionRules();
- }
- }
-
- /**
- * Retrieve the list of mobile operating systems.
- *
- * @return array The list of mobile operating systems.
- */
- public static function getOperatingSystems()
- {
- return self::$operatingSystems;
- }
-
- /**
- * Check the HTTP headers for signs of mobile.
- * This is the fastest mobile check possible; it's used
- * inside isMobile() method.
- *
- * @return bool
- */
- public function checkHttpHeadersForMobile()
- {
-
- foreach ($this->getMobileHeaders() as $mobileHeader => $matchType) {
- if (isset($this->httpHeaders[$mobileHeader])) {
- if (is_array($matchType['matches'])) {
- foreach ($matchType['matches'] as $_match) {
- if (strpos($this->httpHeaders[$mobileHeader], $_match) !== false) {
- return true;
- }
- }
-
- return false;
- } else {
- return true;
- }
- }
- }
-
- return false;
-
- }
-
- /**
- * Magic overloading method.
- *
- * @method boolean is[...]()
- * @param string $name
- * @param array $arguments
- * @return mixed
- * @throws BadMethodCallException when the method doesn't exist and doesn't start with 'is'
- */
- public function __call($name, $arguments)
- {
- // make sure the name starts with 'is', otherwise
- if (substr($name, 0, 2) !== 'is') {
- throw new BadMethodCallException("No such method exists: $name");
- }
-
- $this->setDetectionType(self::DETECTION_TYPE_MOBILE);
-
- $key = substr($name, 2);
-
- return $this->matchUAAgainstKey($key);
- }
-
- /**
- * Find a detection rule that matches the current User-agent.
- *
- * @param null $userAgent deprecated
- * @return boolean
- */
- protected function matchDetectionRulesAgainstUA($userAgent = null)
- {
- // Begin general search.
- foreach ($this->getRules() as $_regex) {
- if (empty($_regex)) {
- continue;
- }
-
- if ($this->match($_regex, $userAgent)) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Search for a certain key in the rules array.
- * If the key is found then try to match the corresponding
- * regex against the User-Agent.
- *
- * @param string $key
- *
- * @return boolean
- */
- protected function matchUAAgainstKey($key)
- {
- // Make the keys lowercase so we can match: isIphone(), isiPhone(), isiphone(), etc.
- $key = strtolower($key);
- if (false === isset($this->cache[$key])) {
-
- // change the keys to lower case
- $_rules = array_change_key_case($this->getRules());
-
- if (false === empty($_rules[$key])) {
- $this->cache[$key] = $this->match($_rules[$key]);
- }
-
- if (false === isset($this->cache[$key])) {
- $this->cache[$key] = false;
- }
- }
-
- return $this->cache[$key];
- }
-
- /**
- * Check if the device is mobile.
- * Returns true if any type of mobile device detected, including special ones
- * @param null $userAgent deprecated
- * @param null $httpHeaders deprecated
- * @return bool
- */
- public function isMobile($userAgent = null, $httpHeaders = null)
- {
-
- if ($httpHeaders) {
- $this->setHttpHeaders($httpHeaders);
- }
-
- if ($userAgent) {
- $this->setUserAgent($userAgent);
- }
-
- // Check specifically for cloudfront headers if the useragent === 'Amazon CloudFront'
- if ($this->getUserAgent() === 'Amazon CloudFront') {
- $cfHeaders = $this->getCfHeaders();
- if(array_key_exists('HTTP_CLOUDFRONT_IS_MOBILE_VIEWER', $cfHeaders) && $cfHeaders['HTTP_CLOUDFRONT_IS_MOBILE_VIEWER'] === 'true') {
- return true;
- }
- }
-
- $this->setDetectionType(self::DETECTION_TYPE_MOBILE);
-
- if ($this->checkHttpHeadersForMobile()) {
- return true;
- } else {
- return $this->matchDetectionRulesAgainstUA();
- }
-
- }
-
- /**
- * Check if the device is a tablet.
- * Return true if any type of tablet device is detected.
- *
- * @param string $userAgent deprecated
- * @param array $httpHeaders deprecated
- * @return bool
- */
- public function isTablet($userAgent = null, $httpHeaders = null)
- {
- // Check specifically for cloudfront headers if the useragent === 'Amazon CloudFront'
- if ($this->getUserAgent() === 'Amazon CloudFront') {
- $cfHeaders = $this->getCfHeaders();
- if(array_key_exists('HTTP_CLOUDFRONT_IS_TABLET_VIEWER', $cfHeaders) && $cfHeaders['HTTP_CLOUDFRONT_IS_TABLET_VIEWER'] === 'true') {
- return true;
- }
- }
-
- $this->setDetectionType(self::DETECTION_TYPE_MOBILE);
-
- foreach (self::$tabletDevices as $_regex) {
- if ($this->match($_regex, $userAgent)) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * This method checks for a certain property in the
- * userAgent.
- * @todo: The httpHeaders part is not yet used.
- *
- * @param string $key
- * @param string $userAgent deprecated
- * @param string $httpHeaders deprecated
- * @return bool|int|null
- */
- public function is($key, $userAgent = null, $httpHeaders = null)
- {
- // Set the UA and HTTP headers only if needed (eg. batch mode).
- if ($httpHeaders) {
- $this->setHttpHeaders($httpHeaders);
- }
-
- if ($userAgent) {
- $this->setUserAgent($userAgent);
- }
-
- $this->setDetectionType(self::DETECTION_TYPE_EXTENDED);
-
- return $this->matchUAAgainstKey($key);
- }
-
- /**
- * Some detection rules are relative (not standard),
- * because of the diversity of devices, vendors and
- * their conventions in representing the User-Agent or
- * the HTTP headers.
- *
- * This method will be used to check custom regexes against
- * the User-Agent string.
- *
- * @param $regex
- * @param string $userAgent
- * @return bool
- *
- * @todo: search in the HTTP headers too.
- */
- public function match($regex, $userAgent = null)
- {
- $match = (bool) preg_match(sprintf('#%s#is', $regex), (false === empty($userAgent) ? $userAgent : $this->userAgent), $matches);
- // If positive match is found, store the results for debug.
- if ($match) {
- $this->matchingRegex = $regex;
- $this->matchesArray = $matches;
- }
-
- return $match;
- }
-
- /**
- * Get the properties array.
- *
- * @return array
- */
- public static function getProperties()
- {
- return self::$properties;
- }
-
- /**
- * Prepare the version number.
- *
- * @todo Remove the error supression from str_replace() call.
- *
- * @param string $ver The string version, like "2.6.21.2152";
- *
- * @return float
- */
- public function prepareVersionNo($ver)
- {
- $ver = str_replace(array('_', ' ', '/'), '.', $ver);
- $arrVer = explode('.', $ver, 2);
-
- if (isset($arrVer[1])) {
- $arrVer[1] = @str_replace('.', '', $arrVer[1]); // @todo: treat strings versions.
- }
-
- return (float) implode('.', $arrVer);
- }
-
- /**
- * Check the version of the given property in the User-Agent.
- * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31)
- *
- * @param string $propertyName The name of the property. See self::getProperties() array
- * keys for all possible properties.
- * @param string $type Either self::VERSION_TYPE_STRING to get a string value or
- * self::VERSION_TYPE_FLOAT indicating a float value. This parameter
- * is optional and defaults to self::VERSION_TYPE_STRING. Passing an
- * invalid parameter will default to the this type as well.
- *
- * @return string|float The version of the property we are trying to extract.
- */
- public function version($propertyName, $type = self::VERSION_TYPE_STRING)
- {
- if (empty($propertyName)) {
- return false;
- }
-
- // set the $type to the default if we don't recognize the type
- if ($type !== self::VERSION_TYPE_STRING && $type !== self::VERSION_TYPE_FLOAT) {
- $type = self::VERSION_TYPE_STRING;
- }
-
- $properties = self::getProperties();
-
- // Check if the property exists in the properties array.
- if (true === isset($properties[$propertyName])) {
-
- // Prepare the pattern to be matched.
- // Make sure we always deal with an array (string is converted).
- $properties[$propertyName] = (array) $properties[$propertyName];
-
- foreach ($properties[$propertyName] as $propertyMatchString) {
-
- $propertyPattern = str_replace('[VER]', self::VER, $propertyMatchString);
-
- // Identify and extract the version.
- preg_match(sprintf('#%s#is', $propertyPattern), $this->userAgent, $match);
-
- if (false === empty($match[1])) {
- $version = ($type == self::VERSION_TYPE_FLOAT ? $this->prepareVersionNo($match[1]) : $match[1]);
-
- return $version;
- }
-
- }
-
- }
-
- return false;
- }
-
- /**
- * Retrieve the mobile grading, using self::MOBILE_GRADE_* constants.
- *
- * @return string One of the self::MOBILE_GRADE_* constants.
- */
- public function mobileGrade()
- {
- $isMobile = $this->isMobile();
-
- if (
- // Apple iOS 4-7.0 – Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3 / 5.1 / 6.1), iPad 3 (5.1 / 6.0), iPad Mini (6.1), iPad Retina (7.0), iPhone 3GS (4.3), iPhone 4 (4.3 / 5.1), iPhone 4S (5.1 / 6.0), iPhone 5 (6.0), and iPhone 5S (7.0)
- $this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT) >= 4.3 ||
- $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT) >= 4.3 ||
- $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT) >= 4.3 ||
-
- // Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5)
- // Android 3.1 (Honeycomb) - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM
- // Android 4.0 (ICS) - Tested on a Galaxy Nexus. Note: transition performance can be poor on upgraded devices
- // Android 4.1 (Jelly Bean) - Tested on a Galaxy Nexus and Galaxy 7
- ( $this->version('Android', self::VERSION_TYPE_FLOAT)>2.1 && $this->is('Webkit') ) ||
-
- // Windows Phone 7.5-8 - Tested on the HTC Surround (7.5), HTC Trophy (7.5), LG-E900 (7.5), Nokia 800 (7.8), HTC Mazaa (7.8), Nokia Lumia 520 (8), Nokia Lumia 920 (8), HTC 8x (8)
- $this->version('Windows Phone OS', self::VERSION_TYPE_FLOAT) >= 7.5 ||
-
- // Tested on the Torch 9800 (6) and Style 9670 (6), BlackBerry® Torch 9810 (7), BlackBerry Z10 (10)
- $this->is('BlackBerry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) >= 6.0 ||
- // Blackberry Playbook (1.0-2.0) - Tested on PlayBook
- $this->match('Playbook.*Tablet') ||
-
- // Palm WebOS (1.4-3.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0), HP TouchPad (3.0)
- ( $this->version('webOS', self::VERSION_TYPE_FLOAT) >= 1.4 && $this->match('Palm|Pre|Pixi') ) ||
- // Palm WebOS 3.0 - Tested on HP TouchPad
- $this->match('hp.*TouchPad') ||
-
- // Firefox Mobile 18 - Tested on Android 2.3 and 4.1 devices
- ( $this->is('Firefox') && $this->version('Firefox', self::VERSION_TYPE_FLOAT) >= 18 ) ||
-
- // Chrome for Android - Tested on Android 4.0, 4.1 device
- ( $this->is('Chrome') && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 4.0 ) ||
-
- // Skyfire 4.1 - Tested on Android 2.3 device
- ( $this->is('Skyfire') && $this->version('Skyfire', self::VERSION_TYPE_FLOAT) >= 4.1 && $this->is('AndroidOS') && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 ) ||
-
- // Opera Mobile 11.5-12: Tested on Android 2.3
- ( $this->is('Opera') && $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT) >= 11.5 && $this->is('AndroidOS') ) ||
-
- // Meego 1.2 - Tested on Nokia 950 and N9
- $this->is('MeeGoOS') ||
-
- // Tizen (pre-release) - Tested on early hardware
- $this->is('Tizen') ||
-
- // Samsung Bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser
- // @todo: more tests here!
- $this->is('Dolfin') && $this->version('Bada', self::VERSION_TYPE_FLOAT) >= 2.0 ||
-
- // UC Browser - Tested on Android 2.3 device
- ( ($this->is('UC Browser') || $this->is('Dolfin')) && $this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 ) ||
-
- // Kindle 3 and Fire - Tested on the built-in WebKit browser for each
- ( $this->match('Kindle Fire') ||
- $this->is('Kindle') && $this->version('Kindle', self::VERSION_TYPE_FLOAT) >= 3.0 ) ||
-
- // Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet
- $this->is('AndroidOS') && $this->is('NookTablet') ||
-
- // Chrome Desktop 16-24 - Tested on OS X 10.7 and Windows 7
- $this->version('Chrome', self::VERSION_TYPE_FLOAT) >= 16 && !$isMobile ||
-
- // Safari Desktop 5-6 - Tested on OS X 10.7 and Windows 7
- $this->version('Safari', self::VERSION_TYPE_FLOAT) >= 5.0 && !$isMobile ||
-
- // Firefox Desktop 10-18 - Tested on OS X 10.7 and Windows 7
- $this->version('Firefox', self::VERSION_TYPE_FLOAT) >= 10.0 && !$isMobile ||
-
- // Internet Explorer 7-9 - Tested on Windows XP, Vista and 7
- $this->version('IE', self::VERSION_TYPE_FLOAT) >= 7.0 && !$isMobile ||
-
- // Opera Desktop 10-12 - Tested on OS X 10.7 and Windows 7
- $this->version('Opera', self::VERSION_TYPE_FLOAT) >= 10 && !$isMobile
- ){
- return self::MOBILE_GRADE_A;
- }
-
- if (
- $this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT)<4.3 ||
- $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT)<4.3 ||
- $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT)<4.3 ||
-
- // Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770
- $this->is('Blackberry') && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) >= 5 && $this->version('BlackBerry', self::VERSION_TYPE_FLOAT)<6 ||
-
- //Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3
- ($this->version('Opera Mini', self::VERSION_TYPE_FLOAT) >= 5.0 && $this->version('Opera Mini', self::VERSION_TYPE_FLOAT) <= 7.0 &&
- ($this->version('Android', self::VERSION_TYPE_FLOAT) >= 2.3 || $this->is('iOS')) ) ||
-
- // Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1)
- $this->match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') ||
-
- // @todo: report this (tested on Nokia N71)
- $this->version('Opera Mobi', self::VERSION_TYPE_FLOAT) >= 11 && $this->is('SymbianOS')
- ){
- return self::MOBILE_GRADE_B;
- }
-
- if (
- // Blackberry 4.x - Tested on the Curve 8330
- $this->version('BlackBerry', self::VERSION_TYPE_FLOAT) <= 5.0 ||
- // Windows Mobile - Tested on the HTC Leo (WinMo 5.2)
- $this->match('MSIEMobile|Windows CE.*Mobile') || $this->version('Windows Mobile', self::VERSION_TYPE_FLOAT) <= 5.2 ||
-
- // Tested on original iPhone (3.1), iPhone 3 (3.2)
- $this->is('iOS') && $this->version('iPad', self::VERSION_TYPE_FLOAT) <= 3.2 ||
- $this->is('iOS') && $this->version('iPhone', self::VERSION_TYPE_FLOAT) <= 3.2 ||
- $this->is('iOS') && $this->version('iPod', self::VERSION_TYPE_FLOAT) <= 3.2 ||
-
- // Internet Explorer 7 and older - Tested on Windows XP
- $this->version('IE', self::VERSION_TYPE_FLOAT) <= 7.0 && !$isMobile
- ){
- return self::MOBILE_GRADE_C;
- }
-
- // All older smartphone platforms and featurephones - Any device that doesn't support media queries
- // will receive the basic, C grade experience.
- return self::MOBILE_GRADE_C;
- }
-}
diff --git a/vendor/mobiledetect/mobiledetectlib/README.md b/vendor/mobiledetect/mobiledetectlib/README.md
deleted file mode 100644
index d73757b72..000000000
--- a/vendor/mobiledetect/mobiledetectlib/README.md
+++ /dev/null
@@ -1,344 +0,0 @@
-
-
-> Motto: "Every business should have a detection script to detect mobile readers."
-
-[](https://travis-ci.org/serbanghita/Mobile-Detect)
-[](https://packagist.org/packages/mobiledetect/mobiledetectlib)
-[](https://packagist.org/packages/mobiledetect/mobiledetectlib)
-[](https://packagist.org/packages/mobiledetect/mobiledetectlib)
-[](https://packagist.org/packages/mobiledetect/mobiledetectlib)
-[](https://join.slack.com/t/mobiledetect/shared_invite/enQtMjg1NDY0OTg5NzgzLTcwMzEzMWJjZjRlOWFkY2ZiNzE1ZmRmNzEwM2VhOGY5OGVkYWMxNjdkZDU5YjQ5MmM5MGUxYjhlZDQwOGVjZjE)
-
-#### About
-
-Mobile Detect is a lightweight PHP class for detecting mobile devices (including tablets).
-It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.
-
-*Why*
-
-Your website's _content strategy_ is important! You need a complete toolkit to deliver an experience that is _optimized_,
-_fast_ and _relevant_ to your users. Mobile Detect class is a
-[server-side detection](http://www.w3.org/TR/mwabp/#bp-devcap-detection) tool that can help you with your RWD strategy,
-it is not a replacement for CSS3 media queries or other forms of client-side feature detection.
-
-*How*
-
-We're committed to make Mobile_Detect the best open-source mobile detection resource and this is why before
-each release we're running [unit tests](./tests) and research and update the detection rules on **monthly** basis.
-
-*Who*
-
-See [the history](./docs/HISTORY.md) of the project.
-
-#### Announcements
-
-* **JetBrains** is sponsoring the project by providing licenses for [PHPStorm](https://www.jetbrains.com/phpstorm/) and
-[DataGrip](https://www.jetbrains.com/datagrip/).
-* **Mobile_Detect `2.x.x`** is only integrating new regexes, User-Agents and tests. We are focusing on **new tablets only**.
-The rest of the PRs about TVs, bots or optimizations will be closed and analyzed after `3.0.0-beta` is released.
-* **Mobile_Detect `3.x.x`** is experimental and WIP.
-
-
-#### Install
-
-**Download and include manually**
-> Use this to quickly test the demo.
-
-* [Download latest release](../../tags)
-* [Mobile_Detect.php](./Mobile_Detect.php)
-
-```php
-require_once "libs/Mobile_Detect.php";
-```
-
-**Install as a [composer package](https://packagist.org/packages/mobiledetect/mobiledetectlib)**
-> Use this method to get continuous updates.
-
-```
-composer require mobiledetect/mobiledetectlib
-```
-or include the dependency in the `composer.json` file:
-```json
-{
- "require": {
- "mobiledetect/mobiledetectlib": "^2.8"
- }
-}
-```
-
-#### Demo
-
-* [:iphone: Live demo!](http://demo.mobiledetect.net)
-* [Code examples](../../wiki/Code-examples)
-
-#### Contribute
-
-*Submit a PR*
-> Submit a pull request but before make sure you read [how to contribute](docs/CONTRIBUTING.md) guide.
-
-*Donate*
-
-|Paypal|
-|------|
-|[Donate :+1:](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=mobiledetectlib%40gmail%2ecom&lc=US&item_name=Mobile%20Detect¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted)|
-
-
-I'm currently paying for hosting and spend a lot of my family time to maintain the project and planning the future releases.
-I would highly appreciate any money donations that will keep the research going.
-
-Special thanks to the community :+1: for donations, JetBrains team for the continuous support and [Dragos Gavrila](https://twitter.com/grafician) who contributed with the logo.
-
-#### Modules, plugins, ports
-> [Submit new module, plugin, port](../../issues/new?title=New%203rd%20party%20module&body=Name,%20Link%20and%20Description%20of%20the%20module.)
-
-:point_right: Keep `Mobile_Detect.php` class in a separate `module` and do NOT include it in your script core because of the high frequency of updates.
-:point_right: When including the class into your `web application` or `module` always use `include_once '../path/to/Mobile_Detect.php` to prevent conflicts.
-
-**JavaScript**
-
-* mobile-detect.js - A [JavaScript port](https://github.com/hgoebl/mobile-detect.js) of Mobile-Detect class. Made by [Heinrich Goebl](https://github.com/hgoebl).
-
-**Varnish Cache**
-
-* [Varnish Mobile Detect](https://github.com/willemk/varnish-mobiletranslate) - Drop-in varnish solution to mobile user
-detection based on the Mobile-Detect library. Made by [willemk](https://github.com/willemk).
-* [mobiledetect2vcl](https://github.com/carlosabalde/mobiledetect2vcl) - Python script to transform the Mobile
-Detect JSON database into an UA-based mobile detection VCL subroutine easily integrable in any Varnish Cache
-configuration. Made by [Carlos Abalde](https://github.com/carlosabalde).
-
-**LUA**
-
-* [mobile-detect.lua](https://github.com/yourpalmark/mobile-detect.lua) is a port of Mobile-Detect to Lua for
-NGINX HTTP servers. Follows closely to mobile-detect.js. Supports all methods that server-side
-mobile-detect.js supports. Fully unit-tested and synced with Travis CI (Build Passing badge included).
-Made by [Mark Walters](https://github.com/yourpalmark).
-
-**PHP**
-
-**WordPress**
-
-* [Mobile Detect for WordPress](https://wordpress.org/plugins/tinywp-mobile-detect/) - WordPress has a built-in function
-(`wp_is_mobile()`) to detect mobile devices. There is (at least) one catch, though. It considers iPad (iPad pro,
-and any tablet) as a mobile. So, this 3rd party module changes the way `wp_is_mobile()` works with the help of
-Mobile Detect PHP library!
-Made by [Pothi Kalimuthu](https://github.com/pothi)
-
-* [WordPress Mobile Detect](https://wordpress.org/plugins/wp-mobile-detect/) - Gives you the ability to wrap that
-infographic in a `[notdevice][/notdevice]` shortcode so at the server level WordPress will
-decide to show that content only if the user is NOT on a phone or tablet.
-Made by [Jesse Friedman](https://profiles.wordpress.org/professor44/).
-
-* [mobble](https://wordpress.org/plugins/mobble/) - provides mobile related conditional functions for your site.
-e.g. `is_iphone()`, `is_mobile()` and `is_tablet()`. Made by Scott Evans.
-
-* [WordPress Responsage](https://github.com/iamspacehead/responsage) - A small WordPress theme plugin that allows
-you to make your images responsive. Made by [Adrian Ciaschetti](https://github.com/iamspacehead).
-
-* [WP247 Body Classes](https://wordpress.org/plugins/wp247-body-classes/) - Add unique classes to the `body` tag for
-easy styling based on various attributes (archive, user, post, mobile) and various WordPress "is" functions.
-Mobile attributes include type of device, Operating System, Browser, etc. Examples: .is-mobile, .is-not-mobile,
-.is-tablet, .is-ios, .is-not-ios, .is-androidos, .is-chromebrowser.
-Made by [wescleveland56](https://github.com/wescleveland56).
-
-* [Adaptive Content](https://wordpress.org/plugins/addfunc-adaptive-content/) for WordPress provides the most
-intuitive set of shortcodes for including/excluding content on mobile devices, tablets desktops and other
-more specific device parameters. This lightweight plugin lets content writers and theme authors choose when
-WordPress should or shouldn’t show any give content item using shortcodes and quicktags or theme elements using functions.
-Made by [AddFunc](https://profiles.wordpress.org/addfunc).
-
-* [AddFunc Mobile Detect](https://wordpress.org/plugins/addfunc-mobile-detect/) for WordPress redirects
-mobile traffic to your mobile website and, basically, gives you loads of control over your mobile redirects.
-Made by [AddFunc](https://profiles.wordpress.org/addfunc).
-
-**Drupal**
-
-* [Drupal Mobile Switch](https://www.drupal.org/project/mobile_switch) - The Mobile Switch Drupal module provides a
-automatic theme switch functionality for mobile devices, detected by Browscap or Mobile Detect.
-Made by [Siegfried Neumann](https://www.drupal.org/user/45267).
-
-* [Drupal Context Mobile Detect](https://www.drupal.org/project/context_mobile_detect) - This is a Drupal context module
-which integrates Context and PHP Mobile Detect library.
-Created by [Artem Shymko](https://www.drupal.org/user/432492).
-
-* [Drupal Mobile Detect](https://www.drupal.org/project/mobile_detect) - Lightweight mobile detect module for Drupal
- created by [Matthew Donadio](https://www.drupal.org/user/325244).
-
-**Joomla**
-
-* [yagendoo Joomla! Mobile Detection Plugin](http://www.yagendoo.com/en/blog/free-mobile-detection-plugin-for-joomla.html) - Lightweight PHP plugin for Joomla!
-that detects a mobile browser using the Mobile Detect class.
-Made by yagendoo media.
-
-* [User Agent Detector plugin](https://github.com/renekreijveld/UserAgentDetector) - This system plugin detects the user
-agent of your website visitor and sets a session variable accordingly. Based on the user agent, the plugin detects if the
-site is running on a desktop pc, tablet or smartphone. It can also detect if the visitor is a spider bot (search engine).
-Session variable that is set: `ualayout`. Possible values: desktop, tablet, mobile, bot.
-Made by @ReneKreijveld.
-
-**Magento**
-
-* [Magento helper](http://www.magentocommerce.com/magento-connect/catalog/product/view/id/16835/) from Optimise Web enables
-the use of all functions provided by Mobile Detect. Made by [Kathir Vel](http://www.kathirvel.com).
-
-* [Magento 2 Mobile Detect Theme Change](https://github.com/EaDesgin/magento2-mobiledetect) is an extension for Magento 2
-that will change the theme or redirect to a different URL. Also containing a helper to check for the device type.
-
-**PrestaShop**
-
-* [PrestaShop](https://www.prestashop.com) is a free, secure and open source shopping cart platform. Mobile_Detect
-is included in the default package since 1.5.x.
-
-**Laravel**
-
-* [Agent](https://github.com/jenssegers/agent) is a user agent class for Laravel based on Mobile Detect with some
-additional functionality.
-Made by [Jens Segers](https://github.com/jenssegers).
-
-* [Laravel Mobile Detect](https://github.com/riverskies/laravel-mobile-detect) is a package that enables you to use device detection right in your Laravel Blade templates. (Utilises the well-known, constantly updated PHP mobile detection library.)
-Made by [Barnabas Kecskes](https://github.com/barnabaskecskes).
-
-* [BrowserDetect](https://github.com/hisorange/browser-detect) is a browser and mobile detection package, collects
-and wrap together the best user-agent identifiers for Laravel.
-Created by [Varga Zsolt](https://github.com/hisorange).
-
-**Zend Framework**
-
-* [ZF2 Mobile-Detect](https://github.com/neilime/zf2-mobile-detect.git) is a Zend Framework 2 module that provides
-Mobile-Detect features (Mobile_Detect class as a service, helper for views and plugin controllers).
-Made by [neilime](https://github.com/neilime).
-
-* [ZF2 MobileDetectModule](https://github.com/nikolaposa/MobileDetectModule) facilitates integration of a PHP MobileDetect
-class with some ZF2-based application. Has similar idea like the existing ZF2 Mobile-Detect module,
-but differs in initialization and provision routine of the actual Mobile_Detect class.
-Appropriate view helper and controller plugin also have different conceptions.
-Made by [Nikola Posa](https://github.com/nikolaposa).
-
-**Symfony**
-
-* [Symfony2 Mobile Detect Bundle](https://github.com/suncat2000/MobileDetectBundle) is a bundle for detecting mobile devices,
-manage mobile view and redirect to the mobile and tablet version.
-Made by [Nikolay Ivlev](https://github.com/suncat2000).
-
-* [Silex Mobile Detect Service Provider](https://github.com/jbinfo/MobileDetectServiceProvider) is a service provider to
-interact with Mobile detect class methods.
-Made by [Lhassan Baazzi](https://github.com/jbinfo).
-
-**Slim Framework**
-
-* [Slim_Mobile_Detect](https://github.com/zguillez/slim_mobile_detect) implements Mobile_Detect lib for different
-responses write on Slim Framework App.
-
-**ExpressionEngine**
-
-* [EE2 Detect Mobile](https://github.com/garethtdavies/detect-mobile) is a lightweight PHP plugin for EE2 that detects
- a mobile browser using the Mobile Detect class. Made by [Gareth Davies](https://github.com/garethtdavies).
-
-**Yii Framework**
-
-* [Yii Extension](https://github.com/iamsalnikov/MobileDetect) - Mobile detect plugin for Yii framework.
-Made by [Alexey Salnikov](https://github.com/iamsalnikov).
-
-* [Yii Extension](https://github.com/candasm/yii1-mobile-detect-component) - Mobile detect component for Yii framework
-1.x version which supports composer package manager. Made by [Candas Minareci](https://github.com/candasm).
-
-* [Yii2 Device Detect](https://github.com/alexandernst/yii2-device-detect/) - Yii2 extension for Mobile-Detect library.
-Made by [Alexander Nestorov](https://github.com/alexandernst).
-
-**CakePHP**
-
-* [CakePHP MobileDetect](https://github.com/chronon/CakePHP-MobileDetectComponent-Plugin) is a plugin component for
-CakePHP 2.x. Made by [Gregory Gaskill](https://github.com/chronon).
-
-**FuelPHP**
-
-* [Special Agent](https://github.com/rob-bar/special_agent) is a FuelPHP package which uses php-mobile-detect to
-determine whether a device is mobile or not. It overrides the Fuelphp Agent class its methods.
-Made by [Robbie Bardjin](https://github.com/rob-bar).
-
-
-**TYPO3**
-
-* [px_mobiledetect](https://typo3.org/extensions/repository/view/px_mobiledetect) is an extension that helps to detect
-visitor's mobile device class (if that’s tablet or mobile device like smartphone). Made by Alexander Tretyak.
-
-**Other**
-
-* [PageCache](https://github.com/mmamedov/page-cache) is a lightweight PHP library for full page cache,
-with built-in Mobile-Detect support. Made by [Muhammed Mamedov](https://github.com/mmamedov).
-
-* [Statamic CMS Mobile Detect](https://github.com/haikulab/statamic-mobile-detect) is a plugin.
-Made by [Sergei Filippov](https://github.com/haikulab/statamic-mobile-detect) of Haiku Lab.
-
-* [Kohana Mobile Detect](https://github.com/madeinnordeste/kohana-mobile-detect) is an example of implementation of
-Mobile_Detect class with Kohana framework.
-Written by [Luiz Alberto S. Ribeiro](https://github.com/madeinnordeste).
-
-* [MemHT](https://www.memht.com) is a Free PHP CMS and Blog that permit the creation and the management online
-of websites with few and easy steps. Has the class included in the core.
-
-* [concrete5](https://www.concrete5.org) is a CMS that is free and open source. The library is included in the core.
-
-* [engine7](https://github.com/QOXCorp/exengine) is PHP Open Source Framework. The Mobile_Detect class is included in
-the engine.
-
-* [Zikula](http://zikula.org) is a free and open-source Content Management Framework, which allows you to run
-impressive websites and build powerful online applications. The core uses Mobile-Detect to switch to a special
-Mobile theme, using jQueryMobile.
-
-* [UserAgentInfo](https://github.com/quentin389/UserAgentInfo) is a PHP class for parsing user agent strings
-(HTTP_USER_AGENT). Includes mobile checks, bot checks, browser types/versions and more.
-Based on browscap, Mobile_Detect and ua-parser. Created for high traffic websites and fast batch processing.
-Made by [quentin389](https://github.com/quentin389).
-
-* [LJ Mobile Detect](https://github.com/lewisjenkins/craft-lj-mobiledetect) is a simple implementation of Mobile Detect
-for Craft CMS. Made by [Lewis Jenkins](https://github.com/lewisjenkins).
-
-* [Detect Craft](https://github.com/mmikkel/Detect-Craft) is a Craft CMS wrapper for the Mobile_Detect library. Made by [Mikkel Rummelhoff](https://github.com/mmikkel).
-
-* [Grav Plugin Mobile Detect](https://github.com/dimitrilongo/grav-plugin-mobile-detect/) is a simple implementation
-of Mobile Detect for Grav CMS. Made by [Dimitri Longo](https://github.com/dimitrilongo).
-
-* [Mobile_Detect module for UliCMS](https://github.com/derUli/ulicms-Mobile_Detect).
-Made by [derUli](https://github.com/derUli).
-
-**Perl**
-
- * [MobileDetect.pm](https://www.buzzerstar.com/development/) is a Perl module for Mobile Detect.
- Made by [Sebastian Enger](https://devop.tools/).
-
-**Python**
-
-* [pymobiledetect](https://pypi.python.org/pypi/pymobiledetect) - Mobile detect python package.
-Made by Bas van Oostveen.
-
-**Ruby**
-
-* [mobile_detect.rb](https://github.com/ktaragorn/mobile_detect) is a Ruby gem using the JSON data exposed by the
-php project and implementing a basic subset of the API (as much as can be done by the exposed data).
-Made by [Karthik T](https://github.com/ktaragorn).
-
-**Go**
-
-* [GoMobileDetect](https://github.com/Shaked/gomobiledetect) is a Go port of Mobile Detect class.
-Made by [https://github.com/Shaked](Shaked).
-
-
-**LUA**
-
-* [ua-lua](https://github.com/robinef/ua-lua) is a small lib written in LUA providing device type detection.
-ua-lua is detecting mobile or tablet devices based on user-agent inside nginx daemon.
-Made by [Frédéric Robinet](https://github.com/robinef).
-
-**.Net**
-
-* [mobile-detect](https://github.com/validide/mobile-detect) is a .Net partial port written in C#.
-Made by [Valentin Dide](https://github.com/validide).
-
-**ColdFusion**
-
-* [MobileDetect](https://github.com/GiancarloGomez/ColdFusion-MobileDetect) is a CFC port of the
-Mobile_Detect PHP Library. Made by [Giancarlo Gomez](https://github.com/GiancarloGomez).
-
-**Experiments** :bulb:
-
-* [Mobile Detect Fast](https://bitbucket.org/lanaguani/mobile-detect-fast/) (See: [#474](https://github.com/serbanghita/Mobile-Detect/issues/474)) is a class to increase the performance of Mobile Detect lib. Made by [LanaGuani](https://github.com/lanaguanifw).
diff --git a/vendor/mobiledetect/mobiledetectlib/composer.json b/vendor/mobiledetect/mobiledetectlib/composer.json
deleted file mode 100644
index 25cd99a37..000000000
--- a/vendor/mobiledetect/mobiledetectlib/composer.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "name": "mobiledetect/mobiledetectlib",
- "type": "library",
- "description": "Mobile_Detect is a lightweight PHP class for detecting mobile devices. It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.",
- "keywords": ["mobile", "mobile detect", "mobile detector", "php mobile detect", "detect mobile devices"],
- "homepage": "https://github.com/serbanghita/Mobile-Detect",
- "license": "MIT",
- "authors": [
- {
- "name": "Serban Ghita",
- "email": "serbanghita@gmail.com",
- "homepage": "http://mobiledetect.net",
- "role": "Developer"
- }
- ],
- "require": {
- "php": ">=5.0.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.8.35||~5.7"
- },
- "autoload": {
- "classmap": ["Mobile_Detect.php"],
- "psr-0": {
- "Detection": "namespaced/"
- }
- },
- "archive": {
- "exclude": ["docs", "examples", "export"]
- }
-}
diff --git a/vendor/mobiledetect/mobiledetectlib/composer.lock b/vendor/mobiledetect/mobiledetectlib/composer.lock
deleted file mode 100644
index 2e39472b2..000000000
--- a/vendor/mobiledetect/mobiledetectlib/composer.lock
+++ /dev/null
@@ -1,983 +0,0 @@
-{
- "_readme": [
- "This file locks the dependencies of your project to a known state",
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
- "This file is @generated automatically"
- ],
- "content-hash": "4a5fd4cd7cc7247a6df7411b031d4845",
- "packages": [],
- "packages-dev": [
- {
- "name": "doctrine/instantiator",
- "version": "1.0.5",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/instantiator.git",
- "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
- "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3,<8.0-DEV"
- },
- "require-dev": {
- "athletic/athletic": "~0.1.8",
- "ext-pdo": "*",
- "ext-phar": "*",
- "phpunit/phpunit": "~4.0",
- "squizlabs/php_codesniffer": "~2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com",
- "homepage": "http://ocramius.github.com/"
- }
- ],
- "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
- "homepage": "https://github.com/doctrine/instantiator",
- "keywords": [
- "constructor",
- "instantiate"
- ],
- "time": "2015-06-14T21:17:01+00:00"
- },
- {
- "name": "phpdocumentor/reflection-docblock",
- "version": "2.0.5",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e6a969a640b00d8daa3c66518b0405fb41ae0c4b",
- "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "suggest": {
- "dflydev/markdown": "~1.0",
- "erusev/parsedown": "~1.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "phpDocumentor": [
- "src/"
- ]
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "mike.vanriel@naenius.com"
- }
- ],
- "time": "2016-01-25T08:17:30+00:00"
- },
- {
- "name": "phpspec/prophecy",
- "version": "1.7.3",
- "source": {
- "type": "git",
- "url": "https://github.com/phpspec/prophecy.git",
- "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf",
- "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.0.2",
- "php": "^5.3|^7.0",
- "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
- "sebastian/comparator": "^1.1|^2.0",
- "sebastian/recursion-context": "^1.0|^2.0|^3.0"
- },
- "require-dev": {
- "phpspec/phpspec": "^2.5|^3.2",
- "phpunit/phpunit": "^4.8.35 || ^5.7"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.7.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Prophecy\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Konstantin Kudryashov",
- "email": "ever.zet@gmail.com",
- "homepage": "http://everzet.com"
- },
- {
- "name": "Marcello Duarte",
- "email": "marcello.duarte@gmail.com"
- }
- ],
- "description": "Highly opinionated mocking framework for PHP 5.3+",
- "homepage": "https://github.com/phpspec/prophecy",
- "keywords": [
- "Double",
- "Dummy",
- "fake",
- "mock",
- "spy",
- "stub"
- ],
- "time": "2017-11-24T13:59:53+00:00"
- },
- {
- "name": "phpunit/php-code-coverage",
- "version": "2.2.4",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
- "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "phpunit/php-file-iterator": "~1.3",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-token-stream": "~1.3",
- "sebastian/environment": "^1.3.2",
- "sebastian/version": "~1.0"
- },
- "require-dev": {
- "ext-xdebug": ">=2.1.4",
- "phpunit/phpunit": "~4"
- },
- "suggest": {
- "ext-dom": "*",
- "ext-xdebug": ">=2.2.1",
- "ext-xmlwriter": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.2.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
- "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
- "keywords": [
- "coverage",
- "testing",
- "xunit"
- ],
- "time": "2015-10-06T15:47:00+00:00"
- },
- {
- "name": "phpunit/php-file-iterator",
- "version": "1.4.5",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
- "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "FilterIterator implementation that filters files based on a list of suffixes.",
- "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
- "keywords": [
- "filesystem",
- "iterator"
- ],
- "time": "2017-11-27T13:52:08+00:00"
- },
- {
- "name": "phpunit/php-text-template",
- "version": "1.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Simple template engine.",
- "homepage": "https://github.com/sebastianbergmann/php-text-template/",
- "keywords": [
- "template"
- ],
- "time": "2015-06-21T13:50:34+00:00"
- },
- {
- "name": "phpunit/php-timer",
- "version": "1.0.9",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
- "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
- "shasum": ""
- },
- "require": {
- "php": "^5.3.3 || ^7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Utility class for timing",
- "homepage": "https://github.com/sebastianbergmann/php-timer/",
- "keywords": [
- "timer"
- ],
- "time": "2017-02-26T11:10:40+00:00"
- },
- {
- "name": "phpunit/php-token-stream",
- "version": "1.4.12",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-token-stream.git",
- "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16",
- "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16",
- "shasum": ""
- },
- "require": {
- "ext-tokenizer": "*",
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Wrapper around PHP's tokenizer extension.",
- "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
- "keywords": [
- "tokenizer"
- ],
- "time": "2017-12-04T08:55:13+00:00"
- },
- {
- "name": "phpunit/phpunit",
- "version": "4.8.36",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "46023de9a91eec7dfb06cc56cb4e260017298517"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517",
- "reference": "46023de9a91eec7dfb06cc56cb4e260017298517",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-json": "*",
- "ext-pcre": "*",
- "ext-reflection": "*",
- "ext-spl": "*",
- "php": ">=5.3.3",
- "phpspec/prophecy": "^1.3.1",
- "phpunit/php-code-coverage": "~2.1",
- "phpunit/php-file-iterator": "~1.4",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-timer": "^1.0.6",
- "phpunit/phpunit-mock-objects": "~2.3",
- "sebastian/comparator": "~1.2.2",
- "sebastian/diff": "~1.2",
- "sebastian/environment": "~1.3",
- "sebastian/exporter": "~1.2",
- "sebastian/global-state": "~1.0",
- "sebastian/version": "~1.0",
- "symfony/yaml": "~2.1|~3.0"
- },
- "suggest": {
- "phpunit/php-invoker": "~1.1"
- },
- "bin": [
- "phpunit"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.8.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "The PHP Unit Testing framework.",
- "homepage": "https://phpunit.de/",
- "keywords": [
- "phpunit",
- "testing",
- "xunit"
- ],
- "time": "2017-06-21T08:07:12+00:00"
- },
- {
- "name": "phpunit/phpunit-mock-objects",
- "version": "2.3.8",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
- "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
- "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.0.2",
- "php": ">=5.3.3",
- "phpunit/php-text-template": "~1.2",
- "sebastian/exporter": "~1.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "suggest": {
- "ext-soap": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
- }
- ],
- "description": "Mock Object library for PHPUnit",
- "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
- "keywords": [
- "mock",
- "xunit"
- ],
- "time": "2015-10-02T06:51:40+00:00"
- },
- {
- "name": "sebastian/comparator",
- "version": "1.2.4",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
- "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "sebastian/diff": "~1.2",
- "sebastian/exporter": "~1.2 || ~2.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@2bepublished.at"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Provides the functionality to compare PHP values for equality",
- "homepage": "http://www.github.com/sebastianbergmann/comparator",
- "keywords": [
- "comparator",
- "compare",
- "equality"
- ],
- "time": "2017-01-29T09:50:25+00:00"
- },
- {
- "name": "sebastian/diff",
- "version": "1.4.3",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
- "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
- "shasum": ""
- },
- "require": {
- "php": "^5.3.3 || ^7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.4-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Kore Nordmann",
- "email": "mail@kore-nordmann.de"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Diff implementation",
- "homepage": "https://github.com/sebastianbergmann/diff",
- "keywords": [
- "diff"
- ],
- "time": "2017-05-22T07:24:03+00:00"
- },
- {
- "name": "sebastian/environment",
- "version": "1.3.8",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea",
- "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea",
- "shasum": ""
- },
- "require": {
- "php": "^5.3.3 || ^7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8 || ^5.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Provides functionality to handle HHVM/PHP environments",
- "homepage": "http://www.github.com/sebastianbergmann/environment",
- "keywords": [
- "Xdebug",
- "environment",
- "hhvm"
- ],
- "time": "2016-08-18T05:49:44+00:00"
- },
- {
- "name": "sebastian/exporter",
- "version": "1.2.2",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4",
- "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "sebastian/recursion-context": "~1.0"
- },
- "require-dev": {
- "ext-mbstring": "*",
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@2bepublished.at"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
- }
- ],
- "description": "Provides the functionality to export PHP variables for visualization",
- "homepage": "http://www.github.com/sebastianbergmann/exporter",
- "keywords": [
- "export",
- "exporter"
- ],
- "time": "2016-06-17T09:04:28+00:00"
- },
- {
- "name": "sebastian/global-state",
- "version": "1.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
- "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.2"
- },
- "suggest": {
- "ext-uopz": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Snapshotting of global state",
- "homepage": "http://www.github.com/sebastianbergmann/global-state",
- "keywords": [
- "global state"
- ],
- "time": "2015-10-12T03:26:01+00:00"
- },
- {
- "name": "sebastian/recursion-context",
- "version": "1.0.5",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
- "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
- }
- ],
- "description": "Provides functionality to recursively process PHP variables",
- "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
- "time": "2016-10-03T07:41:43+00:00"
- },
- {
- "name": "sebastian/version",
- "version": "1.0.6",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/version.git",
- "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
- "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
- "shasum": ""
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Library that helps with managing the version number of Git-hosted PHP projects",
- "homepage": "https://github.com/sebastianbergmann/version",
- "time": "2015-06-21T13:59:46+00:00"
- },
- {
- "name": "symfony/yaml",
- "version": "v2.8.32",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "968ef42161e4bc04200119da473077f9e7015128"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/968ef42161e4bc04200119da473077f9e7015128",
- "reference": "968ef42161e4bc04200119da473077f9e7015128",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.8-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Yaml\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Yaml Component",
- "homepage": "https://symfony.com",
- "time": "2017-11-29T09:33:18+00:00"
- }
- ],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": [],
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": {
- "php": ">=5.0.0"
- },
- "platform-dev": []
-}
diff --git a/vendor/mobiledetect/mobiledetectlib/docker-compose.yml b/vendor/mobiledetect/mobiledetectlib/docker-compose.yml
deleted file mode 100644
index 58ce75e87..000000000
--- a/vendor/mobiledetect/mobiledetectlib/docker-compose.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-app:
- restart: 'on-failure'
- image: php:7
- working_dir: /app
- command: vendor/bin/phpunit -v -c tests/phpunit.xml --coverage-text --strict-coverage --stop-on-risky
- ports:
- - "8000:8000"
- volumes:
- - .:/app
-
-composer:
- restart: 'no'
- image: composer/composer:php7
- command: install
- volumes:
- - .:/app
\ No newline at end of file
diff --git a/vendor/mobiledetect/mobiledetectlib/docs/CONTRIBUTING.md b/vendor/mobiledetect/mobiledetectlib/docs/CONTRIBUTING.md
deleted file mode 100644
index 01a266ed8..000000000
--- a/vendor/mobiledetect/mobiledetectlib/docs/CONTRIBUTING.md
+++ /dev/null
@@ -1,48 +0,0 @@
-**Reporting issues**
-
-1. Specify the User-agent by visiting [http://demo.mobiledetect.net](http://demo.mobiledetect.net).
-1. Specify the expected behaviour.
-
-**Developing**
-
-1. Fork Mobile Detect repository. See ["How to fork"](https://help.github.com/articles/fork-a-repo/#fork-an-example-repository) example.
-1. `git clone https://github.com/[yourname]/Mobile-Detect.git`
-1. `git add remote serbanghita https://github.com/serbanghita/Mobile-Detect.git`
-1. `git remote -v` - You should see:
- ```
- origin git@github.com:serbanghita/Mobile-Detect.git
- serbanghita https://github.com/serbanghita/Mobile-Detect.git
- ```
-1. `git checkout -b devel origin/devel`
-1. `composer install`
-1. Start working on your changes.
- 1. If you add new methods or make structural changes to the `Mobile_Detect.php` class
- you need to add unit tests!
- 1. If you add new regexes make sure you commit the User-Agents in [`tests/providers/vendors`](https://github.com/serbanghita/Mobile-Detect/tree/master/tests/providers/vendors)
-1. Run tests `vendor/bin/phpunit -v -c tests/phpunit.xml --coverage-text --strict-coverage --stop-on-risky`
-1. `git status` or `git diff` - inspect your changes
-1 `git stage .`
-1. `git commit -m "[your commit message here]`
-1. `git push origin devel`
-1. Go to your repo on GitHub and ["Submit the PR"](https://help.github.com/articles/about-pull-requests/)
-
-**New module, plugin, plugin or port**
-
-[Submit new module, plugin, port](../../issues/new?title=New%203rd%20party%20module&body=Name,%20Link%20and%20Description%20of%20the%20module.)
- including the following information:
-* Module name
-* Description
-* Link
-* Author
-
-Or you can submit a PR against `README.md`.
-
-**Website updates**
-
-1. Our official website is hosted at [http://mobiledetect.net](http://mobiledetect.net).
-1. The files are found on the `gh-pages` branch.
-1. `git checkout gh-pages`
-1. `npm install -g browser-sync`
-1. `browser-sync start --s . --f . --port 3000 --reload-debounce 1500 --no-ui`
-1. Go to `http://localhost:3000` and make changes.
-1. Commit, push and submit the PR against `serbanghita:gh-pages`.
\ No newline at end of file
diff --git a/vendor/mobiledetect/mobiledetectlib/docs/HISTORY.md b/vendor/mobiledetect/mobiledetectlib/docs/HISTORY.md
deleted file mode 100644
index 348398525..000000000
--- a/vendor/mobiledetect/mobiledetectlib/docs/HISTORY.md
+++ /dev/null
@@ -1,11 +0,0 @@
-The first version of the script was developed in 2009 and it was hosted at https://code.google.com/p/php-mobile-detect/, it was a small project with around 30 stars. (Original blog post by Victor: http://victorstanciu.ro/detectarea-platformelor-mobile-in-php/)
-
-In December 2011 it received a major update from the first version, an important number of issues were fixed, then 2.0 was launched. The new version marks a new mindset and also featuring tablet detection.
-
-Throughout 2012 the script has been updated constantly and we have received tons of feedback and requests.
-
-In July 2012 we moved the repository from Google Code to GitHub in order to quickly accommodate the frequent updates and to involve more people.
-
-In August 2013 the library has 1800+ stargazers and support for: composer, PHPUnit tests, PSR standards and a new webpage http://mobiledetect.net
-
-Mobile Detect library and user contributions are MIT Licensed.
diff --git a/vendor/mobiledetect/mobiledetectlib/docs/ISSUE_TEMPLATE.md b/vendor/mobiledetect/mobiledetectlib/docs/ISSUE_TEMPLATE.md
deleted file mode 100644
index 8d6384fce..000000000
--- a/vendor/mobiledetect/mobiledetectlib/docs/ISSUE_TEMPLATE.md
+++ /dev/null
@@ -1,15 +0,0 @@
--------------delete this message-------------
-* By submitting a new issue I acknowledge that I already read the README, CODE EXAMPLES and KNOWN LIMITATIONS.
-* I understand that the current version `2.x` is only meant to detect `mobile` devices.
-* Please post your User-Agent string! On a real device/s, the library is expected to work correctly.
--------------delete this message-------------
-
-
-
-**Issue description**
-
-
-**User-Agent(s)**
-
-
-**Suggestions**
\ No newline at end of file
diff --git a/vendor/mobiledetect/mobiledetectlib/docs/KNOWN_LIMITATIONS.md b/vendor/mobiledetect/mobiledetectlib/docs/KNOWN_LIMITATIONS.md
deleted file mode 100644
index 5887092f1..000000000
--- a/vendor/mobiledetect/mobiledetectlib/docs/KNOWN_LIMITATIONS.md
+++ /dev/null
@@ -1,12 +0,0 @@
-**Known limitations**
-
-* Mobile Detect script was designed to detect `mobile` devices. Implicitly other devices are considered to be `desktop`.
-* User-Agent and HTTP headers sniffing is a non reliable method of detecting a mobile device.
-* If the mobile browser is set on `Desktop mode`, the Mobile Detect script has no way of knowing that the device is `mobile`.
-* Some touchscreen devices (eg. Microsoft Surface) are tough to detect as mobile since they can be used in a laptop mode. See: [#32](https://github.com/serbanghita/Mobile-Detect/issues/32), [#461](https://github.com/serbanghita/Mobile-Detect/issues/461), [#667](https://github.com/serbanghita/Mobile-Detect/issues/667)
-* Some mobile devices (eg. IPadOS, Google Pixel Slate). See: [#795](https://github.com/serbanghita/Mobile-Detect/issues/795), [#788](https://github.com/serbanghita/Mobile-Detect/issues/788)
-* Detecting the device brand (eg. Apple, Samsung, HTC) is not 100% reliable.
-* We don't monitor the quality of the 3rd party tools based on Mobile Detect script.
-We cannot guarantee that they are using the class properly or if they provide the latest version.
-* Version `2.x` is made to be PHP 5.3 compatible because of the backward compatibility changes of PHP.
-* There are hundreds of devices launched every month, we cannot keep a 100% up to date detection rate.
\ No newline at end of file
diff --git a/vendor/mobiledetect/mobiledetectlib/export/exportToJSON.php b/vendor/mobiledetect/mobiledetectlib/export/exportToJSON.php
deleted file mode 100644
index e2c72aece..000000000
--- a/vendor/mobiledetect/mobiledetectlib/export/exportToJSON.php
+++ /dev/null
@@ -1,67 +0,0 @@
- $detect->getScriptVersion(),
-
- // All headers that trigger 'isMobile' to be 'true',
- // before reaching the User-Agent match detection.
- 'headerMatch' => $detect->getMobileHeaders(),
-
- // All possible User-Agent headers.
- 'uaHttpHeaders' => $detect->getUaHttpHeaders(),
-
- // All the regexes that trigger 'isMobile' or 'isTablet'
- // to be true.
- 'uaMatch' => array(
- // If match is found, triggers 'isMobile' to be true.
- 'phones' => $detect->getPhoneDevices(),
- // Triggers 'isTablet' to be true.
- 'tablets' => $detect->getTabletDevices(),
- // If match is found, triggers 'isMobile' to be true.
- 'browsers' => $detect->getBrowsers(),
- // If match is found, triggers 'isMobile' to be true.
- 'os' => $detect->getOperatingSystems(),
- // Various utilities. To be further discussed.
- 'utilities' => $detect->getUtilities()
- )
-);
-
-$fileName = dirname(__FILE__).'/../Mobile_Detect.json';
-// Write the JSON file to disk.11
-// You can import this file in your app.
-if (file_put_contents(
- $fileName,
- function_exists('json_format') ? json_format($json) : json_encode($json)
-)) {
- echo 'Done. Check '.realpath($fileName).' file.';
-}
-else {
- echo 'Failed to write '.realpath($fileName).' to disk.';
-}
diff --git a/vendor/mobiledetect/mobiledetectlib/namespaced/Detection/MobileDetect.php b/vendor/mobiledetect/mobiledetectlib/namespaced/Detection/MobileDetect.php
deleted file mode 100644
index ca7efec23..000000000
--- a/vendor/mobiledetect/mobiledetectlib/namespaced/Detection/MobileDetect.php
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
- The PSR-2 coding standard extended.
-
-
-
-
-
-
-
-
-
- error
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/vendor/pragmarx/datatables/.gitignore b/vendor/pragmarx/datatables/.gitignore
deleted file mode 100644
index 2c1fc0c14..000000000
--- a/vendor/pragmarx/datatables/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/vendor
-composer.phar
-composer.lock
-.DS_Store
\ No newline at end of file
diff --git a/vendor/pragmarx/datatables/.travis.yml b/vendor/pragmarx/datatables/.travis.yml
deleted file mode 100644
index 099bbe70b..000000000
--- a/vendor/pragmarx/datatables/.travis.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-language: php
-
-php:
- - 5.3
- - 5.4
-
-before_script:
- - curl -s http://getcomposer.org/installer | php
- - php composer.phar install --dev
-
-script: phpunit
\ No newline at end of file
diff --git a/vendor/pragmarx/datatables/README.md b/vendor/pragmarx/datatables/README.md
deleted file mode 100644
index 74cddd7ec..000000000
--- a/vendor/pragmarx/datatables/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-## Datatables Bundle for Laravel 4
-
-###WARNING
-
-Do not use this package directly, use [Bllim](https://github.com/bllim/laravel4-datatables-package) instead.
\ No newline at end of file
diff --git a/vendor/pragmarx/datatables/composer.json b/vendor/pragmarx/datatables/composer.json
deleted file mode 100644
index 15204f023..000000000
--- a/vendor/pragmarx/datatables/composer.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "pragmarx/datatables",
- "description": "Server-side handler of DataTables Jquery Plugin for Laravel 4",
- "keywords" : ["laravel4","laravel","datatables","datatable","datatables jquery plugin"],
- "license": "MIT",
- "authors": [
- {
- "name": "Bilal Gultekin",
- "email": "bilal@bilal.im"
- }
- ],
- "require": {
- "php": ">=5.3.0",
- "illuminate/support": ">=4.0.0",
- "illuminate/database": ">=4.0.0",
- "illuminate/view": ">=4.0.0",
- "illuminate/filesystem": ">=4.0.0"
- },
- "require-dev": {
- "laravel/laravel": ">=4.0.0",
- "mockery/mockery": "0.7.2",
- "phpunit/phpunit": "3.7.*"
- },
- "autoload": {
- "classmap": [
- "src/migrations"
- ],
- "psr-0": {
- "Bllim\\Datatables": "src/"
- }
- }
-}
diff --git a/vendor/pragmarx/datatables/phpunit.xml b/vendor/pragmarx/datatables/phpunit.xml
deleted file mode 100644
index 9ddf60835..000000000
--- a/vendor/pragmarx/datatables/phpunit.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- ./tests/
-
-
-
\ No newline at end of file
diff --git a/vendor/pragmarx/datatables/public/.gitkeep b/vendor/pragmarx/datatables/public/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/vendor/pragmarx/datatables/src/Bllim/Datatables/Datatables.php b/vendor/pragmarx/datatables/src/Bllim/Datatables/Datatables.php
deleted file mode 100644
index 52f9dc268..000000000
--- a/vendor/pragmarx/datatables/src/Bllim/Datatables/Datatables.php
+++ /dev/null
@@ -1,1074 +0,0 @@
-
- */
-
-use Illuminate\Support\Facades\DB;
-use Illuminate\Support\Facades\Input;
-use Illuminate\Support\Facades\Config;
-use Illuminate\Support\Facades\Response;
-use Illuminate\Support\Arr;
-use Illuminate\Support\Str;
-use Illuminate\View\Compilers\BladeCompiler;
-use Illuminate\Filesystem\Filesystem;
-
-class Datatables
-{
- /**
- * @var \Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $query
- */
- public $query;
-
- /**
- * @var string $query_type 'eloquent' | 'fluent'
- */
- protected $query_type;
-
- protected $added_columns = array();
- protected $removed_columns = array();
- protected $edit_columns = array();
- protected $filter_columns = array();
- protected $sColumns = array();
-
- public $columns = array();
- public $aliased_ordered_columns = array();
-
- protected $count_all = 0;
- protected $display_all = 0;
-
- protected $result_object;
- protected $result_array = array();
- protected $result_array_return = array();
-
- protected $input = array();
- protected $mDataSupport; //previous support included only returning columns as object with key names
- protected $dataFullSupport; //new support that better implements dot notation without reliance on name column
-
- protected $index_column;
- protected $row_class_tmpl = null;
- protected $row_data_tmpls = array();
-
-
- /**
- * Read Input into $this->input according to jquery.dataTables.js version
- *
- */
- public function __construct()
- {
-
- $this->setData($this->processData(Input::get()));
-
- return $this;
- }
-
- /**
- * Will take an input array and return the formatted dataTables data as an array
- *
- * @param array $input
- *
- * @return array
- */
- public function processData($input = [])
- {
- $formatted_input = [];
-
- if (isset($input['draw'])) {
- // DT version 1.10+
-
- $input['version'] = '1.10';
-
- $formatted_input = $input;
-
- } else {
- // DT version < 1.10
-
- $formatted_input['version'] = '1.9';
-
- $formatted_input['draw'] = Arr::get($input, 'sEcho', '');
- $formatted_input['start'] = Arr::get($input, 'iDisplayStart', 0);
- $formatted_input['length'] = Arr::get($input, 'iDisplayLength', 10);
- $formatted_input['search'] = array(
- 'value' => Arr::get($input, 'sSearch', ''),
- 'regex' => Arr::get($input, 'bRegex', ''),
- );
- $formatted_input['_'] = Arr::get($input, '_', '');
-
- $columns = explode(',', Arr::get($input, 'sColumns', ''));
- $formatted_input['columns'] = array();
- for ($i = 0; $i < Arr::get($input, 'iColumns', 0); $i++) {
- $arr = array();
- $arr['name'] = isset($columns[$i]) ? $columns[$i] : '';
- $arr['data'] = Arr::get($input, 'mDataProp_' . $i, '');
- $arr['searchable'] = Arr::get($input, 'bSearchable_' . $i, '');
- $arr['search'] = array();
- $arr['search']['value'] = Arr::get($input, 'sSearch_' . $i, '');
- $arr['search']['regex'] = Arr::get($input, 'bRegex_' . $i, '');
- $arr['orderable'] = Arr::get($input, 'bSortable_' . $i, '');
- $formatted_input['columns'][] = $arr;
- }
-
- $formatted_input['order'] = array();
- for ($i = 0; $i < Arr::get($input, 'iSortingCols', 0); $i++) {
- $arr = array();
- $arr['column'] = Arr::get($input, 'iSortCol_' . $i, '');
- $arr['dir'] = Arr::get($input, 'sSortDir_' . $i, '');
- $formatted_input['order'][] = $arr;
- }
- }
-
- return $formatted_input;
- }
-
- /**
- * @return array $this->input
- */
- public function getData()
- {
- return $this->input;
- }
-
- /**
- * Sets input data.
- * Can be used when not wanting to use default Input data.
- *
- * @param array $data
- */
- public function setData($data)
- {
- $this->input = $data;
- }
-
- /**
- * Gets query and returns instance of class
- *
- * @param \Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $query
- * @param null $dataFullSupport
- *
- * @return Datatables
- */
- public static function of($query, $dataFullSupport = null)
- {
- $ins = new static;
- $ins->dataFullSupport = ($dataFullSupport) ?: Config::get('datatables::dataFullSupport', false);
- $ins->saveQuery($query);
-
- return $ins;
- }
-
- /**
- * Organizes works
- *
- * @param bool $mDataSupport
- * @param bool $raw
- *
- * @return array|json
- */
- public function make($mDataSupport = false, $raw = false)
- {
- $this->mDataSupport = $mDataSupport;
- $this->createAliasedOrderedColumns();
- $this->prepareQuery();
- $this->getResult();
- $this->modifyColumns();
- $this->regulateArray();
-
- return $this->output($raw);
- }
-
- /**
- * Gets results from prepared query
- *
- * @return null
- */
- protected function getResult()
- {
- if ($this->query_type == 'eloquent') {
- $this->result_object = $this->query->get();
- $this->result_array = $this->result_object->toArray();
- } else {
- $this->result_object = $this->query->get();
- $this->result_array = array_map(function ($object) {
- return (array)$object;
- }, $this->result_object);
- }
-
- if ($this->dataFullSupport) {
- $walk = function ($value, $key, $prefix = null) use (&$walk, &$result_array) {
- $key = (!is_null($prefix)) ? ($prefix . "." . $key) : $key;
- if (is_array($value)) {
- array_walk($value, $walk, $key);
- } else {
- $result_array = Arr::add($result_array, $key, $value);
- }
- };
-
- $result_array = array();
- array_walk($this->result_array, $walk);
- $this->result_array = $result_array;
-
- }
-
- }
-
- /**
- * Prepares variables according to Datatables parameters
- *
- * @return null
- */
- protected function prepareQuery()
- {
- $this->count('count_all'); //Total records
- $this->filtering();
- $this->count('display_all'); // Filtered records
- $this->paging();
- $this->ordering();
- }
-
- /**
- * Adds additional columns to added_columns
- *
- * @param string $name
- * @param string|callable $content
- * @param bool $order
- *
- * @return $this
- */
- public function addColumn($name, $content, $order = false)
- {
- $this->sColumns[] = $name;
-
- $this->added_columns[] = array('name' => $name, 'content' => $content, 'order' => $order);
-
- return $this;
- }
-
- /**
- * Adds column names to edit_columns
- *
- * @param string $name
- * @param string|callable $content
- *
- * @return $this
- */
- public function editColumn($name, $content)
- {
- $this->edit_columns[] = array('name' => $name, 'content' => $content);
-
- return $this;
- }
-
-
- /**
- * This will remove the columns from the returned data. It will also cause it to skip any filters for those removed columns.
- * Adds a list of columns to removed_columns
- *
- * @params strings ...,... As many individual string parameters matching column names
- *
- * @return $this
- */
- public function removeColumn()
- {
- $names = func_get_args();
- $this->removed_columns = array_merge($this->removed_columns, $names);
-
- return $this;
- }
-
- /**
- * The filtered columns will add query sql options for the specified columns
- * Adds column filter to filter_columns
- *
- * @param string $column
- * @param string $method
- * @param mixed ...,... All the individual parameters required for specified $method
- *
- * @return $this
- */
- public function filterColumn($column, $method)
- {
- $params = func_get_args();
- $this->filter_columns[$column] = array('method' => $method, 'parameters' => array_splice($params, 2));
-
- return $this;
- }
-
-
- /**
- * Sets the DT_RowID for the DataTables index column (as used to set, e.g., id of the tags) to the named column
- * If the index matches a column, then that column value will be set as the id of th
.
- * If the index doesn't, it will be parsed as either a callback or blade template and that returned value will be the
- * id of the
- *
- * @param string $name
- *
- * @return $this
- */
- public function setIndexColumn($name)
- {
- $this->index_column = $name;
-
- return $this;
- }
-
- /**
- * Sets DT_RowClass template
- * result:
- *
- * @param string|callable $content
- *
- * @return $this
- */
- public function setRowClass($content)
- {
- $this->row_class_tmpl = $content;
-
- return $this;
- }
-
- /**
- * Sets DT_RowData template for given attribute name
- * result: Datatables invoking $(row).data(name, output_from_your_template)
- *
- * @param string $name
- * @param string|callable $content
- *
- * @return $this
- */
- public function setRowData($name, $content)
- {
- $this->row_data_tmpls[$name] = $content;
-
- return $this;
- }
-
- /**
- * Saves given query and determines its type
- *
- * @param \Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder $query
- *
- * @return null
- */
- protected function saveQuery($query)
- {
- $this->query = $query;
- $this->query_type = $query instanceof \Illuminate\Database\Query\Builder ? 'fluent' : 'eloquent';
- if ($this->dataFullSupport) {
- if ($this->query_type == 'eloquent') {
- $this->columns = array_map(function ($column) {
- return trim(DB::connection()->getPdo()->quote($column['data']), "'");
- }, $this->input['columns']);
- } else {
- $this->columns = ($this->query->columns ?: array());
- }
- } else {
- $this->columns = $this->query_type == 'eloquent' ? ($this->query->getQuery()->columns ?: array()) : ($this->query->columns ?: array());
- }
- }
-
- /**
- * Places extra columns
- *
- * @return null
- */
- protected function modifyColumns()
- {
- foreach ($this->result_array as $rkey => &$rvalue) {
- foreach ($this->added_columns as $key => $value) {
- $value['content'] = $this->getContent($value['content'], $rvalue, $this->result_object[$rkey]);
-
- if ($this->dataFullSupport) {
- Arr::set($rvalue, $value['name'], $value['content']);
- } else {
- $rvalue = $this->includeInArray($value, $rvalue);
- }
- }
-
- foreach ($this->edit_columns as $key => $value) {
- $value['content'] = $this->getContent($value['content'], $rvalue, $this->result_object[$rkey]);
-
- if ($this->dataFullSupport) {
- Arr::set($rvalue, $value['name'], $value['content']);
- } else {
- $rvalue[$value['name']] = $value['content'];
- }
- }
- }
- }
-
- /**
- * Converts result_array number indexed array and consider excess columns
- *
- * @return null
- * @throws \Exception
- */
- protected function regulateArray()
- {
- foreach ($this->result_array as $key => $value) {
- foreach ($this->removed_columns as $remove_col_name) {
- if ($this->dataFullSupport) {
- Arr::forget($value, $remove_col_name);
- } else {
- unset($value[$remove_col_name]);
- }
- }
-
- if ($this->mDataSupport || $this->dataFullSupport) {
- $row = $value;
- } else {
- $row = array_values($value);
- }
-
- if ($this->index_column !== null) {
- if (array_key_exists($this->index_column, $value)) {
- $row['DT_RowId'] = $value[$this->index_column];
- } else {
- $row['DT_RowId'] = $this->getContent($this->index_column, $value, $this->result_object[$key]);
- }
- }
-
- if ($this->row_class_tmpl !== null) {
- $row['DT_RowClass'] = $this->getContent($this->row_class_tmpl, $value, $this->result_object[$key]);
- }
-
- if (count($this->row_data_tmpls)) {
- $row['DT_RowData'] = array();
- foreach ($this->row_data_tmpls as $tkey => $tvalue) {
- $row['DT_RowData'][$tkey] = $this->getContent($tvalue, $value, $this->result_object[$key]);
- }
- }
-
- $this->result_array_return[] = $row;
- }
- }
-
- /**
- *
- * Inject searched string into $1 in filter_column parameters
- *
- * @param array|callable|string|Expression &$params
- * @param string $value
- *
- * @return array
- */
- private function injectVariable(&$params, $value)
- {
- if (is_array($params)) {
- foreach ($params as $key => $param) {
- $params[$key] = $this->injectVariable($param, $value);
- }
-
- } elseif ($params instanceof \Illuminate\Database\Query\Expression) {
- $params = DB::raw(str_replace('$1', $value, $params));
-
- } elseif (is_callable($params)) {
- $params = $params($value);
-
- } elseif (is_string($params)) {
- $params = str_replace('$1', $value, $params);
- }
-
- return $params;
- }
-
- /**
- * Creates an array which contains published aliased ordered columns in sql with their index
- *
- * Creates an array of column names using column aliases where applicable.
- * If an added column has a particular order number, it will skip that array key #
- * and continue to the next. Leaves dot notation in column names alone.
- *
- * @return null
- */
- protected function createAliasedOrderedColumns()
- {
- $added_columns_indexes = array();
- $aliased_ordered_columns = array();
- $count = 0;
-
- foreach ($this->added_columns as $key => $value) {
- if ($value['order'] === false) {
- continue;
- }
- $added_columns_indexes[] = $value['order'];
- }
-
- for ($i = 0, $c = count($this->columns); $i < $c; $i++) {
-
- if (in_array($this->getColumnName($this->columns[$i]), $this->removed_columns)) {
- continue;
- }
-
- if (in_array($count, $added_columns_indexes)) {
- $count++;
- $i--;
- continue;
- }
-
- // previous regex #^(\S*?)\s+as\s+(\S*?)$# prevented subqueries and functions from being detected as alias
- preg_match('#\s+as\s+(\S*?)$#si', $this->columns[$i], $matches);
- $aliased_ordered_columns[$count] = empty($matches) ? $this->columns[$i] : $matches[1];
- $count++;
- }
-
- $this->aliased_ordered_columns = $aliased_ordered_columns;
- }
-
- /**
- * Determines if content is callable or blade string, processes and returns
- *
- * @param string|callable $content Pre-processed content
- * @param mixed $data data to use with blade template
- * @param mixed $param parameter to call with callable
- *
- * @return string Processed content
- */
- protected function getContent($content, $data = null, $param = null)
- {
- if (is_string($content)) {
- $return = $this->blader($content, $data);
- } elseif (is_callable($content)) {
- $return = $content($param);
- } else {
- $return = $content;
- }
-
- return $return;
- }
-
- /**
- * Parses and compiles strings by using Blade Template System
- *
- * @param string $str
- * @param array $data
- *
- * @return string
- * @throws \Exception
- */
- protected function blader($str, $data = array())
- {
- $empty_filesystem_instance = new Filesystem;
- $blade = new BladeCompiler($empty_filesystem_instance, 'datatables');
- $parsed_string = $blade->compileString($str);
-
- ob_start() and extract($data, EXTR_SKIP);
-
- try {
- eval('?>' . $parsed_string);
- }
- catch (\Exception $e) {
- ob_end_clean();
- throw $e;
- }
-
- $str = ob_get_contents();
- ob_end_clean();
-
- return $str;
- }
-
- /**
- * Places item of extra columns into result_array by care of their order
- * Only necessary if not using mData
- *
- * @param array $item
- * @param array $array
- *
- * @return null
- */
- protected function includeInArray($item, $array)
- {
- if ($item['order'] === false) {
- return array_merge($array, array($item['name'] => $item['content']));
- } else {
- $count = 0;
- $last = $array;
- $first = array();
-
- if (count($array) <= $item['order']) {
- return $array + array($item['name'] => $item['content']);
- }
-
- foreach ($array as $key => $value) {
- if ($count == $item['order']) {
- return array_merge($first, array($item['name'] => $item['content']), $last);
- }
-
- unset($last[$key]);
- $first[$key] = $value;
-
- $count++;
- }
- }
- }
-
- /**
- * Datatable paging
- *
- * @return null
- */
- protected function paging()
- {
- if (!is_null($this->input['start']) && !is_null($this->input['length']) && $this->input['length'] != -1) {
- $this->query->skip($this->input['start'])->take((int)$this->input['length'] > 0 ? $this->input['length'] : 10);
- }
- }
-
- /**
- * Datatable ordering
- *
- * @return null
- */
- protected function ordering()
- {
- if (array_key_exists('order', $this->input) && count($this->input['order']) > 0) {
- $columns = $this->cleanColumns($this->aliased_ordered_columns);
-
- for ($i = 0, $c = count($this->input['order']); $i < $c; $i++) {
- $order_col = (int)$this->input['order'][$i]['column'];
- if (isset($columns[$order_col])) {
- if ($this->input['columns'][$order_col]['orderable'] == "true") {
- $this->query->orderBy($columns[$order_col], $this->input['order'][$i]['dir']);
- }
- }
- }
-
- }
- }
-
- /**
- * @param array $cols
- * @param bool $use_alias weather to get the column/function or the alias
- *
- * @return array
- */
- protected function cleanColumns($cols, $use_alias = true)
- {
- $return = array();
- foreach ($cols as $i => $col) {
- preg_match('#^(.*?)\s+as\s+(\S*?)\s*$#si', $col, $matches);
- if (empty($matches)) {
- $return[$i] = $use_alias ? $this->getColumnName($col) : $col;
- } else {
- $return[$i] = $matches[$use_alias ? 2 : 1];
- }
-
- }
-
- return $return;
- }
-
- /**
- * Datatable filtering
- *
- * @return null
- */
- protected function filtering()
- {
-
- // copy of $this->columns without columns removed by remove_column
- $columns_not_removed = $this->columns;
- for ($i = 0, $c = count($columns_not_removed); $i < $c; $i++) {
- if (in_array($this->getColumnName($columns_not_removed[$i]), $this->removed_columns)) {
- unset($columns_not_removed[$i]);
- }
- }
-
- //reindex keys if columns were removed
- $columns_not_removed = array_values($columns_not_removed);
-
- // copy of $this->columns cleaned for database queries
- $column_names = $this->cleanColumns($columns_not_removed, false);
- $column_aliases = $this->cleanColumns($columns_not_removed, !$this->dataFullSupport);
-
- // global search
- if ($this->input['search']['value'] != '') {
- $that = $this;
-
- $this->query->where(function ($query) use (&$that, $column_aliases, $column_names) {
-
- for ($i = 0, $c = count($that->input['columns']); $i < $c; $i++) {
- if (isset($column_aliases[$i]) && $that->input['columns'][$i]['searchable'] == "true") {
-
- // if filter column exists for this columns then use user defined method
- if (isset($that->filter_columns[$column_aliases[$i]])) {
-
- $filter = $that->filter_columns[$column_aliases[$i]];
-
- // check if "or" equivalent exists for given function
- // and if the number of parameters given is not excess
- // than call the "or" equivalent
-
- $method_name = 'or' . ucfirst($filter['method']);
-
- if (method_exists($query->getQuery(), $method_name)
- && count($filter['parameters']) <= with(new \ReflectionMethod($query->getQuery(), $method_name))->getNumberOfParameters()
- ) {
-
- if (isset($filter['parameters'][1])
- && strtoupper(trim($filter['parameters'][1])) == "LIKE"
- ) {
- $keyword = $that->formatKeyword($that->input['search']['value']);
- } else {
- $keyword = $that->input['search']['value'];
- }
-
- call_user_func_array(
- array(
- $query,
- $method_name
- ),
- $that->injectVariable(
- $filter['parameters'],
- $keyword
- )
- );
- }
-
- } else {
- // otherwise do simple LIKE search
-
- $keyword = $that->formatKeyword($that->input['search']['value']);
-
- // Check if the database driver is PostgreSQL
- // If it is, cast the current column to TEXT datatype
- $cast_begin = null;
- $cast_end = null;
- if ($this->databaseDriver() === 'pgsql') {
- $cast_begin = "CAST(";
- $cast_end = " as TEXT)";
- }
-
- //there's no need to put the prefix unless the column name is prefixed with the table name.
- $column = $this->prefixColumn($column_names[$i]);
-
- if (Config::get('datatables::search.case_insensitive', false)) {
- $query->orwhere(DB::raw('LOWER(' . $cast_begin . $column . $cast_end . ')'), 'LIKE', Str::lower($keyword));
- } else {
- $query->orwhere(DB::raw($cast_begin . $column . $cast_end), 'LIKE', $keyword);
- }
- }
-
- }
- }
- });
-
- }
-
- // column search
- for ($i = 0, $c = count($this->input['columns']); $i < $c; $i++) {
- if (isset($column_aliases[$i]) && $this->input['columns'][$i]['searchable'] == "true" && $this->input['columns'][$i]['search']['value'] != '') {
- // if filter column exists for this columns then use user defined method
- if (isset($this->filter_columns[$column_aliases[$i]])) {
-
- $filter = $this->filter_columns[$column_aliases[$i]];
-
- if (isset($filter['parameters'][1])
- && strtoupper(trim($filter['parameters'][1])) == "LIKE"
- ) {
- $keyword = $this->formatKeyword($this->input['columns'][$i]['search']['value']);
- } else {
- $keyword = $this->input['columns'][$i]['search']['value'];
- }
-
-
- call_user_func_array(
- array(
- $this->query,
- $filter['method']
- ),
- $this->injectVariable(
- $filter['parameters'],
- $keyword
- )
- );
-
- } else // otherwise do simple LIKE search
- {
-
- $keyword = $this->formatKeyword($this->input['columns'][$i]['search']['value']);
-
- //there's no need to put the prefix unless the column name is prefixed with the table name.
- $column = $this->prefixColumn($column_names[$i]);
-
- if (Config::get('datatables::search.case_insensitive', false)) {
- $this->query->where(DB::raw('LOWER(' . $column . ')'), 'LIKE', Str::lower($keyword));
- } else {
- //note: so, when would a ( be in the columns? It will break a select if that's put in the columns
- //without a DB::raw. It could get there in filter columns, but it wouldn't be delt with here.
- //why is it searching for ( ?
- $col = strstr($column_names[$i], '(') ? DB::raw($column) : $column;
- $this->query->where($col, 'LIKE', $keyword);
- }
- }
- }
- }
- }
-
- /**
- * This will format the keyword as needed for "LIKE" based on config settings
- * If $value already has %, it doesn't motify and just returns the value.
- *
- * @param string $value
- *
- * @return string
- */
- public function formatKeyword($value)
- {
- if (strpos($value, '%') !== false) {
- return $value;
- }
-
- if (Config::get('datatables::search.use_wildcards', false)) {
- $keyword = '%' . $this->formatWildcard($value) . '%';
- } else {
- $keyword = '%' . trim($value) . '%';
- }
-
- return $keyword;
- }
-
- /**
- * Adds % wildcards to the given string
- *
- * @param $str
- * @param bool $lowercase
- *
- * @return string
- */
- public function formatWildcard($str, $lowercase = true)
- {
- if ($lowercase) {
- $str = lowercase($str);
- }
-
- return preg_replace('\s+', '%', $str);
- }
-
- /**
- * Returns current database prefix
- *
- * @return string
- */
- public function databasePrefix()
- {
- if ($this->query_type == 'eloquent') {
- $query = $this->query->getQuery();
- } else {
- $query = $this->query;
- }
- return $query->getGrammar()->getTablePrefix();
- //return Config::get('database.connections.' . Config::get('database.default') . '.prefix', '');
- }
-
- /**
- * Returns current database driver
- */
- protected function databaseDriver()
- {
- if ($this->query_type == 'eloquent') {
- $query = $this->query->getQuery();
- } else {
- $query = $this->query;
- }
- return $query->getConnection()->getDriverName();
- }
-
- /**
- * Will prefix column if needed
- *
- * @param string $column
- * @return string
- */
- protected function prefixColumn($column)
- {
-// $query = ($this->query_type == 'eloquent') ? $this->query->getQuery() : $this->query;
-// return $query->getGrammar()->wrap($column);
-
- $table_names = $this->tableNames();
- if (count(array_filter($table_names, function($value) use (&$column) { return strpos($column, $value.".") === 0; }))) {
- //the column starts with one of the table names
- $column = $this->databasePrefix() . $column;
- }
- return $column;
- }
-
- /**
- * Will look through the query and all it's joins to determine the table names
- *
- * @return array
- */
- protected function tableNames()
- {
- $names = [];
-
- $query = ($this->query_type == 'eloquent') ? $this->query->getQuery() : $this->query;
-
- $names[] = $query->from;
- $joins = $query->joins?:array();
- $databasePrefix = $this->databasePrefix();
- foreach ($joins as $join) {
- $table = preg_split("/ as /i", $join->table);
- $names[] = $table[0];
- if (isset($table[1]) && !empty($databasePrefix) && strpos($table[1], $databasePrefix) == 0) {
- $names[] = preg_replace('/^'.$databasePrefix.'/', '', $table[1]);
- }
- }
-
- return $names;
-
- }
-
- /**
- * Counts current query
- *
- * @param string $count variable to store to 'count_all' for iTotalRecords, 'display_all' for iTotalDisplayRecords
- *
- * @return null
- */
- protected function count($count = 'count_all')
- {
-
- //Get columns to temp var.
- if ($this->query_type == 'eloquent') {
- $query = $this->query->getQuery();
- $connection = $this->query->getModel()->getConnection()->getName();
- } else {
- $query = $this->query;
- $connection = $query->getConnection()->getName();
- }
-
- // if its a normal query ( no union ) replace the select with static text to improve performance
- $countQuery = clone $query;
- if (!preg_match('/UNION/i', $countQuery->toSql())) {
- $countQuery->select(DB::raw("'1' as `row`"));
-
- // if query has "having" clause add select columns
- if ($countQuery->havings) {
- foreach ($countQuery->havings as $having) {
- if (isset($having['column'])) {
- $countQuery->addSelect($having['column']);
- } else {
- // search filter_columns for query string to get column name from an array key
- $found = false;
- foreach ($this->filter_columns as $column => $filter) {
- if ($filter['parameters'][0] == $having['sql']) {
- $found = $column;
- break;
- }
- }
- // then correct it if it's an alias and add to columns
- if ($found !== false) {
- foreach ($this->columns as $col) {
- $arr = preg_split('/ as /i', $col);
- if (isset($arr[1]) && $arr[1] == $found) {
- $found = $arr[0];
- break;
- }
- }
- $countQuery->addSelect($found);
- }
- }
- }
- }
- }
-
- // Clear the orders, since they are not relevant for count
- $countQuery->orders = null;
-
- $this->$count = DB::connection($connection)
- ->table(DB::raw('(' . $countQuery->toSql() . ') AS count_row_table'))
- ->setBindings($countQuery->getBindings())->count();
-
- }
-
- /**
- * Returns column name from .
- *
- * For processing select statement columns like $query->column data
- *
- * @param string $str
- *
- * @return string
- */
- protected function getColumnName($str)
- {
-
- preg_match('#^(\S*?)\s+as\s+(\S*?)$#si', $str, $matches);
-
- if (!empty($matches)) {
- return $matches[2];
- } elseif (strpos($str, '.')) {
- $array = explode('.', $str);
-
- return array_pop($array);
- }
-
- return $str;
- }
-
- /**
- * Prints output
- *
- * @param bool $raw If raw will output array data, otherwise json
- *
- * @return array|json
- */
- protected function output($raw = false)
- {
- if (Arr::get($this->input, 'version') == '1.10') {
-
- $output = array(
- "draw" => intval($this->input['draw']),
- "recordsTotal" => $this->count_all,
- "recordsFiltered" => $this->display_all,
- "data" => $this->result_array_return,
- );
-
- } else {
-
- $sColumns = array_merge_recursive($this->columns, $this->sColumns);
-
- $output = array(
- "sEcho" => intval($this->input['draw']),
- "iTotalRecords" => $this->count_all,
- "iTotalDisplayRecords" => $this->display_all,
- "aaData" => $this->result_array_return,
- "sColumns" => $sColumns
- );
-
- }
-
- if (Config::get('app.debug', false)) {
- $output['aQueries'] = DB::getQueryLog();
- }
-
- if ($raw) {
- return $output;
- } else {
- return Response::json($output);
- }
- }
-
- /**
- * originally PR #93
- * Allows previous API calls where the methods were snake_case.
- * Will convert a camelCase API call to a snake_case call.
- */
- public function __call($name, $arguments)
- {
- $name = Str::camel(Str::lower($name));
- if (method_exists($this, $name)) {
- return call_user_func_array(array($this, $name), $arguments);
- } else {
- trigger_error('Call to undefined method ' . __CLASS__ . '::' . $name . '()', E_USER_ERROR);
- }
- }
-}
diff --git a/vendor/pragmarx/datatables/src/Bllim/Datatables/DatatablesServiceProvider.php b/vendor/pragmarx/datatables/src/Bllim/Datatables/DatatablesServiceProvider.php
deleted file mode 100644
index e3ab92c56..000000000
--- a/vendor/pragmarx/datatables/src/Bllim/Datatables/DatatablesServiceProvider.php
+++ /dev/null
@@ -1,60 +0,0 @@
-package('bllim/datatables', 'datatables', __DIR__);
- }
-
- /**
- * Register the service provider.
- *
- * @return void
- */
- public function register()
- {
- $this->app->singleton('bllim.datatables', function($app) {
- return new Datatables;
- });
- }
-
- /**
- * Register the package's component namespaces.
- *
- * @param string $package
- * @param string $namespace
- * @param string $path
- * @return void
- */
- public function package($package, $namespace = null, $path = null)
- {
-
- // Is it possible to register the config?
- if (method_exists($this->app['config'], 'package')) {
- $this->app['config']->package($package, $path.'/../../config', $namespace);
- } else {
- // Load the config for now..
- $config = $this->app['files']->getRequire($path .'/../../config/config.php');
- foreach($config as $key => $value){
- $this->app['config']->set($namespace.'::'.$key, $value);
- }
- }
-
- // Register view files
- $appView = $this->app['path']."/views/packages/{$package}";
- if ($this->app['files']->isDirectory($appView))
- {
- $this->app['view']->addNamespace($namespace, $appView);
- }
-
- $this->app['view']->addNamespace($namespace, $path.'/views');
- }
-}
diff --git a/vendor/pragmarx/datatables/src/Bllim/Datatables/Facade/Datatables.php b/vendor/pragmarx/datatables/src/Bllim/Datatables/Facade/Datatables.php
deleted file mode 100644
index 16aa7eb29..000000000
--- a/vendor/pragmarx/datatables/src/Bllim/Datatables/Facade/Datatables.php
+++ /dev/null
@@ -1,14 +0,0 @@
- array(
- 'case_insensitive' => true,
- 'use_wildcards' => false,
- ),
-
- 'dataFullSupport' => false,
-
-);
diff --git a/vendor/pragmarx/datatables/src/lang/.gitkeep b/vendor/pragmarx/datatables/src/lang/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/vendor/pragmarx/datatables/src/migrations/.gitkeep b/vendor/pragmarx/datatables/src/migrations/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/vendor/pragmarx/datatables/src/views/.gitkeep b/vendor/pragmarx/datatables/src/views/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/vendor/pragmarx/datatables/tests/.gitkeep b/vendor/pragmarx/datatables/tests/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/vendor/pragmarx/datatables/tests/Datatables.php b/vendor/pragmarx/datatables/tests/Datatables.php
deleted file mode 100644
index 9c1965375..000000000
--- a/vendor/pragmarx/datatables/tests/Datatables.php
+++ /dev/null
@@ -1,55 +0,0 @@
-increments('id');
- $table->string('name');
- });
- Demo::insert(array('name'=>'demo datatables'));
- }
-
- public function tearDown()
- {
- Schema::dropIfExists('demos');
- }
-
- public function test_demo_count()
- {
- $this->assertEquals(1, Demo::count());
- }
-
- public function test_datatables_make_function()
- {
- $demo = DB::table('demos')->select('id','name');
- $output = Datatables::of($demo)->make();
- $this->assertInstanceOf('Illuminate\Http\JsonResponse', $output);
- }
-
-
-}
diff --git a/vendor/pragmarx/datatables/tests/bootstrap/autoload.php b/vendor/pragmarx/datatables/tests/bootstrap/autoload.php
deleted file mode 100644
index 9ff9b69ef..000000000
--- a/vendor/pragmarx/datatables/tests/bootstrap/autoload.php
+++ /dev/null
@@ -1,75 +0,0 @@
- __DIR__.'/../../vendor/laravel/laravel/app',
-
- /*
- |--------------------------------------------------------------------------
- | Public Path
- |--------------------------------------------------------------------------
- |
- | The public path contains the assets for your web application, such as
- | your JavaScript and CSS files, and also contains the primary entry
- | point for web requests into these applications from the outside.
- |
- */
-
- 'public' => __DIR__.'/../../vendor/laravel/laravel/public',
-
- /*
- |--------------------------------------------------------------------------
- | Base Path
- |--------------------------------------------------------------------------
- |
- | The base path is the root of the Laravel installation. Most likely you
- | will not need to change this value. But, if for some wild reason it
- | is necessary you will do so here, just proceed with some caution.
- |
- */
-
- 'base' => __DIR__.'/../..',
-
- /*
- |--------------------------------------------------------------------------
- | Storage Path
- |--------------------------------------------------------------------------
- |
- | The storage path is used by Laravel to store cached Blade views, logs
- | and other pieces of information. You may modify the path here when
- | you want to change the location of this directory for your apps.
- |
- */
-
- 'storage' => __DIR__.'/../../vendor/laravel/laravel/app/storage',
-
-);
diff --git a/vendor/pragmarx/datatables/tests/bootstrap/start.php b/vendor/pragmarx/datatables/tests/bootstrap/start.php
deleted file mode 100644
index 7eeea5013..000000000
--- a/vendor/pragmarx/datatables/tests/bootstrap/start.php
+++ /dev/null
@@ -1,72 +0,0 @@
-detectEnvironment(array(
-
- 'local' => array('your-machine-name'),
-
-));
-
-/*
-|--------------------------------------------------------------------------
-| Bind Paths
-|--------------------------------------------------------------------------
-|
-| Here we are binding the paths configured in paths.php to the app. You
-| should not be changing these here. If you need to change these you
-| may do so within the paths.php file and they will be bound here.
-|
-*/
-
-$app->bindInstallPaths(require __DIR__.'/paths.php');
-
-/*
-|--------------------------------------------------------------------------
-| Load The Application
-|--------------------------------------------------------------------------
-|
-| Here we will load this Illuminate application. We will keep this in a
-| separate location so we can isolate the creation of an application
-| from the actual running of the application with a given request.
-|
-*/
-
-$framework = $app['path.base'].'/vendor/laravel/framework/src';
-
-require $framework.'/Illuminate/Foundation/start.php';
-
-/*
-|--------------------------------------------------------------------------
-| Return The Application
-|--------------------------------------------------------------------------
-|
-| This script returns the application instance. The instance is given to
-| the calling script so we can separate the building of the instances
-| from the actual running of the application and sending responses.
-|
-*/
-
-return $app;
diff --git a/vendor/pragmarx/support/.gitignore b/vendor/pragmarx/support/.gitignore
deleted file mode 100644
index 4be7a471a..000000000
--- a/vendor/pragmarx/support/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/vendor
-composer.phar
-.DS_Store
-*~
diff --git a/vendor/pragmarx/support/.travis.yml b/vendor/pragmarx/support/.travis.yml
deleted file mode 100644
index b4e692d54..000000000
--- a/vendor/pragmarx/support/.travis.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-php:
- - 5.3
- - 5.4
- - 5.5
- - 5.6
- - 7.0
- - hhvm
-
-install:
- - travis_retry composer install --no-interaction --prefer-source
-
-script:
- - phpunit --verbose
\ No newline at end of file
diff --git a/vendor/pragmarx/support/LICENSE b/vendor/pragmarx/support/LICENSE
deleted file mode 100644
index b8cfe93c9..000000000
--- a/vendor/pragmarx/support/LICENSE
+++ /dev/null
@@ -1,13 +0,0 @@
-Copyright (c) 2014, Antonio Carlos Ribeiro
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-
-3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/pragmarx/support/composer.json b/vendor/pragmarx/support/composer.json
deleted file mode 100644
index f2ed01abc..000000000
--- a/vendor/pragmarx/support/composer.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "name": "pragmarx/support",
-
- "description": "PragmaRX components support package",
-
- "keywords": ["pragmarx","laravel"],
-
- "license": "BSD-3-Clause",
-
- "authors": [
- {
- "name": "Antonio Carlos Ribeiro",
- "email": "acr@antoniocarlosribeiro.com",
- "role": "Creator"
- }
- ],
-
- "require": {
- "php": ">=5.4.0",
- "illuminate/filesystem": "~4.0|~5.0|~6.0",
- "symfony/var-dumper": "~2.6|~3.0|~4.0"
- },
-
- "autoload": {
- "psr-4": {
- "PragmaRX\\Support\\": "src/"
- }
- },
-
- "suggest": {
- "laravel/framework": "Laravel framework.",
- "symfony/yaml": "The Yaml class needs it"
- },
-
- "extra": {
- "branch-alias": {
- "dev-master": "0.7.x-dev"
- }
- }
-}
diff --git a/vendor/pragmarx/support/composer.lock b/vendor/pragmarx/support/composer.lock
deleted file mode 100644
index 41392e70a..000000000
--- a/vendor/pragmarx/support/composer.lock
+++ /dev/null
@@ -1,779 +0,0 @@
-{
- "_readme": [
- "This file locks the dependencies of your project to a known state",
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
- "This file is @generated automatically"
- ],
- "content-hash": "c74fd4121927f3b97398e7a37690da30",
- "packages": [
- {
- "name": "doctrine/inflector",
- "version": "v1.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/inflector.git",
- "reference": "5527a48b7313d15261292c149e55e26eae771b0a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a",
- "reference": "5527a48b7313d15261292c149e55e26eae771b0a",
- "shasum": ""
- },
- "require": {
- "php": "^7.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "Common String Manipulations with regard to casing and singular/plural rules.",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "inflection",
- "pluralize",
- "singularize",
- "string"
- ],
- "time": "2018-01-09T20:05:19+00:00"
- },
- {
- "name": "illuminate/contracts",
- "version": "v6.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/illuminate/contracts.git",
- "reference": "e5d7a6daa4beab3ec7c2d24679e213883a5fc09d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/illuminate/contracts/zipball/e5d7a6daa4beab3ec7c2d24679e213883a5fc09d",
- "reference": "e5d7a6daa4beab3ec7c2d24679e213883a5fc09d",
- "shasum": ""
- },
- "require": {
- "php": "^7.2",
- "psr/container": "^1.0",
- "psr/simple-cache": "^1.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "6.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Illuminate\\Contracts\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "description": "The Illuminate Contracts package.",
- "homepage": "https://laravel.com",
- "time": "2019-08-24T15:24:36+00:00"
- },
- {
- "name": "illuminate/filesystem",
- "version": "v6.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/illuminate/filesystem.git",
- "reference": "8d2bd23199afacc0c23fb520970158db5f9653b2"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/illuminate/filesystem/zipball/8d2bd23199afacc0c23fb520970158db5f9653b2",
- "reference": "8d2bd23199afacc0c23fb520970158db5f9653b2",
- "shasum": ""
- },
- "require": {
- "illuminate/contracts": "^6.0",
- "illuminate/support": "^6.0",
- "php": "^7.2",
- "symfony/finder": "^4.3.4"
- },
- "suggest": {
- "league/flysystem": "Required to use the Flysystem local and FTP drivers (^1.0).",
- "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).",
- "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).",
- "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0)."
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "6.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Illuminate\\Filesystem\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "description": "The Illuminate Filesystem package.",
- "homepage": "https://laravel.com",
- "time": "2019-09-03T12:53:11+00:00"
- },
- {
- "name": "illuminate/support",
- "version": "v6.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/illuminate/support.git",
- "reference": "64669342920e11fb91bd1af838e3d69dac525eae"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/illuminate/support/zipball/64669342920e11fb91bd1af838e3d69dac525eae",
- "reference": "64669342920e11fb91bd1af838e3d69dac525eae",
- "shasum": ""
- },
- "require": {
- "doctrine/inflector": "^1.1",
- "ext-json": "*",
- "ext-mbstring": "*",
- "illuminate/contracts": "^6.0",
- "nesbot/carbon": "^2.0",
- "php": "^7.2"
- },
- "conflict": {
- "tightenco/collect": "<5.5.33"
- },
- "suggest": {
- "illuminate/filesystem": "Required to use the composer class (^6.0).",
- "moontoast/math": "Required to use ordered UUIDs (^1.1).",
- "ramsey/uuid": "Required to use Str::uuid() (^3.7).",
- "symfony/process": "Required to use the composer class (^4.3.4).",
- "symfony/var-dumper": "Required to use the dd function (^4.3.4).",
- "vlucas/phpdotenv": "Required to use the Env class and env helper (^3.3)."
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "6.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Illuminate\\Support\\": ""
- },
- "files": [
- "helpers.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "description": "The Illuminate Support package.",
- "homepage": "https://laravel.com",
- "time": "2019-09-03T17:25:40+00:00"
- },
- {
- "name": "nesbot/carbon",
- "version": "2.24.0",
- "source": {
- "type": "git",
- "url": "https://github.com/briannesbitt/Carbon.git",
- "reference": "934459c5ac0658bc765ad1e53512c7c77adcac29"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/934459c5ac0658bc765ad1e53512c7c77adcac29",
- "reference": "934459c5ac0658bc765ad1e53512c7c77adcac29",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "php": "^7.1.8 || ^8.0",
- "symfony/translation": "^3.4 || ^4.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^2.14 || ^3.0",
- "kylekatarnls/multi-tester": "^1.1",
- "phpmd/phpmd": "dev-php-7.1-compatibility",
- "phpstan/phpstan": "^0.11",
- "phpunit/phpunit": "^7.5 || ^8.0",
- "squizlabs/php_codesniffer": "^3.4"
- },
- "bin": [
- "bin/carbon"
- ],
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Carbon\\Laravel\\ServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Carbon\\": "src/Carbon/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Brian Nesbitt",
- "email": "brian@nesbot.com",
- "homepage": "http://nesbot.com"
- },
- {
- "name": "kylekatarnls",
- "homepage": "http://github.com/kylekatarnls"
- }
- ],
- "description": "A API extension for DateTime that supports 281 different languages.",
- "homepage": "http://carbon.nesbot.com",
- "keywords": [
- "date",
- "datetime",
- "time"
- ],
- "time": "2019-08-31T16:37:55+00:00"
- },
- {
- "name": "psr/container",
- "version": "1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/container.git",
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Container\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common Container Interface (PHP FIG PSR-11)",
- "homepage": "https://github.com/php-fig/container",
- "keywords": [
- "PSR-11",
- "container",
- "container-interface",
- "container-interop",
- "psr"
- ],
- "time": "2017-02-14T16:28:37+00:00"
- },
- {
- "name": "psr/simple-cache",
- "version": "1.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/simple-cache.git",
- "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
- "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\SimpleCache\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interfaces for simple caching",
- "keywords": [
- "cache",
- "caching",
- "psr",
- "psr-16",
- "simple-cache"
- ],
- "time": "2017-10-23T01:57:42+00:00"
- },
- {
- "name": "symfony/finder",
- "version": "v4.3.4",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/finder.git",
- "reference": "86c1c929f0a4b24812e1eb109262fc3372c8e9f2"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/86c1c929f0a4b24812e1eb109262fc3372c8e9f2",
- "reference": "86c1c929f0a4b24812e1eb109262fc3372c8e9f2",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.3-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Finder\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Finder Component",
- "homepage": "https://symfony.com",
- "time": "2019-08-14T12:26:46+00:00"
- },
- {
- "name": "symfony/polyfill-mbstring",
- "version": "v1.12.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17",
- "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "suggest": {
- "ext-mbstring": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.12-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Mbstring\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for the Mbstring extension",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "mbstring",
- "polyfill",
- "portable",
- "shim"
- ],
- "time": "2019-08-06T08:03:45+00:00"
- },
- {
- "name": "symfony/polyfill-php72",
- "version": "v1.12.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "04ce3335667451138df4307d6a9b61565560199e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/04ce3335667451138df4307d6a9b61565560199e",
- "reference": "04ce3335667451138df4307d6a9b61565560199e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.12-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php72\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "time": "2019-08-06T08:03:45+00:00"
- },
- {
- "name": "symfony/translation",
- "version": "v4.3.4",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/translation.git",
- "reference": "28498169dd334095fa981827992f3a24d50fed0f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/28498169dd334095fa981827992f3a24d50fed0f",
- "reference": "28498169dd334095fa981827992f3a24d50fed0f",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/translation-contracts": "^1.1.6"
- },
- "conflict": {
- "symfony/config": "<3.4",
- "symfony/dependency-injection": "<3.4",
- "symfony/yaml": "<3.4"
- },
- "provide": {
- "symfony/translation-implementation": "1.0"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "~3.4|~4.0",
- "symfony/console": "~3.4|~4.0",
- "symfony/dependency-injection": "~3.4|~4.0",
- "symfony/finder": "~2.8|~3.0|~4.0",
- "symfony/http-kernel": "~3.4|~4.0",
- "symfony/intl": "~3.4|~4.0",
- "symfony/service-contracts": "^1.1.2",
- "symfony/var-dumper": "~3.4|~4.0",
- "symfony/yaml": "~3.4|~4.0"
- },
- "suggest": {
- "psr/log-implementation": "To use logging capability in translator",
- "symfony/config": "",
- "symfony/yaml": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.3-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Translation\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Translation Component",
- "homepage": "https://symfony.com",
- "time": "2019-08-26T08:55:16+00:00"
- },
- {
- "name": "symfony/translation-contracts",
- "version": "v1.1.6",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/translation-contracts.git",
- "reference": "325b17c24f3ee23cbecfa63ba809c6d89b5fa04a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/325b17c24f3ee23cbecfa63ba809c6d89b5fa04a",
- "reference": "325b17c24f3ee23cbecfa63ba809c6d89b5fa04a",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3"
- },
- "suggest": {
- "symfony/translation-implementation": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Contracts\\Translation\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Generic abstractions related to translation",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "time": "2019-08-02T12:15:04+00:00"
- },
- {
- "name": "symfony/var-dumper",
- "version": "v4.3.4",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/var-dumper.git",
- "reference": "641043e0f3e615990a0f29479f9c117e8a6698c6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/641043e0f3e615990a0f29479f9c117e8a6698c6",
- "reference": "641043e0f3e615990a0f29479f9c117e8a6698c6",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php72": "~1.5"
- },
- "conflict": {
- "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0",
- "symfony/console": "<3.4"
- },
- "require-dev": {
- "ext-iconv": "*",
- "symfony/console": "~3.4|~4.0",
- "symfony/process": "~3.4|~4.0",
- "twig/twig": "~1.34|~2.4"
- },
- "suggest": {
- "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
- "ext-intl": "To show region name in time zone dump",
- "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script"
- },
- "bin": [
- "Resources/bin/var-dump-server"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.3-dev"
- }
- },
- "autoload": {
- "files": [
- "Resources/functions/dump.php"
- ],
- "psr-4": {
- "Symfony\\Component\\VarDumper\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony mechanism for exploring and dumping PHP variables",
- "homepage": "https://symfony.com",
- "keywords": [
- "debug",
- "dump"
- ],
- "time": "2019-08-26T08:26:39+00:00"
- }
- ],
- "packages-dev": [],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": [],
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": {
- "php": ">=5.4.0"
- },
- "platform-dev": []
-}
diff --git a/vendor/pragmarx/support/phpunit.xml b/vendor/pragmarx/support/phpunit.xml
deleted file mode 100644
index e89ac6d80..000000000
--- a/vendor/pragmarx/support/phpunit.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- ./tests/
-
-
-
\ No newline at end of file
diff --git a/vendor/pragmarx/support/readme.md b/vendor/pragmarx/support/readme.md
deleted file mode 100644
index bf608484a..000000000
--- a/vendor/pragmarx/support/readme.md
+++ /dev/null
@@ -1,88 +0,0 @@
-# Support
-
-## Timer
-
-A timer class that can be called static or dynamically.
-
-Source code: [support/blob/master/src/Timer.php](https://github.com/antonioribeiro/support/blob/master/src/Timer.php)
-
-### Methods
-
-Those are the methods:
-
- Timer::start();
- Timer::stop();
- Timer::isStarted();
- Timer::isStopped();
- Timer::elapsed(); // returns a formatted value 9.0192
- Timer::elapsedRaw(); // returns a double 9.019223049023
- Timer::setFormat(default = '%.4f');
-
-You can name your timers and have more than one running:
-
- Timer::start('mary');
- Timer::stop('mary');
- Timer::elapsed('mary');
-
-### Examples
-
- Timer::start();
- Timer::start('2nd timer');
-
- var_dump("started: " . (Timer::isStarted() ? 'yes' : 'no'));
- var_dump("stopped: " . (Timer::isStopped() ? 'yes' : 'no'));
-
- sleep(5);
-
- Timer::stop();
-
- var_dump("started: " . (Timer::isStarted() ? 'yes' : 'no'));
- var_dump("stopped: " . (Timer::isStopped() ? 'yes' : 'no'));
- var_dump("elapsed: " . Timer::elapsed());
- var_dump("raw: " . Timer::elapsedRaw());
-
- sleep(2);
-
- var_dump("'2nd timer' started: " . (Timer::isStarted('2nd timer') ? 'yes' : 'no'));
- var_dump("'2nd timer' stopped: " . (Timer::isStopped('2nd timer') ? 'yes' : 'no'));
- var_dump("'2nd timer' elapsed: " . Timer::elapsed('2nd timer'));
- var_dump("'2nd timer' raw: " . Timer::elapsedRaw('2nd timer'));
-
- sleep(2);
-
- Timer::stop('2nd timer');
-
- var_dump("'2nd timer' started: " . (Timer::isStarted('2nd timer') ? 'yes' : 'no'));
- var_dump("'2nd timer' stopped: " . (Timer::isStopped('2nd timer') ? 'yes' : 'no'));
- var_dump("'2nd timer' elapsed: " . Timer::elapsed('2nd timer'));
- var_dump("'2nd timer' raw: " . Timer::elapsedRaw('2nd timer'));
-
- Timer::setFormat('%.8f');
- var_dump("'2nd timer' elapsed 8 decimals: " . Timer::elapsed('2nd timer'));
-
-/// And you can instantiate it and do it all over again:
-
- $t = new Timer;
- $t->start();
- sleep(3);
- $t->stop();
- var_dump("elapsed dynamic: " . $t->elapsed());
-
-This should give you this result:
-
- string(12) "started: yes"
- string(11) "stopped: no"
- string(11) "started: no"
- string(12) "stopped: yes"
- string(15) "elapsed: 5.0004"
- string(20) "raw: 5.0005040168762"
- string(24) "'2nd timer' started: yes"
- string(23) "'2nd timer' stopped: no"
- string(27) "'2nd timer' elapsed: 7.0008"
- string(32) "'2nd timer' raw: 7.0008120536804"
- string(23) "'2nd timer' started: no"
- string(24) "'2nd timer' stopped: yes"
- string(27) "'2nd timer' elapsed: 9.0011"
- string(32) "'2nd timer' raw: 9.0010931491852"
- string(42) "'2nd timer' elapsed 8 decimals: 9.00113106"
- string(27) "elapsed dynamic: 3.00018883"
diff --git a/vendor/pragmarx/support/src/CacheManager.php b/vendor/pragmarx/support/src/CacheManager.php
deleted file mode 100644
index 8ff186d0b..000000000
--- a/vendor/pragmarx/support/src/CacheManager.php
+++ /dev/null
@@ -1,9 +0,0 @@
-config = $config;
-
- $this->namespace = $namespace;
- }
-
- public function get($key, $default = null)
- {
- return $this->config->get($this->namespace.$key, $default);
- }
-
- public function set($key, $value = null)
- {
- $this->config->set($this->namespace.$key, $value);
- }
-
-}
diff --git a/vendor/pragmarx/support/src/CpfCnpj/Cnpj.php b/vendor/pragmarx/support/src/CpfCnpj/Cnpj.php
deleted file mode 100644
index 7fec0789f..000000000
--- a/vendor/pragmarx/support/src/CpfCnpj/Cnpj.php
+++ /dev/null
@@ -1,83 +0,0 @@
- static::$length) {
- return false;
- }
- $regex = "/^0+$|^1+$|^2+$|^3+$|^4+$|^5+$|^6+$|^7+$|^8+$|^9+$/";
- if (preg_match($regex, $cnpj)) {
- return false;
- }
- // Primeiro dígito
- $multiplicadores = array (5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2);
- $soma = 0;
- for ($i = 0; $i <= 11; $i++) {
- $soma += $multiplicadores[$i] * $cnpj[$i];
- }
- $d1 = 11 - ($soma % 11);
- if ($d1 >= 10) {
- $d1 = 0;
- }
- // Segundo dígito
- $multiplicadores = array (6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2);
- $soma = 0;
- for ($i = 0; $i <= 12; $i++) {
- $soma += $multiplicadores[$i] * $cnpj[$i];
- }
- $d2 = 11 - ($soma % 11);
- if ($d2 >= 10) {
- $d2 = 0;
- }
- return $d1 == $cnpj[12] && $d2 == $cnpj[13];
- }
-}
diff --git a/vendor/pragmarx/support/src/CpfCnpj/Cpf.php b/vendor/pragmarx/support/src/CpfCnpj/Cpf.php
deleted file mode 100644
index b0866f323..000000000
--- a/vendor/pragmarx/support/src/CpfCnpj/Cpf.php
+++ /dev/null
@@ -1,82 +0,0 @@
- 11) {
- return false;
- }
-
- $regex = "/^0+$|^1+$|^2+$|^3+$|^4+$|^5+$|^6+$|^7+$|^8+$|^9+$/";
- if (preg_match($regex, $cpf)) {
- return false;
- }
-
- // Primeiro dígito
- $soma = 0;
- for ($i = 0; $i < 9; $i++) {
- $soma += ((10 - $i) * $cpf[$i]);
- }
- $d1 = 11 - ($soma % 11);
- if ($d1 >= 10) {
- $d1 = 0;
- }
-
- // Segundo Dígito
- $soma = 0;
- for ($i = 0; $i < 10; $i++) {
- $soma += ((11 - $i) * $cpf[$i]);
- }
- $d2 = 11 - ($soma % 11);
- if ($d2 >= 10) {
- $d2 = 0;
- }
- return $d1 == $cpf[9] && $d2 == $cpf[10];
- }
-}
diff --git a/vendor/pragmarx/support/src/CpfCnpj/CpfCnpj.php b/vendor/pragmarx/support/src/CpfCnpj/CpfCnpj.php
deleted file mode 100644
index 5fbc963e0..000000000
--- a/vendor/pragmarx/support/src/CpfCnpj/CpfCnpj.php
+++ /dev/null
@@ -1,127 +0,0 @@
- static::$length) {
- return false;
- }
-
- $regex = "/^0+$|^1+$|^2+$|^3+$|^4+$|^5+$|^6+$|^7+$|^8+$|^9+$/";
- if (preg_match($regex, $cpfCnpj)) {
- return false;
- }
-
- // Primeiro dígito
- $soma = 0;
- for ($i = 0; $i < 9; $i++) {
- $soma += ((10 - $i) * $cpfCnpj[$i]);
- }
- $d1 = static::$length - ($soma % static::$length);
- if ($d1 >= 10) {
- $d1 = 0;
- }
-
- // Segundo Dígito
- $soma = 0;
- for ($i = 0; $i < 10; $i++) {
- $soma += ((static::$length - $i) * $cpfCnpj[$i]);
- }
- $d2 = static::$length - ($soma % static::$length);
- if ($d2 >= 10) {
- $d2 = 0;
- }
- return $d1 == $cpfCnpj[9] && $d2 == $cpfCnpj[10];
- }
-
- /**
- * Função responsável por gerar um cpf válido
- * @return string
- */
- public static function gerar()
- {
- $number = static::random_str(static::$length-2);
- $final = '';
- $counter = 0;
-
- while (! static::validar($final))
- {
- $final = $number . sprintf('%02d', $counter);
-
- $counter++;
- }
-
- return $final;
- }
-
- private static function random_str($length, $keyspace = '0123456789') {
- $str = '';
- $max = mb_strlen($keyspace, '8bit') - 1;
-
- if ($max < 1) {
- throw new Exception('$keyspace must be at least two characters long');
- }
-
- for ($i = 0; $i < $length; ++$i) {
- $str .= $keyspace[random_int(0, $max)];
- }
-
- return $str;
- }
-}
diff --git a/vendor/pragmarx/support/src/DateTime.php b/vendor/pragmarx/support/src/DateTime.php
deleted file mode 100644
index cd8b57dba..000000000
--- a/vendor/pragmarx/support/src/DateTime.php
+++ /dev/null
@@ -1,130 +0,0 @@
- 0)
- {
- $formats = static::splitFormats($item);
-
- foreach ($formats as $format)
- {
- // We should have no year in the middle of a date
- if ($format[1] !== 'Y' && $format[1] != 'y')
- {
- $result[] = join($separator, $format);
- }
- }
- }
- }
- }
-
- return $result;
- }
-
- private static function splitFormats($item)
- {
- $format1 = [];
- $format2 = [];
-
- foreach ($item as $format)
- {
- $chars = explode('|', $format);
-
- $format1[] = $chars[0];
- $format2[] = isset($chars[1]) ? $chars[1] : $chars[0];
- }
-
- return [$format1, $format2];
- }
-
- private static function parseWithFormat($dateFormat, $timeFormat, $value)
- {
- if (! $date = static::tryParsingDateAndTimeWithFormat($dateFormat, $value))
- {
- if (! $date = static::tryParsingDateAndTimeWithFormat($dateFormat.' '.$timeFormat, $value))
- {
- return null;
- }
- }
-
- $test = $date->format($dateFormat);
-
- if ($test !== $value)
- {
- return null;
- }
-
- if (strlen($dateFormat) < 5 && $date->day < 12)
- {
- throw new \Exception('Value cannot be safely parsed.');
- }
-
- return $date;
- }
-
- private static function tryParsingDateAndTimeWithFormat($format, $value)
- {
- try {
- return Carbon::createFromFormat($format, $value);
- }
- catch (\Exception $e)
- {
- return null;
- }
- }
-}
diff --git a/vendor/pragmarx/support/src/Debug/Dumper.php b/vendor/pragmarx/support/src/Debug/Dumper.php
deleted file mode 100644
index 911c294e2..000000000
--- a/vendor/pragmarx/support/src/Debug/Dumper.php
+++ /dev/null
@@ -1,28 +0,0 @@
-dump((new VarCloner)->cloneVar($value));
- }
-
-}
diff --git a/vendor/pragmarx/support/src/Debug/HtmlDumper.php b/vendor/pragmarx/support/src/Debug/HtmlDumper.php
deleted file mode 100644
index ade261fc7..000000000
--- a/vendor/pragmarx/support/src/Debug/HtmlDumper.php
+++ /dev/null
@@ -1,35 +0,0 @@
- 'background-color:#fff; color:#222; line-height:1.2em; font-weight:normal; font:12px Monaco, Consolas, monospace; word-wrap: break-word; white-space: pre-wrap; position:relative; z-index:100000',
- 'num' => 'color:#a71d5d',
- 'const' => 'color:#795da3',
- 'str' => 'color:#df5000',
- 'cchr' => 'color:#222',
- 'note' => 'color:#a71d5d',
- 'ref' => 'color:#a0a0a0',
- 'public' => 'color:#795da3',
- 'protected' => 'color:#795da3',
- 'private' => 'color:#795da3',
- 'meta' => 'color:#b729d9',
- 'key' => 'color:#df5000',
- 'index' => 'color:#a71d5d',
- );
-
-}
diff --git a/vendor/pragmarx/support/src/Environment.php b/vendor/pragmarx/support/src/Environment.php
deleted file mode 100644
index 23b58c450..000000000
--- a/vendor/pragmarx/support/src/Environment.php
+++ /dev/null
@@ -1,211 +0,0 @@
- $value)
- {
- putenv(sprintf('%s=%s', $key, static::toString($value)));
- }
-
- static::$hasBeenLoaded = true;
- }
- }
-
- /**
- * @param $variable
- * @param string $default
- * @return bool|null|string
- * @throws EnvironmentVariableNotSet
- */
- public static function getOrRaise($variable, $default = '#default#')
- {
- static::setAppEnv();
-
- // If you need somehow to bypass the environment, just create this helper function
-
- if (isset(static::$bypassed[$variable]))
- {
- $value = static::$bypassed[$variable];
- }
-
- if ( ! isset($value))
- {
- $value = getenv($variable);
- }
-
- if ($value == false || empty($value))
- {
- if ($default === '#default#')
- {
- static::raiseEnvironmentVariableNotSet();
- }
-
- return $default;
- }
-
- return static::fromString($value);
- }
-
- public static function bypass($variable, $value)
- {
- static::$bypassed[$variable] = static::toString($value);
-
- static::setAppEnv();
- }
-
- private static function toString($value)
- {
- if ($value === true)
- {
- $value = '(true)';
- }
- if ($value === false)
- {
- $value = '(false)';
- }
- elseif ($value === null)
- {
- $value = '(null)';
- }
- elseif (empty($value))
- {
- $value = '(empty)';
- }
-
- return $value;
- }
-
- private static function fromString($value)
- {
- if ($value === 'true' || $value === '(true)')
- {
- $value = true;
- }
- elseif ($value === 'false' || $value === '(false)')
- {
- $value = false;
- }
- elseif ($value === '(null)')
- {
- $value = null;
- }
- elseif ($value === '(empty)')
- {
- $value = '';
- }
-
- return $value;
- }
-
- public static function name()
- {
- $host = explode('.', static::getHostname())[0];
-
- if (in_array($host, ['testing', 'local', 'development', 'production', 'staging']))
- {
- return $host;
- }
-
- if (isset(static::$bypassed[static::APP_ENV]))
- {
- return static::$bypassed[static::APP_ENV];
- }
-
- return getenv(static::APP_ENV);
- }
-
- private static function setAppEnv()
- {
- $env = static::name();
-
- putenv(static::APP_ENV.'='.$env);
-
- app()['env'] = $env;
- }
-
- private static function logAvailable()
- {
- return app()->bound('log');
- }
-
- private static function getHostname()
- {
- if (app()->bound('request'))
- {
- if (app()['request'] instanceof ArgvInput)
- {
- return 'localhost';
- }
-
- return app()['request']->server->get('HTTP_HOST');
- }
-
- return 'nohost';
- }
-
- private static function raiseEnvironmentVariableNotSet()
- {
- // Temporarily disabled. Let's find a better way to inform?
- //
- // if (static::logAvailable())
- // {
- // // throw new EnvironmentVariableNotSet("Environment variable not set: $variable");
- // }
- // else
- // {
- // dd("Environment variable not set: $variable");
- // }
- }
-
-}
diff --git a/vendor/pragmarx/support/src/Exceptions/EnvironmentVariableNotSet.php b/vendor/pragmarx/support/src/Exceptions/EnvironmentVariableNotSet.php
deleted file mode 100644
index 6c94078f4..000000000
--- a/vendor/pragmarx/support/src/Exceptions/EnvironmentVariableNotSet.php
+++ /dev/null
@@ -1,7 +0,0 @@
-message .= $message;
- }
-
-}
diff --git a/vendor/pragmarx/support/src/Filesystem.php b/vendor/pragmarx/support/src/Filesystem.php
deleted file mode 100644
index 3fa1872b4..000000000
--- a/vendor/pragmarx/support/src/Filesystem.php
+++ /dev/null
@@ -1,9 +0,0 @@
-finder = SymfonyFinder::create();
- }
-
- /**
- * Use files selector
- *
- * @return Symfony\Component\Finder\Finder
- */
- public function files()
- {
- return $this->finder->files();
- }
-
- /**
- * Use directories selector
- *
- * @return Symfony\Component\Finder\Finder
- */
- public function directories()
- {
- return $this->finder->directories();
- }
-
- /**
- * Tell finder to find on a given path
- *
- * @param Finder $finder
- * @return [type] [description]
- */
- public function in($path)
- {
- return $this->in($path);
- }
-
-}
diff --git a/vendor/pragmarx/support/src/GeoIp/GeoIp.php b/vendor/pragmarx/support/src/GeoIp/GeoIp.php
deleted file mode 100644
index 0b514456c..000000000
--- a/vendor/pragmarx/support/src/GeoIp/GeoIp.php
+++ /dev/null
@@ -1,67 +0,0 @@
-databasePath = $databasePath;
- }
-
- private function databaseExists()
- {
- return file_exists($this->databasePath);
- }
-
- private function getGeoIp()
- {
- if (! $this->geoIp && $this->databaseExists()) {
- $this->geoIp = $this->getGeoIpInstance($this->databasePath);
- }
-
- return $this->geoIp;
- }
-
- public function searchAddr($addr) {
- if ($geoip = $this->getGeoIp()) {
- return $geoip->searchAddr($addr);
- }
- }
-
- /**
- * @return boolean
- */
- public function isEnabled() {
- return $this->getGeoIp()->isEnabled();
- }
-
- /**
- * @param boolean $enabled
- */
- public function setEnabled($enabled) {
- return $this->getGeoIp()->setEnabled($enabled);
- }
-
- public function isGeoIpAvailable() {
- return $this->getGeoIp()->isGeoIpAvailable();
- }
-
- private function getGeoIpInstance($databasePath = null) {
- if (class_exists(GeoIpReader::class))
- {
- return new GeoIp2($databasePath);
- }
-
- return new GeoIp1();
- }
-}
diff --git a/vendor/pragmarx/support/src/GeoIp/GeoIp1.php b/vendor/pragmarx/support/src/GeoIp/GeoIp1.php
deleted file mode 100644
index 24a53512e..000000000
--- a/vendor/pragmarx/support/src/GeoIp/GeoIp1.php
+++ /dev/null
@@ -1,55 +0,0 @@
-isEnabled() || ! $this->isGeoIpAvailable()) {
- return;
- }
-
- $this->open();
-
- $this->geoIpData = $this->generateGeoIpData($addr);
-
- $this->close();
-
- return $this->geoIpData;
- }
-
- public function isGeoIpAvailable() {
- if (!function_exists('geoip_country_code_by_addr')) {
- return false;
- }
-
- return true;
- }
-
- private function open() {
- $file = $this->getGeoliteFileName();
-
- if (!file_exists($file)) {
- return false;
- }
-
- $this->handle = geoip_open($file, GEOIP_STANDARD);
- }
-
- private function close() {
- if ($this->handle) {
- geoip_close($this->handle);
- }
- }
-
- private function generateGeoIpData($addr) {
- return (array) geoip_record_by_addr($this->handle, $addr);
- }
-
- /**
- * @return string
- */
- private function getGeoliteFileName() {
- return __DIR__ . "/GeoLiteCity.dat";
- }
-}
diff --git a/vendor/pragmarx/support/src/GeoIp/GeoIp2.php b/vendor/pragmarx/support/src/GeoIp/GeoIp2.php
deleted file mode 100644
index 6beafdfb2..000000000
--- a/vendor/pragmarx/support/src/GeoIp/GeoIp2.php
+++ /dev/null
@@ -1,75 +0,0 @@
-reader = new GeoIpReader($this->getGeoliteFileName($databasePath));
- }
-
- public function searchAddr($addr) {
- if ( ! $this->isEnabled()) {
- return;
- }
-
- if ($this->geoIpData = $this->getCity($addr))
- {
- return $this->renderData();
- }
-
- return null;
- }
-
- /**
- * Get the GeoIp database file name and path.
- *
- * @param null $databasePath
- * @return string
- */
- private function getGeoliteFileName($databasePath = null) {
- return ($databasePath ?: __DIR__) . DIRECTORY_SEPARATOR . static::DATABASE_FILE_NAME;
- }
-
- private function renderData() {
- return [
- 'latitude' => $this->geoIpData->location->latitude,
- 'longitude' => $this->geoIpData->location->longitude,
- 'country_code' => $this->geoIpData->country->isoCode,
- 'country_code3' => null,
- 'country_name' => $this->geoIpData->country->name,
- 'region' => $this->geoIpData->continent->code,
- 'city' => $this->geoIpData->city->name,
- 'postal_code' => $this->geoIpData->postal->code,
- 'area_code' => null,
- 'dma_code' => null,
- 'metro_code' => $this->geoIpData->location->metroCode,
- 'continent_code' => $this->geoIpData->continent->code,
- ];
- }
-
- /**
- * @param $addr
- * @return \GeoIp2\Model\City
- */
- private function getCity($addr) {
- try
- {
- $city = $this->reader->city($addr);
- }
- catch (AddressNotFoundException $e)
- {
- $city = null;
- }
-
- return $city;
- }
-}
diff --git a/vendor/pragmarx/support/src/GeoIp/GeoIpAbstract.php b/vendor/pragmarx/support/src/GeoIp/GeoIpAbstract.php
deleted file mode 100644
index 60c3a7919..000000000
--- a/vendor/pragmarx/support/src/GeoIp/GeoIpAbstract.php
+++ /dev/null
@@ -1,26 +0,0 @@
-enabled;
- }
-
- /**
- * @param boolean $enabled
- */
- public function setEnabled($enabled) {
- $this->enabled = $enabled;
- }
-}
diff --git a/vendor/pragmarx/support/src/GeoIp/GeoIpContract.php b/vendor/pragmarx/support/src/GeoIp/GeoIpContract.php
deleted file mode 100644
index a5b4cc0a6..000000000
--- a/vendor/pragmarx/support/src/GeoIp/GeoIpContract.php
+++ /dev/null
@@ -1,15 +0,0 @@
-messages[] = $string;
- }
-
- protected function databaseIsUpdated($geoDbFileUrl, $geoDbMd5Url, $destinationPath)
- {
- $destinationGeoDbFile = $this->removeGzipExtension($destinationPath . DIRECTORY_SEPARATOR . basename($geoDbFileUrl));
-
- $this->md5File = $this->getHTTPFile($geoDbMd5Url, $destinationPath . DIRECTORY_SEPARATOR);
-
- if (! file_exists($destinationGeoDbFile)) {
- return false;
- }
-
- if ($updated = file_get_contents($this->md5File) == md5_file($destinationGeoDbFile)) {
- $this->addMessage('Database is already updated.');
- }
-
- return $updated;
- }
-
- /**
- * Download gzipped database, unzip and check md5.
- *
- * @param $destinationPath
- * @param $geoDbUrl
- * @return bool
- */
- protected function downloadGzipped($destinationPath, $geoDbUrl)
- {
- if (! $this->databaseFileGzipped = $this->getHTTPFile($geoDbUrl, ($destination = $destinationPath . DIRECTORY_SEPARATOR))) {
- $this->addMessage("Unable to download file {$geoDbUrl} to {$destination}.");
- }
-
- $this->databaseFile = $this->dezipGzFile($destinationPath . DIRECTORY_SEPARATOR . basename($geoDbUrl));
-
- return $this->md5Match();
- }
-
- private function getDbFileName($geoDbUrl)
- {
- return $geoDbUrl ?: static::GEOLITE2_URL_BASE . '.mmdb.gz';
- }
-
- private function getMd5FileName($geoDbMd5Url)
- {
- return $geoDbMd5Url ?: static::GEOLITE2_URL_BASE . '.md5';
- }
-
- /**
- * Get messages.
- *
- * @return mixed
- */
- public function getMessages()
- {
- return $this->messages;
- }
-
- /**
- * Make directory.
- *
- * @param $destinationPath
- * @return bool
- */
- protected function makeDir($destinationPath)
- {
- return file_exists($destinationPath) || mkdir($destinationPath, 0770, true);
- }
-
- /**
- * Compare MD5s.
- *
- * @return bool
- */
- private function md5Match()
- {
- if (! $match = md5_file($this->databaseFile) == file_get_contents($this->md5File)) {
- $this->addMessage("MD5 is not matching for {$this->databaseFile} and {$this->md5File}.");
-
- return false;
- }
-
- $this->addMessage("Database successfully downloaded to {$this->databaseFile}.");
-
- return true;
- }
-
- /**
- * Remove .gzip extension from file.
- *
- * @param $filePath
- * @return mixed
- */
- protected function removeGzipExtension($filePath)
- {
- return str_replace('.gz', '', $filePath);
- }
-
- /**
- * Download and update GeoIp database.
- *
- * @param $destinationPath
- * @param null $geoDbUrl
- * @param null $geoDbMd5Url
- * @return bool
- */
- public function updateGeoIpFiles($destinationPath, $geoDbUrl = null, $geoDbMd5Url = null)
- {
- if ($this->databaseIsUpdated($geoDbUrl = $this->getDbFileName($geoDbUrl), $this->getMd5FileName($geoDbMd5Url), $destinationPath)) {
- return true;
- }
-
- if ($this->downloadGzipped($destinationPath, $geoDbUrl)) {
- return true;
- }
-
- $this->addMessage("Unknown error downloading {$geoDbUrl}.");
-
- return false;
- }
-
- /**
- * Read url to file.
- *
- * @param $uri
- * @param $destinationPath
- * @return bool|string
- */
- protected function getHTTPFile($uri, $destinationPath)
- {
- set_time_limit(360);
-
- if (! $this->makeDir($destinationPath)) {
- return false;
- }
-
- $fileWriteName = $destinationPath . basename($uri);
-
- if (($fileRead = @fopen($uri,"rb")) === false || ($fileWrite = @fopen($fileWriteName, 'wb')) === false) {
- $this->addMessage("Unable to open {$uri} (read) or {$fileWriteName} (write).");
-
- return false;
- }
-
- while(! feof($fileRead))
- {
- $content = @fread($fileRead, 1024*16);
-
- $success = fwrite($fileWrite, $content);
-
- if ($success === false) {
- $this->addMessage("Error downloading file {$uri} to {$fileWriteName}.");
-
- return false;
- }
- }
-
- fclose($fileWrite);
-
- fclose($fileRead);
-
- return $fileWriteName;
- }
-
- /**
- * Extract gzip file.
- *
- * @param $filePath
- * @return bool|mixed
- */
- protected function dezipGzFile($filePath)
- {
- $buffer_size = 8192; // read 8kb at a time
-
- $out_file_name = $this->removeGzipExtension($filePath);
-
- $fileRead = gzopen($filePath, 'rb');
-
- $fileWrite = fopen($out_file_name, 'wb');
-
- if ($fileRead === false || $fileWrite === false) {
- $this->addMessage("Unable to extract gzip file {$filePath} to {$out_file_name}.");
-
- return false;
- }
-
- while(!gzeof($fileRead)) {
- $success = fwrite($fileWrite, gzread($fileRead, $buffer_size));
-
- if ($success === false) {
- $this->addMessage("Error degzipping file {$filePath} to {$out_file_name}.");
-
- return false;
- }
- }
-
- // Files are done, close files
- fclose($fileWrite);
-
- gzclose($fileRead);
-
- return $out_file_name;
- }
-}
diff --git a/vendor/pragmarx/support/src/ImporterExporter/ImporterExporter.php b/vendor/pragmarx/support/src/ImporterExporter/ImporterExporter.php
deleted file mode 100644
index fb55e000b..000000000
--- a/vendor/pragmarx/support/src/ImporterExporter/ImporterExporter.php
+++ /dev/null
@@ -1,238 +0,0 @@
-profiles = new ArrayObject();
- }
-
- private function detectCsvConfig($data)
- {
- $delimiters = [
- ';',
- ',',
- "\t",
- ];
-
- foreach ($delimiters as $delimiter)
- {
- if (strpos($data, $delimiter) > 0)
- {
- break;
- }
- }
-
- $enclosures = [
- '"'.$delimiter.'"',
- "'".$delimiter."'",
- '', // must always be last!
- ];
-
- foreach ($enclosures as $enclosure)
- {
- if (empty($enclosure) || strpos($data, $enclosure) > 0)
- {
- break;
- }
- }
-
- return [$delimiter, $enclosure];
- }
-
- /**
- * @return null
- */
- public function getData()
- {
- return $this->data;
- }
-
- private function identifyType($fileName)
- {
- $type = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));
-
- if (! in_array($type, static::SUPPORTED_TYPES))
- {
- throw new \Exception('File type not supported, it must be one of those: '.join(', ', static::SUPPORTED_TYPES));
- }
-
- return $type;
- }
-
- public function import($fileName)
- {
- $type = $this->identifyType($fileName);
-
- if ($type == 'json')
- {
- return $this->importFromJson($fileName);
- }
-
- if ($type == 'csv')
- {
- return $this->importFromCsv($fileName);
- }
- }
-
- public function addProfile($id, $callback)
- {
- $this->profiles[ $id ] = $callback;
- }
-
- public function executeProfile($profileId)
- {
- $profile = $this->profiles[ $profileId ];
-
- $this->data = $profile($this, $this->data);
-
- return $this;
- }
-
- public function exportToCSV($filename, $data, $delimiter = self::CSV_DELIMITER, $enclosure = self::CSV_ENCLOSURE,
- $arrayIndexAsHeader = false)
- {
- $fp = fopen($filename, 'w');
- $hasHeader = false;
- foreach ($data as $fields) {
- if ($arrayIndexAsHeader === true && !$hasHeader) {
- fputcsv($fp, array_keys($fields), $delimiter, $enclosure);
- $hasHeader = true;
- }
- fputcsv($fp, $fields, $delimiter, $enclosure);
- }
- fclose($fp);
- }
-
- public function exportToJSON($filename, $data)
- {
- $json = json_encode($data);
-
- return file_put_contents($filename, $json);
- }
-
- protected function getRawDataFromFile($file)
- {
- return Storage::disk('local')->get($file);
- }
-
- /**
- * @param $escape
- * @param $row
- * @param $delimiter
- * @param $enclosure
- * @return array
- */
- private function importCsv($row, $delimiter, $enclosure, $escape)
- {
- return str_getcsv($row, $delimiter, $enclosure, $escape);
- }
-
- public function importFromCSV($filename, $escape = self::CSV_ESCAPE)
- {
- $result = [];
-
- $data = $this->getRawDataFromFile($filename);
- $data = preg_split('/\n|\r\n?/', $data);
-
- if ($data)
- {
- list($delimiter, $enclosure) = $this->detectCsvConfig($data[0]);
-
- $data[0] = preg_replace('/[\x00-\x1F\x7F]/', '', $data[0]);
-
- $keys = $this->importCsv($data[0], $delimiter, $enclosure, $escape);
-
- foreach ($data as $row)
- {
- if (empty(trim($row)))
- {
- continue;
- }
-
- if (mb_detect_encoding($row, null, true) !== 'UTF-8')
- {
- $row = utf8_encode($row);
- }
- else
- {
- $row = utf8_decode($row);
- }
-
- if ($row = $this->importCsv($row, $delimiter, $enclosure, $escape))
- {
- try {
- $result[] = array_combine($keys, $row);
- }
- catch (\Exception $exception)
- {
- echo "Error in file: ";
- dd($row);
- }
- }
- }
- }
-
- // Remove title row
- unset($result[0]);
-
- return $result;
- }
-
- public function importFromJson($file)
- {
- $data = $this->getRawDataFromFile($file);
-
- if ($data === false || empty($data)) {
- return false;
- }
-
- $data = str_replace(' ', '_SPACE_', $data);
- $data = preg_replace('/\s+/', '', $data);
- $data = preg_replace('/\t+/', '', $data);
- $data = str_replace('_SPACE_', ' ', $data);
-
- $data = json_decode($data, true);
-
- $jsonLastError = json_last_error();
-
- if ($jsonLastError !== JSON_ERROR_NONE) {
- $errorMsg = null;
- switch ($jsonLastError) {
- case JSON_ERROR_DEPTH:
- $errorMsg = 'Maximum json depth reached.';
- break;
- case JSON_ERROR_CTRL_CHAR:
- $errorMsg = 'Json CTRL char error';
- break;
- case JSON_ERROR_SYNTAX:
- $errorMsg = 'Json syntax error';
- break;
- default:
- $errorMsg = 'Json unknown error';
- }
-
- throw new Exception($errorMsg);
- }
-
- return $data;
- }
-}
diff --git a/vendor/pragmarx/support/src/Inflectors/En.php b/vendor/pragmarx/support/src/Inflectors/En.php
deleted file mode 100644
index 3d8db361b..000000000
--- a/vendor/pragmarx/support/src/Inflectors/En.php
+++ /dev/null
@@ -1,19 +0,0 @@
- 'PragmaRX\Support\Inflectors\En',
- 'pt' => 'PragmaRX\Support\Inflectors\PtBr',
- ];
-
- public function inflect($word, $count)
- {
- if ($count > 1)
- {
- return $this->plural($word);
- }
-
- return $this->singular($word);
- }
-
- public static function plural($word)
- {
- $inflector = static::getInflector();
-
- return $inflector->plural($word);
- }
-
- public static function singular($word)
- {
- $inflector = static::getInflector();
-
- return $inflector->singular($word);
- }
-
- private static function getInflector()
- {
- $inflector = static::$localizedInflectors['en'];
-
- if (function_exists('app'))
- {
- $locale = app()->make('translator')->getLocale();
-
- foreach (static::$localizedInflectors as $lang => $class)
- {
- if (starts_with($locale, $lang))
- {
- $inflector = $class;
- }
- }
-
- }
-
- return new $inflector;
- }
-
-}
diff --git a/vendor/pragmarx/support/src/Inflectors/InflectorInterface.php b/vendor/pragmarx/support/src/Inflectors/InflectorInterface.php
deleted file mode 100644
index db97d56c1..000000000
--- a/vendor/pragmarx/support/src/Inflectors/InflectorInterface.php
+++ /dev/null
@@ -1,12 +0,0 @@
- 'ões',
- 'ês' => 'eses',
- 'm' => 'ns',
- 'l' => 'is',
- 'r' => 'res',
- 'x' => 'xes',
- 'z' => 'zes',
- );
-
- /**
- * Exceções às regras
- */
- protected $exceptions = array(
- 'cidadão' => 'cidadãos',
- 'mão' => 'mãos',
- 'qualquer'=> 'quaisquer',
- 'campus' => 'campi',
- 'lápis' => 'lápis',
- 'ônibus' => 'ônibus',
- );
-
- /**
- * Passa uma palavra para o plural
- *
- * @param string $word A palavra que deseja ser passada para o plural
- * @return string
- */
- public function plural($word)
- {
- //Pertence a alguma exceção?
- if (array_key_exists($word, $this->exceptions)):
- return $this->exceptions[$word];
- //Não pertence a nenhuma exceção. Mas tem alguma regra?
- else:
- foreach($this->rules as $singular=>$plural):
- if (preg_match("({$singular}$)", $word))
- return preg_replace("({$singular}$)", $plural, $word);
- endforeach;
- endif;
- //Não pertence às exceções, nem às regras.
- //Se não terminar com "s", adiciono um.
- if (substr($word, -1) !== 's')
- return $word . 's';
- return $word;
- }
-
- /**
- * Passa uma palavra para o singular
- *
- * @param string $word A palavra que deseja ser passada para o singular
- * @return string
- */
- public function singular($word)
- {
- //Pertence às exceções?
- if (in_array($word, $this->exceptions)):
- $invert = array_flip($this->exceptions);
- return $invert[$word];
- //Não é execeção.. Mas pertence a alguma regra?
- else:
- foreach($this->rules as $singular => $plural):
- if (preg_match("({$plural}$)",$word))
- return preg_replace("({$plural}$)", $singular, $word);
- endforeach;
- endif;
- //Nem é exceção, nem tem regra definida.
- //Apaga a última somente se for um "s" no final
- if (substr($word, -1) == 's')
- return substr($word, 0, -1);
- return $word;
- }
-}
diff --git a/vendor/pragmarx/support/src/IpAddress.php b/vendor/pragmarx/support/src/IpAddress.php
deleted file mode 100644
index 08f4bfd35..000000000
--- a/vendor/pragmarx/support/src/IpAddress.php
+++ /dev/null
@@ -1,361 +0,0 @@
-
- * @version Sat Jun 6 21:26:48 EDT 2009
- * @copyright Copyright (c) 2009 Jonavon Wilcox
- *
- * class CIDR. (originally)
- * Holds static functions for ip address manipulation.
- */
-
-namespace PragmaRX\Support;
-
-class IpAddress
-{
- /**
- * method CIDRtoMask
- * Return a netmask string if given an integer between 0 and 32. I am
- * not sure how this works on 64 bit machines.
- * Usage:
- * CIDR::CIDRtoMask(22);
- * Result:
- * string(13) "255.255.252.0"
- * @param $int int Between 0 and 32.
- * @access public
- * @static
- * @return String Netmask ip address
- */
- public static function CIDRtoMask($int)
- {
- return long2ip(-1 << (32 - (int)$int));
- }
-
- /**
- * method countSetBits.
- * Return the number of bits that are set in an integer.
- * Usage:
- * CIDR::countSetBits(ip2long('255.255.252.0'));
- * Result:
- * int(22)
- * @param $int int a number
- * @access public
- * @static
- * @see http://stackoverflow.com/questions/109023/best-algorithm-to-co\
- * unt-the-number-of-set-bits-in-a-32-bit-integer
- * @return int number of bits set.
- */
- public static function countSetbits($int)
- {
- $int = $int - (($int >> 1) & 0x55555555);
- $int = ($int & 0x33333333) + (($int >> 2) & 0x33333333);
- return (($int + ($int >> 4) & 0xF0F0F0F) * 0x1010101) >> 24;
- }
-
- /**
- * method validNetMask.
- * Determine if a string is a valid netmask.
- * Usage:
- * CIDR::validNetMask('255.255.252.0');
- * CIDR::validNetMask('127.0.0.1');
- * Result:
- * bool(true)
- * bool(false)
- * @param $netmask String a 1pv4 formatted ip address.
- * @return bool
- * @see http://www.actionsnip.com/snippets/tomo_atlacatl/calculate-if-\
- * a-netmask-is-valid--as2-
- * @access public
- * @static
- * return bool True if a valid netmask.
- */
- public static function validNetMask($netmask)
- {
- $netmask = ip2long($netmask);
- $neg = ((~(int)$netmask) & 0xFFFFFFFF);
- return (($neg + 1) & $neg) === 0;
- }
-
- /**
- * method maskToCIDR.
- * Return a CIDR block number when given a valid netmask.
- * Usage:
- * CIDR::maskToCIDR('255.255.252.0');
- * Result:
- * int(22)
- * @param $netmask String a 1pv4 formatted ip address.
- * @throws Exception
- * @access public
- * @static
- * @return int CIDR number.
- */
- public static function maskToCIDR($netmask)
- {
- if(self::validNetMask($netmask)){
- return self::countSetBits(ip2long($netmask));
- }
- else {
- throw new Exception('Invalid Netmask');
- }
- }
-
- /**
- * method alignedCIDR.
- * It takes an ip address and a netmask and returns a valid CIDR
- * block.
- * Usage:
- * CIDR::alignedCIDR('127.0.0.1','255.255.252.0');
- * Result:
- * string(12) "127.0.0.0/22"
- * @param $ipinput String a IPv4 formatted ip address.
- * @param $netmask String a 1pv4 formatted ip address.
- * @access public
- * @static
- * @return String CIDR block.
- */
- public static function alignedCIDR($ipinput,$netmask)
- {
- $alignedIP = long2ip((ip2long($ipinput)) & (ip2long($netmask)));
- return "$alignedIP/" . self::maskToCIDR($netmask);
- }
-
- /**
- * method IPisWithinCIDR.
- * Check whether an IP is within a CIDR block.
- * Usage:
- * CIDR::IPisWithinCIDR('127.0.0.33','127.0.0.1/24');
- * CIDR::IPisWithinCIDR('127.0.0.33','127.0.0.1/27');
- * Result:
- * bool(true)
- * bool(false)
- * @param $ipinput String a IPv4 formatted ip address.
- * @param $cidr String a IPv4 formatted CIDR block. Block is aligned
- * during execution.
- * @access public
- * @static
- * @return String CIDR block.
- */
- public static function IPisWithinCIDR($ipinput,$cidr)
- {
- $cidr = explode('/',$cidr);
- $cidr = self::alignedCIDR($cidr[0],self::CIDRtoMask((int)$cidr[1]));
- $cidr = explode('/',$cidr);
- $ipinput = (ip2long($ipinput));
- $ip1 = (ip2long($cidr[0]));
- $ip2 = ($ip1 + pow(2, (32 - (int)$cidr[1])) - 1);
- return (($ip1 <= $ipinput) && ($ipinput <= $ip2));
- }
-
- /**
- * method maxBlock.
- * Determines the largest CIDR block that an IP address will fit into.
- * Used to develop a list of CIDR blocks.
- * Usage:
- * CIDR::maxBlock("127.0.0.1");
- * CIDR::maxBlock("127.0.0.0");
- * Result:
- * int(32)
- * int(8)
- * @param $ipinput String a IPv4 formatted ip address.
- * @access public
- * @static
- * @return int CIDR number.
- */
- public static function maxBlock($ipinput)
- {
- return self::maskToCIDR(long2ip(-(ip2long($ipinput) & -(ip2long($ipinput)))));
- }
-
- /**
- * method rangeToCIDRList.
- * Returns an array of CIDR blocks that fit into a specified range of
- * ip addresses.
- * Usage:
- * CIDR::rangeToCIDRList("127.0.0.1","127.0.0.34");
- * Result:
- * array(7) {
- * [0]=> string(12) "127.0.0.1/32"
- * [1]=> string(12) "127.0.0.2/31"
- * [2]=> string(12) "127.0.0.4/30"
- * [3]=> string(12) "127.0.0.8/29"
- * [4]=> string(13) "127.0.0.16/28"
- * [5]=> string(13) "127.0.0.32/31"
- * [6]=> string(13) "127.0.0.34/32"
- * }
- * @param $startIPinput String a IPv4 formatted ip address.
- * @param $startIPinput String a IPv4 formatted ip address.
- * @see http://null.pp.ru/src/php/Netmask.phps
- * @return Array CIDR blocks in a numbered array.
- */
- public static function rangeToCIDRList($startIPinput,$endIPinput=NULL)
- {
- $start = ip2long($startIPinput);
- $end =(empty($endIPinput))?$start:ip2long($endIPinput);
- while($end >= $start) {
- $maxsize = self::maxBlock(long2ip($start));
- $maxdiff = 32 - intval(log($end - $start + 1)/log(2));
- $size = ($maxsize > $maxdiff)?$maxsize:$maxdiff;
- $listCIDRs[] = long2ip($start) . "/$size";
- $start += pow(2, (32 - $size));
- }
- return $listCIDRs;
- }
-
- /**
- * method cidrToRange.
- * Returns an array of only two IPv4 addresses that have the lowest ip
- * address as the first entry. If you need to check to see if an IPv4
- * address is within range please use the IPisWithinCIDR method above.
- * Usage:
- * CIDR::cidrToRange("127.0.0.128/25");
- * Result:
- * array(2) {
- * "127.0.0.128",
- * "127.0.0.255",
- * }
- * @param $cidr string CIDR block
- * @return Array low end of range then high end of range.
- */
- public static function cidrToRange($cidr)
- {
- if (! preg_match("/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}(\/[0-9]{1,2})?$/", $cidr)) {
- return false;
- }
-
- $range = array();
-
- $cidr = explode('/', $cidr);
-
- if (count($cidr) !== 2) {
- return false;
- }
-
-
- $range[0] = long2ip((ip2long($cidr[0])) & ((-1 << (32 - (int)$cidr[1]))));
-
- $range[1] = long2ip((ip2long($cidr[0])) + pow(2, (32 - (int)$cidr[1])) - 1);
-
- return $range;
- }
-
- /**
- * method twoIpsToRange.
- * Returns an array of only two IPv4 addresses that have the lowest ip
- * address as the first entry. If you need to check to see if an IPv4
- * Usage:
- * CIDR::cidrToRange("127.0.0.1-127.0.0.255");
- * Result:
- * array(2) {
- * "127.0.0.1",
- * "127.0.0.255",
- * }
- * @param $string
- * @return Array low end of range then high end of range.
- */
- public static function twoIpsToRange($string)
- {
- if (! preg_match_all("/^((?:\d{1,3}\.?){4})\-((?:\d{1,3}\.?){4})$/", $string, $matches)) {
- return false;
- }
-
- return array(
- $matches[1][0],
- $matches[2][0],
- );
- }
-
- public static function ipV4Valid($ip)
- {
- $isIpAddress = false;
-
- $isRange = false;
-
- if ($ip)
- {
- $ip = str_replace('*', '0', $ip);
-
- try
- {
- $isIpAddress = inet_pton($ip) !== false;
- }
- catch(\Exception $e) {}
-
- try
- {
- $isRange = static::cidrToRange($ip);
- }
- catch(\Exception $e) {}
-
- try
- {
- if (!$isIpAddress && !$isRange) {
- $isRange = static::twoIpsToRange($ip);
- }
- }
- catch(\Exception $e) {}
- }
-
- return $ip && ($isIpAddress || $isRange);
- }
-
- public static function getIpV4Range($ip)
- {
- return get_ipv4_range($ip);
- }
-
- public static function ipV4MatchMask($ip, $network)
- {
- return ipv4_match_mask($ip, $network);
- }
-
- public static function isCidr($ip) {
- if (strpos($ip, '/') === false) {
- return false;
- }
-
- return static::cidrToRange($ip);
- }
-
- public static function ipv4InRange($ip, $range)
- {
- if (is_array($range))
- {
- foreach ($range as $iprange)
- {
- if (static::ipv4InRange($ip, $iprange))
- {
- return true;
- }
- }
-
- return false;
- }
-
- // Wildcarded range
- // 192.168.1.*
- if ( ! str_contains($range, '-') && str_contains($range, '*'))
- {
- $range = str_replace('*', '0', $range) . '-' . str_replace('*', '255', $range);
- }
-
- // Dashed range
- // 192.168.1.1-192.168.1.100
- // 0.0.0.0-255.255.255.255
- if (count($twoIps = explode('-', $range)) == 2)
- {
- $ip1 = ip2long($twoIps[0]);
- $ip2 = ip2long($twoIps[1]);
-
- return ip2long($ip) >= $ip1 && ip2long($ip) <= $ip2;
- }
-
- // Masked range or fixed IP
- // 192.168.17.1/16 or
- // 127.0.0.1/255.255.255.255 or
- // 10.0.0.1
- return ipv4_match_mask($ip, $range);
- }
-}
diff --git a/vendor/pragmarx/support/src/Migration.php b/vendor/pragmarx/support/src/Migration.php
deleted file mode 100644
index 8e90b2456..000000000
--- a/vendor/pragmarx/support/src/Migration.php
+++ /dev/null
@@ -1,210 +0,0 @@
-checkConnection();
-
- $this->executeInTransaction('migrateUp');
- }
-
- /**
- * The Laravel Migrator down() method.
- *
- */
- public function down()
- {
- $this->checkConnection();
-
- $this->executeInTransaction('migrateDown');
- }
-
- /**
- * The abstracted up() method.
- *
- * Do not use up(), use this one instead.
- *
- */
- abstract protected function migrateUp();
-
- /**
- * The abstracted down() method.
- *
- * Do not use down(), use this one instead.
- *
- */
- abstract protected function migrateDown();
-
- /**
- * Execute the migrationm command inside a transaction layer.
- *
- * @param $method
- */
- protected function executeInTransaction($method)
- {
- $this->connection->beginTransaction();
-
- try
- {
- $this->{$method}();
- }
- catch (\Exception $exception)
- {
- $this->connection->rollback();
-
- $this->handleException($exception);
- }
-
- $this->connection->commit();
- }
-
- /**
- * Drop all tables.
- *
- */
- protected function dropAllTables()
- {
- foreach ($this->tables as $table)
- {
- if ($this->tableExists($table))
- {
- $this->builder->drop($table);
- }
- }
- }
-
- /**
- * Check if a table exists.
- *
- * @param $table
- * @return mixed
- */
- protected function tableExists($table)
- {
- return $this->builder->hasTable($table);
- }
-
- /**
- * Handle an exception.
- *
- * @param $exception
- */
- protected function handleException($exception)
- {
- $previous = property_exists($exception, 'previous')
- ? $exception->previous
- : $exception;
-
- if ($exception instanceof \Illuminate\Database\QueryException)
- {
- throw new $exception($exception->getMessage(), $exception->getBindings(), $previous);
- }
- else
- {
- throw new $exception($exception->getMessage(), $exception->getCode(), $previous);
- }
- }
-
- /**
- * Check if this is a Laravel application
- */
- private function isLaravel()
- {
- return
- function_exists('app') &&
- app() instanceof \Illuminate\Foundation\Application;
- }
-
- /**
- * Drop a column from a table.
- *
- * @param $tableName
- * @param $column
- */
- public function dropColumn($tableName, $column)
- {
- // Check for its existence before dropping
-
- if (Schema::hasColumn($tableName, $column))
- {
- Schema::table($tableName, function(Blueprint $table) use ($column)
- {
- $table->dropColumn($column);
- });
- }
- }
-
- protected function checkConnection()
- {
- if ($this->isLaravel())
- {
- if ( ! $this->connection)
- {
- $this->manager = app()->make('db');
-
- $this->connection = $this->manager->connection();
- }
-
- $this->builder = $this->connection->getSchemaBuilder();
- }
- else
- {
- throw new Exception('This migrator must be ran from inside a Laravel application.');
- }
- }
-
- public function drop($table)
- {
- if ($this->tableExists($table))
- {
- $this->builder->drop($table);
- }
- }
-
-}
diff --git a/vendor/pragmarx/support/src/PhpSession.php b/vendor/pragmarx/support/src/PhpSession.php
deleted file mode 100644
index 92f55ea29..000000000
--- a/vendor/pragmarx/support/src/PhpSession.php
+++ /dev/null
@@ -1,105 +0,0 @@
-startSession();
-
- $this->setNamespace($namespace);
- }
-
- private function startSession()
- {
- if ( ! $this->isStarted())
- {
- session_start();
- }
- }
-
- private function isStarted()
- {
- return session_status() === PHP_SESSION_ACTIVE;
- }
-
- public function get($key, $namespace = null)
- {
- $session = $this->getNamespaceData($namespace);
-
- return isset($session[$key])
- ? $session[$key]
- : null;
- }
-
- public function has($key, $namespace = null)
- {
- $session = $this->getNamespaceData($namespace);
-
- return isset($session[$key]);
- }
-
- public function put($key, $value, $namespace = null)
- {
- $session = $this->getNamespaceData($namespace);
-
- $session[$key] = $value;
-
- $this->setNamespaceData($namespace, $session);
- }
-
- public function setNamespace($namespace)
- {
- if ($namespace)
- {
- $this->namespace = $namespace;
- }
- }
-
- public function getId()
- {
- return session_id();
- }
-
- private function makeNamespace($namespace = null)
- {
- $namespace = $namespace ?: $this->namespace;
-
- return $namespace ?: self::DEFAULT_NAMESPACE;
- }
-
- /**
- * @param $namespace
- * @return mixed
- */
- private function getNamespaceData($namespace)
- {
- return isset($_SESSION[$namespace = $this->makeNamespace($namespace)])
- ? $_SESSION[$namespace]
- : array();
- }
-
- private function setNamespaceData($namespace, $value)
- {
- $_SESSION[$this->makeNamespace($namespace)] = $value;
- }
-
- public function regenerate($destroy = true)
- {
- session_regenerate_id($destroy);
-
- return $this->getId();
- }
-
- public function status()
- {
- return session_status();
- }
-
-}
diff --git a/vendor/pragmarx/support/src/Response.php b/vendor/pragmarx/support/src/Response.php
deleted file mode 100644
index db16dd627..000000000
--- a/vendor/pragmarx/support/src/Response.php
+++ /dev/null
@@ -1,12 +0,0 @@
-getPackageDir();
- }
-
- /**
- * Bootstrap the application events.
- *
- * @return void
- */
- public function boot()
- {
- $this->publishFiles();
-
- $this->loadViews();
- }
-
- /**
- * Boot for the child ServiceProvider
- *
- * @return void
- */
- protected function preRegister()
- {
- if (!$this->registered) {
- $this->loadHelper();
-
- $this->mergeConfig();
-
- $this->registerNamespace();
-
- $this->registerConfig();
-
- $this->registerFilesystem();
-
- $this->registered = true;
- }
- }
-
- /**
- * Register the service provider.
- *
- * @return void
- */
- public function register()
- {
- $this->preRegister();
- }
-
- /**
- * Get a configuration value
- *
- * @param string $key
- * @return mixed
- */
- public function getConfig($key = null)
- {
- // Waiting for https://github.com/laravel/framework/pull/7440
- // return $this->app['config']->get("{$this->packageVendor}.{$this->packageName}.config.{$key}");
-
- $key = $this->packageName . ($key ? '.' . $key : '');
-
- return $this->app['config']->get($key);
- }
-
- /**
- * Register the configuration object
- *
- * @return void
- */
- private function registerConfig()
- {
- $this->app->singleton($this->packageName . '.config', function ($app) {
- // Waiting for https://github.com/laravel/framework/pull/7440
- // return new Config($app['config'], $this->packageNamespace . '.config.');
-
- return new Config($app['config'], $this->packageNamespace . '.');
- });
- }
-
- /**
- * Register the Filesystem driver used by the child ServiceProvider
- *
- * @return void
- */
- private function registerFileSystem()
- {
- $this->app->singleton($this->packageName . '.fileSystem', function ($app) {
- return new Filesystem;
- });
- }
-
- public function registerServiceAlias($name, $class)
- {
- IlluminateAliasLoader::getInstance()->alias($name, $class);
- }
-
- public function registerServiceProvider($class)
- {
- $this->app->register($class);
- }
-
- private function publishFiles()
- {
- if (file_exists($configFile = $this->getRootDirectory() . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'config.php')) {
- $this->publishes(
- [$configFile => config_path($this->packageName . '.php')],
- 'config'
- );
- }
-
- if (file_exists($migrationsPath = $this->getRootDirectory() . DIRECTORY_SEPARATOR . 'migrations')) {
- $this->publishes(
- [$migrationsPath => base_path('database' . DIRECTORY_SEPARATOR . 'migrations')],
- 'migrations'
- );
- }
- }
-
- private function mergeConfig()
- {
- if (file_exists($configFile = $this->getRootDirectory() . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'config.php')) {
- $this->mergeConfigFrom(
- $configFile, $this->packageName
- );
- }
- }
-
- private function registerNamespace()
- {
- // Waiting for https://github.com/laravel/framework/pull/7440
- // $this->packageNamespace = "$this->packageVendor.$this->packageName";
-
- $this->packageNamespace = $this->packageName;
- }
-
- private function loadViews()
- {
- if (file_exists($viewsFolder = $this->getRootDirectory() . DIRECTORY_SEPARATOR . 'views')) {
- $this->loadViewsFrom($viewsFolder, "{$this->packageVendor}/{$this->packageName}");
- }
- }
-
- private function loadHelper()
- {
- require_once('helpers.php');
- }
-}
diff --git a/vendor/pragmarx/support/src/Timer.php b/vendor/pragmarx/support/src/Timer.php
deleted file mode 100644
index 8268e1b9c..000000000
--- a/vendor/pragmarx/support/src/Timer.php
+++ /dev/null
@@ -1,189 +0,0 @@
-isStopped($timer) && ! is_null(static::$startedAt[$timer]);
- }
-
- /**
- * Check if timer is stopped.
- *
- * @param string $timer
- * @return bool
- */
- private function isStopped($timer = 'default')
- {
- return ! is_null(static::$stoppedAt[$timer]);
- }
-
- /**
- * Get elapsed time in microtime.
- *
- * @param string $timer
- * @param bool $stop
- * @return number
- */
- private function elapsedRaw($timer = 'default', $stop = true)
- {
- if ($stop)
- {
- static::stop($timer);
- }
-
- $end = static::isStopped($timer)
- ? static::$stoppedAt[$timer]
- : microtime(true);
-
- return abs($end - static::$startedAt[$timer]);
- }
-
- /**
- * Get the elapsed time in string.
- *
- * @param string $timer
- * @param bool $stop
- * @return string
- */
- private function elapsed($timer = 'default', $stop = true)
- {
- return sprintf($this->getFormat(), static::elapsedRaw($timer, $stop));
- }
-
- /**
- * Provides static calls.
- *
- * @param $name
- * @param array $arguments
- * @return mixed
- */
- public static function __callStatic($name, array $arguments)
- {
- if ( ! static::$instance)
- {
- $class = __CLASS__;
-
- static::$instance = new $class;
- }
-
- return call_user_func_array([static::$instance, $name], $arguments);
- }
-
- /**
- * Provides dynamic calls.
- *
- * @param $name
- * @param array $arguments
- * @return mixed
- */
- public function __call($name, array $arguments)
- {
- return call_user_func_array([$this, $name], $arguments);
- }
-
-}
diff --git a/vendor/pragmarx/support/src/YamlConfig.php b/vendor/pragmarx/support/src/YamlConfig.php
deleted file mode 100644
index 7457b7f4f..000000000
--- a/vendor/pragmarx/support/src/YamlConfig.php
+++ /dev/null
@@ -1,296 +0,0 @@
-scanDir($directory)->reject(function ($item) {
- return $this->isDirectory($item) || $this->isYamlFile($item);
- })->mapWithKeys(function ($item, $key) {
- if (is_dir($item)) {
- return [basename($item) => $this->listFiles($item)->toArray()];
- }
-
- return [$key => $item];
- });
- }
-
- /**
- * Load yaml files from directory and add to Laravel config.
- *
- * @param string $directory
- * @param string $configKey
- * @param bool $parseYaml
- * @return Collection
- */
- public function loadToConfig($directory, $configKey, $parseYaml = true)
- {
- $loaded = $this->cleanArrayKeysRecursive(
- $this->listFiles($directory)->mapWithKeys(function ($file, $key) use ($directory, $parseYaml) {
- if ((is_string($file) && file_exists($file)) || is_array($file)) {
- list($file, $contents) = $this->loadFile($file, $parseYaml);
-
- return [($file ?: $key) => $contents];
- }
-
- return [$key => $file];
- })
- );
-
- return $this->findAndReplaceExecutableCodeToExhaustion($loaded, $configKey);
- }
-
- /**
- * Parse a yaml file.
- *
- * @param $contents
- * @return mixed
- */
- private function parseFile($contents)
- {
- return SymfonyYaml::parse($contents);
- }
-
- /**
- * Remove quotes.
- *
- * @param $string
- * @return string
- */
- private function removeQuotes($string)
- {
- return trim(trim($string, "'"), '"');
- }
-
- /**
- * Exaustively find and replace executable code.
- *
- * @param $contents
- * @return Collection
- */
- public function findAndReplaceExecutableCodeToExhaustion($contents, $configKey)
- {
- do {
- $this->replaced = 0;
-
- $contents = $this->recursivelyFindAndReplaceExecutableCode($contents);
-
- config([$configKey => $contents->toArray()]);
- } while ($this->replaced > 0);
-
- return $contents;
- }
-
- /**
- * Replace contents.
- *
- * @param $old
- * @return Collection
- */
- private function recursivelyFindAndReplaceExecutableCode($old)
- {
- if (is_array($old instanceof Arrayable ? $old->toArray() : $old)) {
- return collect($old)->map(function ($item) {
- return $this->recursivelyFindAndReplaceExecutableCode($item);
- });
- }
-
- $new = $this->replaceContents($old);
-
- if ($new !== $old) {
- $this->replaced++;
- }
-
- return $new;
- }
-
- /**
- * Replace contents.
- *
- * @param $contents
- * @return mixed
- */
- private function replaceContents($contents)
- {
- preg_match_all('/{{(.*)}}/', $contents, $matches);
-
- foreach ($matches[0] as $key => $match) {
- if (!empty($match)) {
- if (!is_null($resolved = $this->resolveVariable($matches[1][$key]))) {
- $contents = str_replace($matches[0][$key], $resolved, $contents);
- }
- }
- }
-
- return $contents;
- }
-
- /**
- * Resolve variable.
- *
- * @param $key
- * @return string
- */
- private function resolveVariable($key)
- {
- $key = trim($key);
-
- if ($result = $this->executeFunction($key)) {
- return $result;
- }
-
- return config($key);
- }
-
- /**
- * Execute function.
- *
- * @param $string
- * @return mixed
- */
- private function executeFunction($string)
- {
- preg_match_all('/(.*)\((.*)\)/', $string, $matches);
-
- if (count($matches) && count($matches[0])) {
- $function = $matches[1][0];
-
- return $function($this->removeQuotes($matches[2][0]));
- }
-
- return null;
- }
-
- /**
- * Load yaml file.
- *
- * @param $file
- * @param bool $parseYaml
- * @return mixed|string
- */
- private function loadFile($file, $parseYaml = true)
- {
- if (is_array($file)) {
- return [
- false,
- collect($file)->mapWithKeys(function($subfile, $key) use ($parseYaml) {
- list($subfile, $contents) = $this->loadFile($subfile, $parseYaml);
-
- return [$subfile => $contents];
- })->toArray()
- ];
- };
-
- $contents = file_get_contents($file);
-
- if ($parseYaml) {
- $contents = $this->parseFile($contents);
- }
-
- return [$file, $contents];
- }
-
- /**
- * Dump array to yaml.
- *
- * @param $input
- * @param int $inline
- * @param int $indent
- * @param int $flags
- * @return string
- */
- public function dump($input, $inline = 5, $indent = 4, $flags = 0)
- {
- return SymfonyYaml::dump($input, $inline, $indent, $flags);
- }
-
- /**
- * Remove extension from file name.
- *
- * @param $dirty
- * @return \Illuminate\Support\Collection|mixed
- */
- public function cleanArrayKeysRecursive($dirty)
- {
- if (is_array($dirty instanceof Arrayable ? $dirty->toArray() : $dirty)) {
- return collect($dirty)->mapWithKeys(function ($item, $key) {
- return [
- $this->cleanKey($key) => $this->cleanArrayKeysRecursive($item)
- ];
- });
- }
-
- return $dirty;
- }
-
- /**
- * Clean the array key.
- *
- * @param $key
- * @return mixed|string
- */
- public function cleanKey($key)
- {
- return is_string($key) && file_exists($key)
- ? preg_replace('/\.[^.]+$/', '', basename($key))
- : $key;
- }
-
- /**
- * Scan the directory for files.
- *
- * @param string $dir
- * @return \Illuminate\Support\Collection
- */
- private function scanDir($dir)
- {
- return collect(scandir($dir))->map(function ($item) use ($dir) {
- return $dir . DIRECTORY_SEPARATOR . $item;
- });
- }
-}
diff --git a/vendor/pragmarx/support/src/helpers.php b/vendor/pragmarx/support/src/helpers.php
deleted file mode 100644
index 1d9dda3b3..000000000
--- a/vendor/pragmarx/support/src/helpers.php
+++ /dev/null
@@ -1,1150 +0,0 @@
-
- * // Input //
- * $key_files = array(
- * "/etc/php5" => "/etc/php5",
- * "/etc/php5/cli" => "/etc/php5/cli",
- * "/etc/php5/cli/conf.d" => "/etc/php5/cli/conf.d",
- * "/etc/php5/cli/php.ini" => "/etc/php5/cli/php.ini",
- * "/etc/php5/conf.d" => "/etc/php5/conf.d",
- * "/etc/php5/conf.d/mysqli.ini" => "/etc/php5/conf.d/mysqli.ini",
- * "/etc/php5/conf.d/curl.ini" => "/etc/php5/conf.d/curl.ini",
- * "/etc/php5/conf.d/snmp.ini" => "/etc/php5/conf.d/snmp.ini",
- * "/etc/php5/conf.d/gd.ini" => "/etc/php5/conf.d/gd.ini",
- * "/etc/php5/apache2" => "/etc/php5/apache2",
- * "/etc/php5/apache2/conf.d" => "/etc/php5/apache2/conf.d",
- * "/etc/php5/apache2/php.ini" => "/etc/php5/apache2/php.ini"
- * );
- *
- * // Execute //
- * $tree = explodeTree($key_files, "/", true);
- *
- * // Show //
- * print_r($tree);
- *
- * // expects:
- * // Array
- * // (
- * // [etc] => Array
- * // (
- * // [php5] => Array
- * // (
- * // [__base_val] => /etc/php5
- * // [cli] => Array
- * // (
- * // [__base_val] => /etc/php5/cli
- * // [conf.d] => /etc/php5/cli/conf.d
- * // [php.ini] => /etc/php5/cli/php.ini
- * // )
- * //
- * // [conf.d] => Array
- * // (
- * // [__base_val] => /etc/php5/conf.d
- * // [mysqli.ini] => /etc/php5/conf.d/mysqli.ini
- * // [curl.ini] => /etc/php5/conf.d/curl.ini
- * // [snmp.ini] => /etc/php5/conf.d/snmp.ini
- * // [gd.ini] => /etc/php5/conf.d/gd.ini
- * // )
- * //
- * // [apache2] => Array
- * // (
- * // [__base_val] => /etc/php5/apache2
- * // [conf.d] => /etc/php5/apache2/conf.d
- * // [php.ini] => /etc/php5/apache2/php.ini
- * // )
- * //
- * // )
- * //
- * // )
- * //
- * // )
- *
- *
- * @author Kevin van Zonneveld
- * @author Lachlan Donald
- * @author Takkie
- * @copyright 2008 Kevin van Zonneveld (http://kevin.vanzonneveld.net)
- * @license http://www.opensource.org/licenses/bsd-license.php New BSD Licence
- * @version SVN: Release: $Id: explodeTree.inc.php 89 2008-09-05 20:52:48Z kevin $
- * @link http://kevin.vanzonneveld.net/
- *
- * @param array $array
- * @param string $delimiter
- * @param boolean $baseval
- *
- * @return array
- */
- function explodeTree($array, $delimiter = '_', $baseval = false)
- {
- if (!is_array($array)) return false;
- $splitRE = '/' . preg_quote($delimiter, '/') . '/';
- $returnArr = array();
- foreach ($array as $key => $val)
- {
- // Get parent parts and the current leaf
- $parts = preg_split($splitRE, $key, -1, PREG_SPLIT_NO_EMPTY);
- $leafPart = array_pop($parts);
-
- // Build parent structure
- // Might be slow for really deep and large structures
- $parentArr = &$returnArr;
- foreach ($parts as $part)
- {
- if (!isset($parentArr[$part]))
- {
- $parentArr[$part] = array();
- } elseif (!is_array($parentArr[$part]))
- {
- if ($baseval)
- {
- $parentArr[$part] = array('__base_val' => $parentArr[$part]);
- } else {
- $parentArr[$part] = array();
- }
- }
- $parentArr = &$parentArr[$part];
- }
-
- // Add the final part to the structure
- if (empty($parentArr[$leafPart]))
- {
- $parentArr[$leafPart] = $val;
- } elseif ($baseval && is_array($parentArr[$leafPart]))
- {
- $parentArr[$leafPart]['__base_val'] = $val;
- }
- }
- return $returnArr;
- }
-}
-
-if ( ! function_exists('array_get') && ! function_exists('app'))
-{
- function array_get($array, $key, $default = null)
- {
- if (is_null($key)) return $array;
-
- if (isset($array[$key])) return $array[$key];
-
- foreach (explode('.', $key) as $segment)
- {
- if ( ! is_array($array) || ! array_key_exists($segment, $array))
- {
- return value($default);
- }
-
- $array = $array[$segment];
- }
-
- return $array;
- }
-}
-
-if ( ! function_exists('value'))
-{
- /**
- * Return the default value of the given value.
- *
- * @param mixed $value
-* @return mixed
- */
- function value($value)
- {
- return $value instanceof Closure ? $value() : $value;
- }
-}
-
-if ( ! function_exists('array_pluck'))
-{
- /**
- * Pluck an array of values from an array. (Taylor Otwell)
- *
- * @param array $array
- * @param string $value
- * @param string $key
- * @return array
- */
- function array_pluck($array, $value, $key = null)
- {
- $results = array();
-
- foreach ($array as $item)
- {
- $itemValue = is_object($item) ? $item->{$value} : $item[$value];
-
- // If the key is "null", we will just append the value to the array and keep
- // looping. Otherwise we will key the array using the value of the key we
- // received from the developer. Then we'll return the final array form.
- if (is_null($key))
- {
- $results[] = $itemValue;
- }
- else
- {
- $itemKey = is_object($item) ? $item->{$key} : $item[$key];
-
- $results[$itemKey] = $itemValue;
- }
- }
-
- return $results;
- }
-}
-
-if ( ! function_exists('format_masked'))
-{
- function format_masked($val, $mask, $charMask = '9')
- {
- $maskared = '';
-
- $k = 0;
-
- for ($i = 0; $i <= strlen($mask)-1; $i++)
- {
- if ($mask[$i] == $charMask)
- {
- if (isset($val[$k]))
- {
- $maskared .= $val[$k++];
- }
- }
- else
- {
- if (isset($mask[$i]))
- {
- $maskared .= $mask[$i];
- }
- }
- }
-
- return $maskared;
- }
-}
-
-if ( ! function_exists('d'))
-{
- function d($data = '')
- {
- z($data);
- }
-}
-
-if ( ! function_exists('z'))
-{
- function z()
- {
- array_map(function($x) { (new Dumper)->dump($x); }, func_get_args());
-
- try
- {
- if (function_exists('app'))
- {
- if (app()->bound('log'))
- {
- app()->make('log')->info($data);
- }
- }
- }
- catch(\Exception $exception)
- {
-
- }
- }
-}
-
-if ( ! function_exists('dd'))
-{
- function dd($data)
- {
- zz($data);
- }
-}
-
-if ( ! function_exists('zz'))
-{
- function zz($data)
- {
- z($data);
-
- die;
- }
-}
-
-/**
- * For usage check
- *
- * http://stackoverflow.com/questions/96759/how-do-i-sort-a-multidimensional-array-in-php
- *
- */
-if ( ! function_exists('make_comparer'))
-{
- function make_comparer()
- {
- // Normalize criteria up front so that the comparer finds everything tidy
- $criteria = func_get_args();
- foreach ($criteria as $index => $criterion)
- {
- $criteria[$index] = is_array($criterion)
- ? array_pad($criterion, 3, null)
- : array($criterion, SORT_ASC, null);
- }
-
- return function ($first, $second) use (&$criteria)
- {
- foreach ($criteria as $criterion)
- {
- // How will we compare this round?
- list($column, $sortOrder, $projection) = $criterion;
- $sortOrder = $sortOrder === SORT_DESC ? -1 : 1;
-
- // If a projection was defined project the values now
- if ($projection)
- {
- $lhs = call_user_func($projection, $first[$column]);
- $rhs = call_user_func($projection, $second[$column]);
- } else {
- $lhs = $first[$column];
- $rhs = $second[$column];
- }
-
- // Do the actual comparison; do not return if equal
- if ($lhs < $rhs)
- {
- return -1 * $sortOrder;
- } else if ($lhs > $rhs)
- {
- return 1 * $sortOrder;
- }
- }
-
- return 0; // tiebreakers exhausted, so $first == $second
- };
- }
-}
-
-if ( ! function_exists('array_insert'))
-{
- function array_insert(&$array, $insert, $position = -1)
- {
- $array = array_values($array);
-
- $position = ($position == -1) ? (count($array)) : $position;
-
- if ($position != (count($array)))
- {
- $ta = $array;
-
- for ($i = $position; $i < (count($array)); $i++)
- {
- if (!isset($array[$i]))
- {
- die(print_r($array, 1) . "\r\nInvalid array: All keys must be numerical and in sequence.");
- }
-
- $tmp[$i + 1] = $array[$i];
- unset($ta[$i]);
- }
-
- $ta[$position] = $insert;
- $array = $ta + $tmp;
- //print_r($array);
- } else {
- $array[$position] = $insert;
- }
-
- //ksort($array);
- return true;
- }
-}
-
-if ( ! function_exists('is_json'))
-{
- function is_json($string)
- {
- json_decode($string);
-
- return (json_last_error() == JSON_ERROR_NONE);
- }
-}
-
-if ( ! function_exists('is_xml'))
-{
- function is_xml($string)
- {
- try
- {
- $doc = simplexml_load_string($string);
- }
- catch (\Exception $exception)
- {
- return false;
- }
-
- return ! empty($doc);
- }
-}
-
-if ( ! function_exists('xml_to_json'))
-{
- function xml_to_json($string)
- {
- $xml = simplexml_load_string($string);
-
- $json = json_encode($xml);
-
- return json_decode($json, TRUE);
- }
-}
-
-if ( ! function_exists('studly')) {
-
- /**
- * Convert a value to studly caps case.
- *
- * @param string $value
- * @return string
- */
- function studly($value)
- {
- $value = ucwords(str_replace(array('-', '_'), ' ', $value));
-
- return str_replace(' ', '', $value);
- }
-}
-
-if ( ! function_exists('camel')) {
- /**
- * Convert a value to camel case.
- *
- * @param string $value
- * @return string
- */
- function camel($value)
- {
- return lcfirst(studly($value));
- }
-}
-
-if ( ! function_exists('snake')) {
-
- /**
- * Convert a string to snake case.
- *
- * @param string $value
- * @param string $delimiter
- * @return string
- */
- function snake($value, $delimiter = '_')
- {
- $replace = '$1' . $delimiter . '$2';
-
- return ctype_lower($value) ? $value : strtolower(preg_replace('/(.)([A-Z])/', $replace, $value));
- }
-}
-
-if ( ! function_exists('camel')) {
- /**
- * Convert a value to camel case.
- *
- * @param string $value
- * @return string
- */
- function camel($value)
- {
- return lcfirst(studly($value));
- }
-}
-
-if ( ! function_exists('array_equal')) {
-
- function array_equal($a, $b)
- {
- $a = one_dimension_array($a);
-
- $b = one_dimension_array($b);
-
- return array_diff($a, $b) === array_diff($b, $a);
- }
-
-}
-
-if ( ! function_exists('one_dimension_array'))
-{
-
- function one_dimension_array($array)
- {
- $it = new \RecursiveIteratorIterator(new \RecursiveArrayIterator($array));
-
- return iterator_to_array($it, false);
- }
-
-}
-
-if ( ! function_exists( 'array_implode' ))
-{
- function array_implode( $glue, $separator, $array )
- {
- if ( ! is_array( $array ) )
- {
- return $array;
- }
-
- $string = array();
-
- foreach ( $array as $key => $val )
- {
- if ( is_array( $val ) )
- {
- $val = multi_implode(',', $val );
- }
-
- $string[] = "{$key}{$glue}{$val}";
- }
- return implode( $separator, $string );
- }
-}
-
-if ( ! function_exists( 'multi_implode' ))
-{
- function multi_implode($glue, $array)
- {
- if ( ! is_array( $array ) )
- {
- return $array;
- }
-
- $ret = '';
-
- foreach ($array as $item)
- {
- if (is_array($item))
- {
- $ret .= multi_implode($item, $glue) . $glue;
- }
- else
- {
- $ret .= $item . $glue;
- }
- }
-
- $ret = substr($ret, 0, 0-strlen($glue));
-
- return $ret;
- }
-}
-
-if ( ! function_exists( 'get_ipv4_range' )) {
- /**
- *
- *get the first ip and last ip from cidr(network id and mask length)
- * i will integrate this function into "Rong Framework" :)
- * @author admin@wudimei.com
- * @param string $cidr 56.15.0.6/16 , [network id]/[mask length]
- * @return array $ipArray = array( 0 =>"first ip of the network", 1=>"last ip of the network" );
- * Each element of $ipArray's type is long int,use long2ip( $ipArray[0] ) to convert it into ip string.
- * example:
- * list( $long_startIp , $long_endIp) = get_ipv4_range( "56.15.0.6/16" );
- * echo "start ip:" . long2ip( $long_startIp );
- * echo "
";
- * echo "end ip:" . long2ip( $long_endIp );
- */
-
- function get_ipv4_range($cidr)
- {
-
- list($ip, $mask) = explode('/', $cidr);
-
- $maskBinStr = str_repeat("1", $mask) . str_repeat("0", 32 - $mask); //net mask binary string
- $inverseMaskBinStr = str_repeat("0", $mask) . str_repeat("1", 32 - $mask); //inverse mask
-
- $ipLong = ip2long($ip);
- $ipMaskLong = bindec($maskBinStr);
- $inverseIpMaskLong = bindec($inverseMaskBinStr);
- $netWork = $ipLong & $ipMaskLong;
-
- $start = $netWork + 1; //去掉网络号 ,ignore network ID(eg: 192.168.1.0)
-
- $end = ($netWork | $inverseIpMaskLong) - 1; //去掉广播地址 ignore brocast IP(eg: 192.168.1.255)
- return array($start, $end);
- }
-}
-
-if ( ! function_exists( 'ipv4_match_mask' ))
-{
- function ipv4_match_mask($ip, $network)
- {
- // Determines if a network in the form of
- // 192.168.17.1/16 or
- // 127.0.0.1/255.255.255.255 or
- // 10.0.0.1
- // matches a given ip
- $ipv4_arr = explode('/', $network);
-
- if (count($ipv4_arr) == 1)
- {
- $ipv4_arr[1] = '255.255.255.255';
- }
-
- $network_long = ip2long($ipv4_arr[0]);
-
- $x = ip2long($ipv4_arr[1]);
- $mask = long2ip($x) == $ipv4_arr[1] ? $x : 0xffffffff << (32 - $ipv4_arr[1]);
- $ipv4_long = ip2long($ip);
-
- return ($ipv4_long & $mask) == ($network_long & $mask);
- }
-}
-
-if ( ! function_exists( 'in_array_wildcard' ))
-{
- function in_array_wildcard($what, $array)
- {
- foreach ($array as $pattern)
- {
- if (\Illuminate\Support\Str::is($pattern, $what))
- {
- return true;
- }
- }
-
- return false;
- }
-}
-
-if ( ! function_exists( 'starts_with' ))
-{
- function starts_with($haystack, $needle)
- {
- return \Illuminate\Support\Str::startsWith($haystack, $needle);
- }
-}
-
-if ( ! function_exists( 'ends_with' ))
-{
- function ends_with($haystack, $needle)
- {
- return \Illuminate\Support\Str::endsWith($haystack, $needle);
- }
-}
-
-if ( ! function_exists( 'closure_dump' ))
-{
- function closure_dump(Closure $c)
- {
- $str = 'function (';
- $r = new ReflectionFunction($c);
- $params = array();
- foreach ($r->getParameters() as $p)
- {
- $s = '';
- if ($p->isArray())
- {
- $s .= 'array ';
- }
- else if ($p->getClass())
- {
- $s .= $p->getClass()->name . ' ';
- }
- if ($p->isPassedByReference())
- {
- $s .= '&';
- }
- $s .= '$' . $p->name;
- if ($p->isOptional())
- {
- $s .= ' = ' . var_export($p->getDefaultValue(), TRUE);
- }
- $params [] = $s;
- }
- $str .= implode(', ', $params);
- $str .= '){' . PHP_EOL;
- $lines = file($r->getFileName());
- for ($l = $r->getStartLine(); $l < $r->getEndLine(); $l++)
- {
- $str .= $lines[$l];
- }
- return $str;
- }
-}
-
-if ( ! function_exists( 'db_listen' ))
-{
- function db_listen($dump = true, $log = true)
- {
- \DB::listen(function() use ($dump, $log)
- {
- $arguments = func_get_args();
-
- if (is_object($arguments[0])) {
- $sql = $arguments[0]->sql;
- $bindings = $arguments[0]->bindings;
- } else {
- $sql = $arguments[0];
- $bindings = $arguments[1];
- }
- if ($dump)
- {
- var_dump($sql);
- var_dump($bindings);
- }
-
- if ($log)
- {
- \Log::info($sql);
- \Log::info($bindings);
- }
- });
- }
-}
-
-if ( ! function_exists( 'get_class_name_from_file' ))
-{
- function get_class_name_from_file($file, $baseDir = '', $baseNamespace = '')
- {
- $class = $withoutExt = preg_replace('/\\.[^.\\s]{3,4}$/', '', $file);
-
- $class = $baseNamespace . substr($class, strlen($baseDir));
-
- return str_replace('/', '\\', $class);
- }
-}
-
-if ( ! function_exists( 'get_class_and_namespace' ))
-{
- function get_class_and_namespace($file, $asString = false)
- {
- $fp = fopen($file, 'r');
-
- $class = $namespace = $buffer = '';
-
- $i = 0;
-
- while (!$class)
- {
- if (feof($fp))
- {
- break;
- }
-
- $buffer .= fread($fp, 512);
- $tokens = @token_get_all($buffer);
-
- if (strpos($buffer, '{') === false)
- {
- continue;
- }
-
- for (;$i> 10), $decimals) . $rank;
- }
-}
-
-if ( ! function_exists( 'call' ))
-{
- function call($className, $method = null, $arguments = [])
- {
- if ( ! $method)
- {
- list($className, $method) = explode('::', $className);
- }
-
- if ( ! is_array($arguments))
- {
- $arguments = [$arguments];
- }
-
- return call_user_func_array([$className, $method], $arguments);
- }
-}
-
-if ( ! function_exists( 'to_carbon' ))
-{
- function to_carbon($value, $alternateFormat = null, $defaultTime = null)
- {
- // If it's already a Carbon object, return it.
- if ($value instanceof Carbon\Carbon)
- {
- return $value;
- }
-
- // If this value is an integer, we will assume it is a UNIX timestamp's value
- // and format a Carbon object from this timestamp. This allows flexibility
- // when defining your date fields as they might be UNIX timestamps here.
- if (is_numeric($value))
- {
- return Carbon\Carbon::createFromTimestamp($value);
- }
-
- $value = str_replace('/', '-', $value);
-
- $value = str_replace('\\', '-', $value);
-
- // Try to convert it using strtotime().
- if (($date = strtotime($value)) !== false)
- {
- return Carbon\Carbon::createFromTimestamp($date);
- }
-
- // Finally, we will just assume this date is in the format passed as parameter
- // or we will try to use a default format.
- elseif ( ! $value instanceof DateTime)
- {
- $alternateFormat = $alternateFormat ?: 'Y-m-d H:i:s';
-
- return Carbon\Carbon::createFromFormat($alternateFormat, $value);
- }
-
- return Carbon\Carbon::instance($value);
- }
-}
-
-if ( ! function_exists( 'get_current_namespaces' ))
-{
- function get_current_namespaces()
- {
- $namespaces = [];
-
- foreach(get_declared_classes() as $name)
- {
- if (($pos = strrpos($name, '\\')) !== false)
- {
- $namespace = substr($name, 0, $pos);
-
- $namespaces[$namespace] = $namespace;
- }
- }
-
- return $namespaces;
- }
-}
-
-if ( ! function_exists( 'get_file_namespace' ))
-{
- function get_file_namespace($filePath)
- {
- $namespaces = get_current_namespaces();
-
- include $filePath;
-
- $newNamespaces = get_current_namespaces();
-
- $diff = array_diff_assoc($newNamespaces, $namespaces);
-
- if ( ! $diff)
- {
- return null;
- }
-
- $contents = file_get_contents($filePath);
-
- foreach($diff as $namespace)
- {
- if (strpos($contents, 'namespace '.$namespace) !== false)
- {
- return $namespace;
- }
- }
-
- return false;
- }
-}
-
-if ( ! function_exists( 'array_permute' ))
-{
- function array_permute($items, $perms = [])
- {
- if (empty($items)) {
- $return = array($perms);
- } else {
- $return = array();
- for ($i = count($items) - 1; $i >= 0; --$i) {
- $newitems = $items;
- $newperms = $perms;
- list($foo) = array_splice($newitems, $i, 1);
- array_unshift($newperms, $foo);
- $return = array_merge($return, array_permute($newitems, $newperms));
- }
- }
- return $return;
- }
-}
-
-if ( ! function_exists( 'is_uuid' ))
-{
- function is_uuid($guid)
- {
- if (preg_match('/^\{?[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}\}?$/', strtoupper($guid))) {
- return true;
- }
-
- return false;
- }
-}
-
-if ( ! function_exists( 'array_strings_generator' ))
-{
- function array_strings_generator($array, $base_string)
- {
- $results = [];
-
- $array = [ 0 => $array ];
-
- $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
-
- foreach ($iterator as $key => $value)
- {
- for ($i = $iterator->getDepth() - 1; $i > 0; $i--)
- {
- $results[$iterator->getSubIterator($i)->key()] = $value;
- }
-
- if (count($results) === count($array[0]))
- {
- $string = $base_string;
-
- foreach ($results as $name => $item)
- {
- $string = str_replace($name, $item, $string);
- }
-
- yield $string;
- }
- }
-
- return null;
- }
-}
-
-if ( ! function_exists( 'git_version' ))
-{
- function git_version()
- {
- exec('git describe --always',$version_mini_hash);
-
- exec('git rev-list HEAD | wc -l',$version_number);
-
- exec('git log -1',$line);
-
- $version['short'] = "v1.".trim($version_number[0])." - ".$version_mini_hash[0];
-
- $version['full'] = "v1.".trim($version_number[0]).".$version_mini_hash[0] (".str_replace('commit ','',$line[0]).")";
-
- return $version;
- }
-}
-
-
-if ( ! function_exists( 'str_to_utf8' ))
-{
- function str_to_utf8($str) {
- if (mb_detect_encoding($str, 'UTF-8', true) === false) {
- $str = utf8_encode($str);
- }
-
- return $str;
- }
-}
-
-if ( ! function_exists( 'get_class_path' ))
-{
- function get_class_path($class)
- {
- if (! class_exists($class)) {
- return null;
- }
-
- return dirname((new ReflectionClass($class))->getFileName());
- }
-}
-
-if ( ! function_exists( 'ipv4_in_range' ))
-{
- function ipv4_in_range($ip, $range)
- {
- return IpAddress::ipv4InRange($ip, $range);
- }
-}
-
-if (! function_exists('instantiate')) {
- /**
- * Instantiate a class.
- *
- * @param $abstract
- * @param array $parameters
- * @return object
- */
- function instantiate($abstract, $parameters = [])
- {
- if (is_array($parameters) && count($parameters)) {
- $reflection = new ReflectionClass($abstract);
-
- return $reflection->newInstanceArgs((array) $parameters);
- }
-
- return app($abstract);
- }
-}
diff --git a/vendor/pragmarx/support/tests/.gitkeep b/vendor/pragmarx/support/tests/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/vendor/pragmarx/tracker/.github/ISSUE_TEMPLATE/bug_report.md b/vendor/pragmarx/tracker/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index 7ef28b925..000000000
--- a/vendor/pragmarx/tracker/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-name: Bug report
-about: Create a report to help us improve
-title: ''
-labels: ''
-assignees: ''
-
----
-
-**Describe the bug**
-A clear and concise description of what the bug is.
-
-**To Reproduce**
-Steps to reproduce the behavior:
-1. Go to '...'
-2. Click on '....'
-3. Scroll down to '....'
-4. See error
-
-**Expected behavior**
-A clear and concise description of what you expected to happen.
-
-**Screenshots**
-If applicable, add screenshots to help explain your problem.
-
-**System**
- - OS: [e.g. iOS]
- - Browser [e.g. chrome, safari]
- - Version [e.g. 22]
-
-**Additional context**
-Add any other context about the problem here.
diff --git a/vendor/pragmarx/tracker/.github/ISSUE_TEMPLATE/feature_request.md b/vendor/pragmarx/tracker/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index bbcbbe7d6..000000000
--- a/vendor/pragmarx/tracker/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-name: Feature request
-about: Suggest an idea for this project
-title: ''
-labels: ''
-assignees: ''
-
----
-
-**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/vendor/pragmarx/tracker/.gitignore b/vendor/pragmarx/tracker/.gitignore
deleted file mode 100644
index f282dcfa2..000000000
--- a/vendor/pragmarx/tracker/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-/vendor
-composer.phar
-.DS_Store
-.idea
-.idea/
diff --git a/vendor/pragmarx/tracker/.scrutinizer.yml b/vendor/pragmarx/tracker/.scrutinizer.yml
deleted file mode 100644
index 0a08be255..000000000
--- a/vendor/pragmarx/tracker/.scrutinizer.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-# .scrutinizer.yml
-tools:
- php_cs_fixer:
- config: { level: psr2 } # or psr1 if you would just like to get fixes for PSR1
diff --git a/vendor/pragmarx/tracker/.travis.yml b/vendor/pragmarx/tracker/.travis.yml
deleted file mode 100644
index 507884340..000000000
--- a/vendor/pragmarx/tracker/.travis.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-language: php
-
-php:
- - 5.3
- - 5.4
- - 5.5
- - 5.6
- - 7.0
- - hhvm
-
-install:
- - travis_retry composer install --no-interaction --prefer-source
-
-script:
- - phpunit --verbose
diff --git a/vendor/pragmarx/tracker/LICENSE b/vendor/pragmarx/tracker/LICENSE
deleted file mode 100644
index d48a1ca11..000000000
--- a/vendor/pragmarx/tracker/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (C) Antonio Carlos Ribeiro
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/pragmarx/tracker/changelog.md b/vendor/pragmarx/tracker/changelog.md
deleted file mode 100644
index 865103c80..000000000
--- a/vendor/pragmarx/tracker/changelog.md
+++ /dev/null
@@ -1,174 +0,0 @@
-# Changelog
-
-## [3.4.1] - 2019-09-11
-### Fixed
-- Removed support for Laravel 4
-
-## [3.4.0] - 2019-09-10
-### New
-- Added support for Laravel 6
-
-## [3.3] - 2018-03-19
-### Fixed
-- Laravel 5.6 compatibility
-
-## [3.1.8] - 2017-07-31
-### New
-- Added a config to enable/disable console logging
-
-## [3.1.7] - 2017-07-31
-### New
-- Disable console logging
-
-## [3.1.6] - 2017-07-31
-### Fixed
-- Fix wrong date column being used in log view
-
-## [3.1.5] - 2017-07-30
-### Fixed
-- Fix multiple sessions for the same request
-
-## [3.1.4] - 2017-06-25
-### Fixed
-- Browser Agent name is now being hashed
-
-## [3.1.3] - 2017-06-20
-### New
-- Show untrackable items in log
-
-
-## [3.1.2] - 2017-01-31
-### New
-- Upgraded datatables
-
-## [3.1.1] - 2017-01-31
-### New
-- Upgraded to SBAdmin 2 3.3.7+1
-
-
-## [3.1.0] - 2017-01-31
-### New
-- Upgrade to Laravel 5.4
-
-## [3.0.0] - 2016-08-24
-### New
-- Cache
-
-## [2.0.9] - 2016-08-23
-### Added
-- Support for multiple authentication drivers
-### Fixed
-- Migrations for languages
-- Query log for Laravel 5.2 and Laravel 5.3
-
-## [2.0.6] - 2016-08-23
-### Added
-- Changed to PSR-2 using StyleCI
-
-## [2.0.5] - 2016-08-23
-### Added
-- Add onlineUsers method
-
-## [2.0.4] - 2016-08-22
-### Fixed
-- Route name on log
-- Sessions for tracking visitors
-### Added
-- Log languages (please check upgrade.md)
-- Localization
-
-## [2.0.3] - 2016-08-22
-### Fixed
-- Routes for stats are now being correctly ignored on Laravel 5.x
-
-## [2.0.2] - 2016-08-20
-### Add
-- Support for Laravel 5.3
-- Middleware for Laravel 5.x
-- Allow table to be prefixed
-### Fixed
-- SB Admin 2 install instructions
-
-## [2.0.1] - 2016-08-18
-### Changed
-- Upgraded Ramsey UUID to V3
-
-## [2.0.0] - 2015-11-23
-### Notes ! This is a breaking change
-- You must execute
- php artisan tracker:tables
- then
- php artisan migrate
-### Added
-- Referer to tracker_log
-- Method Tracker::userDevices()
-- Range filter on data access methods
-### Fixed
-- Prevent migrations files from being overwritten
-
-## [1.0.8] - 2015-11-23
-### Fixed
-- Event log error when opening stats
-### Added
-- Must be admin to access stats
-
-## [1.0.7] - 2015-11-22
-### Added
-- Support for GeoIp2
-### Changed
-- Upgraded SB Admin 2 to 1.0.7
-
-## [1.0.6] - 2015-11-21
-### Added
-- Referer parsing, to store marketing attribution data (medium, source and search term)
-- Tracker::trackVisit()
-- Tracker::trackEvent()
-### Changed
-- Move to UA-PHP instead of PragmaRX/UaParser
-- Using a better bot detector
-### Fixed
-- Correctly get the application url
-- Migrations for MySQL
-- Sessions now change when a different users logs in
-- isPhone compatibility
-### Changed
-- Use ua-php instead of ua-parser directly
-- No need to execute tracker:updateparser during install anymore
-
-## [1.0.5] - 2015-03-10
-### Added
-- Middleware filter to routes
-
-## [1.0.4] - 2015-03-10
-### Fixed
-- Console exception handler
-
-## [1.0.3] - 2015-03-08
-### Fixed
-- Datatables bug
-
-## [1.0.2] - 2015-03-07
-### Fixed
-- Migrations for MySQL
-
-## [1.0.1] - 2015-03-06
-### Changed
-- Use a stable version of datatables
-
-## [1.0.0] - 2015-02-21
-### Changed
-- Added support for Laravel 5
-
-## [0.5.2] - 2014-07-06
-### Fixed
-- HTTP cache by removing PHP session_start
-
-## [0.5.1] - 2014-07-03
-### Added
-- A 'Today' filter option on Stats Panel
-- All stats tables are now Google Charts Tables (paginated)
-
-## [0.5.0] - 2014-07-02
-### Changed
-- Moved pie charts from flot to Google Charts
-
diff --git a/vendor/pragmarx/tracker/composer.json b/vendor/pragmarx/tracker/composer.json
deleted file mode 100644
index e8d1f033d..000000000
--- a/vendor/pragmarx/tracker/composer.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "name": "pragmarx/tracker",
-
- "description": "A Laravel Visitor Tracker",
-
- "keywords": ["tracker", "tracking", "visitor", "logging", "user agent", "mobile detection", "laravel", "pragmarx"],
-
- "license": "MIT",
-
- "authors": [
- {
- "name": "Antonio Carlos Ribeiro",
- "email": "acr@antoniocarlosribeiro.com",
- "role": "Creator & Designer"
- }
- ],
-
- "require": {
- "php": ">=5.3.7",
- "doctrine/dbal": "^2.6",
- "laravel/framework": "~4|~5|~6",
- "pragmarx/support": "~0.6|~0.7|~0.8|~0.9",
- "ramsey/uuid": "~3",
- "jenssegers/agent": "~2.1",
- "ua-parser/uap-php" : "~3.4",
- "pragmarx/datatables": "^1.4.12",
- "snowplow/referer-parser": "~0.1",
- "jaybizzle/crawler-detect": "~1.0",
- "psr/log": "~1.0"
- },
-
- "suggest": {
- "geoip/geoip": "~1.14",
- "geoip2/geoip2": "~2.0"
- },
-
- "require-dev": {
- "mockery/mockery": "~0.8"
- },
-
- "autoload": {
- "psr-4": {
- "PragmaRX\\Tracker\\": "src/"
- }
- },
-
- "extra": {
- "branch-alias": {
- "dev-master": "2.1.x-dev"
- },
- "laravel": {
- "providers": [
- "PragmaRX\\Tracker\\Vendor\\Laravel\\ServiceProvider"
- ],
- "aliases": {
- "Tracker": "PragmaRX\\Tracker\\Vendor\\Laravel\\Facade"
- }
- }
- },
-
- "minimum-stability": "dev",
- "prefer-stable": true
-}
diff --git a/vendor/pragmarx/tracker/composer.lock b/vendor/pragmarx/tracker/composer.lock
deleted file mode 100644
index f82f5dcb6..000000000
--- a/vendor/pragmarx/tracker/composer.lock
+++ /dev/null
@@ -1,3314 +0,0 @@
-{
- "_readme": [
- "This file locks the dependencies of your project to a known state",
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
- "This file is @generated automatically"
- ],
- "content-hash": "4ea87329d945ec0d8a1893b9419ab7c4",
- "packages": [
- {
- "name": "composer/ca-bundle",
- "version": "1.2.4",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/ca-bundle.git",
- "reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/ca-bundle/zipball/10bb96592168a0f8e8f6dcde3532d9fa50b0b527",
- "reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527",
- "shasum": ""
- },
- "require": {
- "ext-openssl": "*",
- "ext-pcre": "*",
- "php": "^5.3.2 || ^7.0 || ^8.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8",
- "psr/log": "^1.0",
- "symfony/process": "^2.5 || ^3.0 || ^4.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Composer\\CaBundle\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
- }
- ],
- "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
- "keywords": [
- "cabundle",
- "cacert",
- "certificate",
- "ssl",
- "tls"
- ],
- "time": "2019-08-30T08:44:50+00:00"
- },
- {
- "name": "doctrine/cache",
- "version": "v1.8.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/cache.git",
- "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/cache/zipball/d768d58baee9a4862ca783840eca1b9add7a7f57",
- "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57",
- "shasum": ""
- },
- "require": {
- "php": "~7.1"
- },
- "conflict": {
- "doctrine/common": ">2.2,<2.4"
- },
- "require-dev": {
- "alcaeus/mongo-php-adapter": "^1.1",
- "doctrine/coding-standard": "^4.0",
- "mongodb/mongodb": "^1.1",
- "phpunit/phpunit": "^7.0",
- "predis/predis": "~1.0"
- },
- "suggest": {
- "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.8.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "Caching library offering an object-oriented API for many cache backends",
- "homepage": "https://www.doctrine-project.org",
- "keywords": [
- "cache",
- "caching"
- ],
- "time": "2018-08-21T18:01:43+00:00"
- },
- {
- "name": "doctrine/dbal",
- "version": "v2.9.2",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/dbal.git",
- "reference": "22800bd651c1d8d2a9719e2a3dc46d5108ebfcc9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/22800bd651c1d8d2a9719e2a3dc46d5108ebfcc9",
- "reference": "22800bd651c1d8d2a9719e2a3dc46d5108ebfcc9",
- "shasum": ""
- },
- "require": {
- "doctrine/cache": "^1.0",
- "doctrine/event-manager": "^1.0",
- "ext-pdo": "*",
- "php": "^7.1"
- },
- "require-dev": {
- "doctrine/coding-standard": "^5.0",
- "jetbrains/phpstorm-stubs": "^2018.1.2",
- "phpstan/phpstan": "^0.10.1",
- "phpunit/phpunit": "^7.4",
- "symfony/console": "^2.0.5|^3.0|^4.0",
- "symfony/phpunit-bridge": "^3.4.5|^4.0.5"
- },
- "suggest": {
- "symfony/console": "For helpful console commands such as SQL execution and import of files."
- },
- "bin": [
- "bin/doctrine-dbal"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.9.x-dev",
- "dev-develop": "3.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\DBAL\\": "lib/Doctrine/DBAL"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- }
- ],
- "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.",
- "homepage": "https://www.doctrine-project.org/projects/dbal.html",
- "keywords": [
- "abstraction",
- "database",
- "dbal",
- "mysql",
- "persistence",
- "pgsql",
- "php",
- "queryobject"
- ],
- "time": "2018-12-31T03:27:51+00:00"
- },
- {
- "name": "doctrine/event-manager",
- "version": "v1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/event-manager.git",
- "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/event-manager/zipball/a520bc093a0170feeb6b14e9d83f3a14452e64b3",
- "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3",
- "shasum": ""
- },
- "require": {
- "php": "^7.1"
- },
- "conflict": {
- "doctrine/common": "<2.9@dev"
- },
- "require-dev": {
- "doctrine/coding-standard": "^4.0",
- "phpunit/phpunit": "^7.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\": "lib/Doctrine/Common"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- },
- {
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com"
- }
- ],
- "description": "Doctrine Event Manager component",
- "homepage": "https://www.doctrine-project.org/projects/event-manager.html",
- "keywords": [
- "event",
- "eventdispatcher",
- "eventmanager"
- ],
- "time": "2018-06-11T11:59:03+00:00"
- },
- {
- "name": "doctrine/inflector",
- "version": "v1.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/inflector.git",
- "reference": "5527a48b7313d15261292c149e55e26eae771b0a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a",
- "reference": "5527a48b7313d15261292c149e55e26eae771b0a",
- "shasum": ""
- },
- "require": {
- "php": "^7.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "Common String Manipulations with regard to casing and singular/plural rules.",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "inflection",
- "pluralize",
- "singularize",
- "string"
- ],
- "time": "2018-01-09T20:05:19+00:00"
- },
- {
- "name": "doctrine/lexer",
- "version": "1.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/lexer.git",
- "reference": "e17f069ede36f7534b95adec71910ed1b49c74ea"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/lexer/zipball/e17f069ede36f7534b95adec71910ed1b49c74ea",
- "reference": "e17f069ede36f7534b95adec71910ed1b49c74ea",
- "shasum": ""
- },
- "require": {
- "php": "^7.2"
- },
- "require-dev": {
- "doctrine/coding-standard": "^6.0",
- "phpstan/phpstan": "^0.11.8",
- "phpunit/phpunit": "^8.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
- "homepage": "https://www.doctrine-project.org/projects/lexer.html",
- "keywords": [
- "annotations",
- "docblock",
- "lexer",
- "parser",
- "php"
- ],
- "time": "2019-07-30T19:33:28+00:00"
- },
- {
- "name": "dragonmantank/cron-expression",
- "version": "v2.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/dragonmantank/cron-expression.git",
- "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/72b6fbf76adb3cf5bc0db68559b33d41219aba27",
- "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27",
- "shasum": ""
- },
- "require": {
- "php": "^7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.4|^7.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Cron\\": "src/Cron/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "Chris Tankersley",
- "email": "chris@ctankersley.com",
- "homepage": "https://github.com/dragonmantank"
- }
- ],
- "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due",
- "keywords": [
- "cron",
- "schedule"
- ],
- "time": "2019-03-31T00:38:28+00:00"
- },
- {
- "name": "egulias/email-validator",
- "version": "2.1.11",
- "source": {
- "type": "git",
- "url": "https://github.com/egulias/EmailValidator.git",
- "reference": "92dd169c32f6f55ba570c309d83f5209cefb5e23"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/92dd169c32f6f55ba570c309d83f5209cefb5e23",
- "reference": "92dd169c32f6f55ba570c309d83f5209cefb5e23",
- "shasum": ""
- },
- "require": {
- "doctrine/lexer": "^1.0.1",
- "php": ">= 5.5"
- },
- "require-dev": {
- "dominicsayers/isemail": "dev-master",
- "phpunit/phpunit": "^4.8.35||^5.7||^6.0",
- "satooshi/php-coveralls": "^1.0.1",
- "symfony/phpunit-bridge": "^4.4@dev"
- },
- "suggest": {
- "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Egulias\\EmailValidator\\": "EmailValidator"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Eduardo Gulias Davis"
- }
- ],
- "description": "A library for validating emails against several RFCs",
- "homepage": "https://github.com/egulias/EmailValidator",
- "keywords": [
- "email",
- "emailvalidation",
- "emailvalidator",
- "validation",
- "validator"
- ],
- "time": "2019-08-13T17:33:27+00:00"
- },
- {
- "name": "erusev/parsedown",
- "version": "1.7.3",
- "source": {
- "type": "git",
- "url": "https://github.com/erusev/parsedown.git",
- "reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/erusev/parsedown/zipball/6d893938171a817f4e9bc9e86f2da1e370b7bcd7",
- "reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7",
- "shasum": ""
- },
- "require": {
- "ext-mbstring": "*",
- "php": ">=5.3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "Parsedown": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Emanuil Rusev",
- "email": "hello@erusev.com",
- "homepage": "http://erusev.com"
- }
- ],
- "description": "Parser for Markdown.",
- "homepage": "http://parsedown.org",
- "keywords": [
- "markdown",
- "parser"
- ],
- "time": "2019-03-17T18:48:37+00:00"
- },
- {
- "name": "jaybizzle/crawler-detect",
- "version": "v1.2.84",
- "source": {
- "type": "git",
- "url": "https://github.com/JayBizzle/Crawler-Detect.git",
- "reference": "b7f35477a56609dd0d753c07ada912b66af3df01"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/JayBizzle/Crawler-Detect/zipball/b7f35477a56609dd0d753c07ada912b66af3df01",
- "reference": "b7f35477a56609dd0d753c07ada912b66af3df01",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8|^5.5|^6.5",
- "satooshi/php-coveralls": "1.*"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Jaybizzle\\CrawlerDetect\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mark Beech",
- "role": "Developer",
- "email": "m@rkbee.ch"
- }
- ],
- "description": "CrawlerDetect is a PHP class for detecting bots/crawlers/spiders via the user agent",
- "homepage": "https://github.com/JayBizzle/Crawler-Detect/",
- "keywords": [
- "crawler",
- "crawler detect",
- "crawler detector",
- "crawlerdetect",
- "php crawler detect"
- ],
- "time": "2019-06-14T21:10:21+00:00"
- },
- {
- "name": "jenssegers/agent",
- "version": "v2.6.3",
- "source": {
- "type": "git",
- "url": "https://github.com/jenssegers/agent.git",
- "reference": "bcb895395e460478e101f41cdab139c48dc721ce"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/jenssegers/agent/zipball/bcb895395e460478e101f41cdab139c48dc721ce",
- "reference": "bcb895395e460478e101f41cdab139c48dc721ce",
- "shasum": ""
- },
- "require": {
- "jaybizzle/crawler-detect": "^1.2",
- "mobiledetect/mobiledetectlib": "^2.7.6",
- "php": ">=5.6"
- },
- "require-dev": {
- "php-coveralls/php-coveralls": "^2.1",
- "phpunit/phpunit": "^5.0|^6.0|^7.0"
- },
- "suggest": {
- "illuminate/support": "^4.0|^5.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0-dev"
- },
- "laravel": {
- "providers": [
- "Jenssegers\\Agent\\AgentServiceProvider"
- ],
- "aliases": {
- "Agent": "Jenssegers\\Agent\\Facades\\Agent"
- }
- }
- },
- "autoload": {
- "psr-4": {
- "Jenssegers\\Agent\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jens Segers",
- "homepage": "https://jenssegers.com"
- }
- ],
- "description": "Desktop/mobile user agent parser with support for Laravel, based on Mobiledetect",
- "homepage": "https://github.com/jenssegers/agent",
- "keywords": [
- "Agent",
- "browser",
- "desktop",
- "laravel",
- "mobile",
- "platform",
- "user agent",
- "useragent"
- ],
- "time": "2019-01-19T21:32:55+00:00"
- },
- {
- "name": "laravel/framework",
- "version": "v6.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/laravel/framework.git",
- "reference": "56789e9dec750e0fbe8e9e6ae90a01a4e6887902"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/56789e9dec750e0fbe8e9e6ae90a01a4e6887902",
- "reference": "56789e9dec750e0fbe8e9e6ae90a01a4e6887902",
- "shasum": ""
- },
- "require": {
- "doctrine/inflector": "^1.1",
- "dragonmantank/cron-expression": "^2.0",
- "egulias/email-validator": "^2.1.10",
- "erusev/parsedown": "^1.7",
- "ext-json": "*",
- "ext-mbstring": "*",
- "ext-openssl": "*",
- "league/flysystem": "^1.0.8",
- "monolog/monolog": "^1.12|^2.0",
- "nesbot/carbon": "^2.0",
- "opis/closure": "^3.1",
- "php": "^7.2",
- "psr/container": "^1.0",
- "psr/simple-cache": "^1.0",
- "ramsey/uuid": "^3.7",
- "swiftmailer/swiftmailer": "^6.0",
- "symfony/console": "^4.3.4",
- "symfony/debug": "^4.3.4",
- "symfony/finder": "^4.3.4",
- "symfony/http-foundation": "^4.3.4",
- "symfony/http-kernel": "^4.3.4",
- "symfony/process": "^4.3.4",
- "symfony/routing": "^4.3.4",
- "symfony/var-dumper": "^4.3.4",
- "tijsverkoyen/css-to-inline-styles": "^2.2.1",
- "vlucas/phpdotenv": "^3.3"
- },
- "conflict": {
- "tightenco/collect": "<5.5.33"
- },
- "replace": {
- "illuminate/auth": "self.version",
- "illuminate/broadcasting": "self.version",
- "illuminate/bus": "self.version",
- "illuminate/cache": "self.version",
- "illuminate/config": "self.version",
- "illuminate/console": "self.version",
- "illuminate/container": "self.version",
- "illuminate/contracts": "self.version",
- "illuminate/cookie": "self.version",
- "illuminate/database": "self.version",
- "illuminate/encryption": "self.version",
- "illuminate/events": "self.version",
- "illuminate/filesystem": "self.version",
- "illuminate/hashing": "self.version",
- "illuminate/http": "self.version",
- "illuminate/log": "self.version",
- "illuminate/mail": "self.version",
- "illuminate/notifications": "self.version",
- "illuminate/pagination": "self.version",
- "illuminate/pipeline": "self.version",
- "illuminate/queue": "self.version",
- "illuminate/redis": "self.version",
- "illuminate/routing": "self.version",
- "illuminate/session": "self.version",
- "illuminate/support": "self.version",
- "illuminate/translation": "self.version",
- "illuminate/validation": "self.version",
- "illuminate/view": "self.version"
- },
- "require-dev": {
- "aws/aws-sdk-php": "^3.0",
- "doctrine/dbal": "^2.6",
- "filp/whoops": "^2.4",
- "guzzlehttp/guzzle": "^6.3",
- "league/flysystem-cached-adapter": "^1.0",
- "mockery/mockery": "^1.2.3",
- "moontoast/math": "^1.1",
- "orchestra/testbench-core": "^4.0",
- "pda/pheanstalk": "^4.0",
- "phpunit/phpunit": "^8.3",
- "predis/predis": "^1.1.1",
- "symfony/cache": "^4.3",
- "true/punycode": "^2.1"
- },
- "suggest": {
- "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.0).",
- "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).",
- "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().",
- "ext-memcached": "Required to use the memcache cache driver.",
- "ext-pcntl": "Required to use all features of the queue worker.",
- "ext-posix": "Required to use all features of the queue worker.",
- "ext-redis": "Required to use the Redis cache and queue drivers.",
- "filp/whoops": "Required for friendly error pages in development (^2.4).",
- "fzaninotto/faker": "Required to use the eloquent factory builder (^1.4).",
- "guzzlehttp/guzzle": "Required to use the Mailgun mail driver and the ping methods on schedules (^6.0).",
- "laravel/tinker": "Required to use the tinker console command (^1.0).",
- "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).",
- "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).",
- "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).",
- "moontoast/math": "Required to use ordered UUIDs (^1.1).",
- "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).",
- "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^3.0).",
- "symfony/cache": "Required to PSR-6 cache bridge (^4.3.4).",
- "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^1.2).",
- "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)."
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "6.x-dev"
- }
- },
- "autoload": {
- "files": [
- "src/Illuminate/Foundation/helpers.php",
- "src/Illuminate/Support/helpers.php"
- ],
- "psr-4": {
- "Illuminate\\": "src/Illuminate/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "description": "The Laravel Framework.",
- "homepage": "https://laravel.com",
- "keywords": [
- "framework",
- "laravel"
- ],
- "time": "2019-09-10T18:46:24+00:00"
- },
- {
- "name": "league/flysystem",
- "version": "1.0.55",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/flysystem.git",
- "reference": "33c91155537c6dc899eacdc54a13ac6303f156e6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/33c91155537c6dc899eacdc54a13ac6303f156e6",
- "reference": "33c91155537c6dc899eacdc54a13ac6303f156e6",
- "shasum": ""
- },
- "require": {
- "ext-fileinfo": "*",
- "php": ">=5.5.9"
- },
- "conflict": {
- "league/flysystem-sftp": "<1.0.6"
- },
- "require-dev": {
- "phpspec/phpspec": "^3.4",
- "phpunit/phpunit": "^5.7.10"
- },
- "suggest": {
- "ext-fileinfo": "Required for MimeType",
- "ext-ftp": "Allows you to use FTP server storage",
- "ext-openssl": "Allows you to use FTPS server storage",
- "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2",
- "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3",
- "league/flysystem-azure": "Allows you to use Windows Azure Blob storage",
- "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching",
- "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem",
- "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files",
- "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib",
- "league/flysystem-webdav": "Allows you to use WebDAV storage",
- "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter",
- "spatie/flysystem-dropbox": "Allows you to use Dropbox storage",
- "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "League\\Flysystem\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Frank de Jonge",
- "email": "info@frenky.net"
- }
- ],
- "description": "Filesystem abstraction: Many filesystems, one API.",
- "keywords": [
- "Cloud Files",
- "WebDAV",
- "abstraction",
- "aws",
- "cloud",
- "copy.com",
- "dropbox",
- "file systems",
- "files",
- "filesystem",
- "filesystems",
- "ftp",
- "rackspace",
- "remote",
- "s3",
- "sftp",
- "storage"
- ],
- "time": "2019-08-24T11:17:19+00:00"
- },
- {
- "name": "mobiledetect/mobiledetectlib",
- "version": "2.8.33",
- "source": {
- "type": "git",
- "url": "https://github.com/serbanghita/Mobile-Detect.git",
- "reference": "cd385290f9a0d609d2eddd165a1e44ec1bf12102"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/cd385290f9a0d609d2eddd165a1e44ec1bf12102",
- "reference": "cd385290f9a0d609d2eddd165a1e44ec1bf12102",
- "shasum": ""
- },
- "require": {
- "php": ">=5.0.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.8.35||~5.7"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "Mobile_Detect.php"
- ],
- "psr-0": {
- "Detection": "namespaced/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Serban Ghita",
- "role": "Developer",
- "email": "serbanghita@gmail.com",
- "homepage": "http://mobiledetect.net"
- }
- ],
- "description": "Mobile_Detect is a lightweight PHP class for detecting mobile devices. It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.",
- "homepage": "https://github.com/serbanghita/Mobile-Detect",
- "keywords": [
- "detect mobile devices",
- "mobile",
- "mobile detect",
- "mobile detector",
- "php mobile detect"
- ],
- "time": "2018-09-01T15:05:15+00:00"
- },
- {
- "name": "monolog/monolog",
- "version": "2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/Seldaek/monolog.git",
- "reference": "68545165e19249013afd1d6f7485aecff07a2d22"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/68545165e19249013afd1d6f7485aecff07a2d22",
- "reference": "68545165e19249013afd1d6f7485aecff07a2d22",
- "shasum": ""
- },
- "require": {
- "php": "^7.2",
- "psr/log": "^1.0.1"
- },
- "provide": {
- "psr/log-implementation": "1.0.0"
- },
- "require-dev": {
- "aws/aws-sdk-php": "^2.4.9 || ^3.0",
- "doctrine/couchdb": "~1.0@dev",
- "elasticsearch/elasticsearch": "^6.0",
- "graylog2/gelf-php": "^1.4.2",
- "jakub-onderka/php-parallel-lint": "^0.9",
- "php-amqplib/php-amqplib": "~2.4",
- "php-console/php-console": "^3.1.3",
- "phpspec/prophecy": "^1.6.1",
- "phpunit/phpunit": "^8.3",
- "predis/predis": "^1.1",
- "rollbar/rollbar": "^1.3",
- "ruflin/elastica": ">=0.90 <3.0",
- "swiftmailer/swiftmailer": "^5.3|^6.0"
- },
- "suggest": {
- "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
- "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
- "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client",
- "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
- "ext-mbstring": "Allow to work properly with unicode symbols",
- "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)",
- "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
- "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
- "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
- "php-console/php-console": "Allow sending log messages to Google Chrome",
- "rollbar/rollbar": "Allow sending log messages to Rollbar",
- "ruflin/elastica": "Allow sending log messages to an Elastic Search server"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Monolog\\": "src/Monolog"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
- }
- ],
- "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
- "homepage": "http://github.com/Seldaek/monolog",
- "keywords": [
- "log",
- "logging",
- "psr-3"
- ],
- "time": "2019-08-30T09:56:44+00:00"
- },
- {
- "name": "nesbot/carbon",
- "version": "2.24.0",
- "source": {
- "type": "git",
- "url": "https://github.com/briannesbitt/Carbon.git",
- "reference": "934459c5ac0658bc765ad1e53512c7c77adcac29"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/934459c5ac0658bc765ad1e53512c7c77adcac29",
- "reference": "934459c5ac0658bc765ad1e53512c7c77adcac29",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "php": "^7.1.8 || ^8.0",
- "symfony/translation": "^3.4 || ^4.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^2.14 || ^3.0",
- "kylekatarnls/multi-tester": "^1.1",
- "phpmd/phpmd": "dev-php-7.1-compatibility",
- "phpstan/phpstan": "^0.11",
- "phpunit/phpunit": "^7.5 || ^8.0",
- "squizlabs/php_codesniffer": "^3.4"
- },
- "bin": [
- "bin/carbon"
- ],
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Carbon\\Laravel\\ServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Carbon\\": "src/Carbon/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Brian Nesbitt",
- "email": "brian@nesbot.com",
- "homepage": "http://nesbot.com"
- },
- {
- "name": "kylekatarnls",
- "homepage": "http://github.com/kylekatarnls"
- }
- ],
- "description": "A API extension for DateTime that supports 281 different languages.",
- "homepage": "http://carbon.nesbot.com",
- "keywords": [
- "date",
- "datetime",
- "time"
- ],
- "time": "2019-08-31T16:37:55+00:00"
- },
- {
- "name": "opis/closure",
- "version": "3.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/opis/closure.git",
- "reference": "60a97fff133b1669a5b1776aa8ab06db3f3962b7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/opis/closure/zipball/60a97fff133b1669a5b1776aa8ab06db3f3962b7",
- "reference": "60a97fff133b1669a5b1776aa8ab06db3f3962b7",
- "shasum": ""
- },
- "require": {
- "php": "^5.4 || ^7.0"
- },
- "require-dev": {
- "jeremeamia/superclosure": "^2.0",
- "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.3.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Opis\\Closure\\": "src/"
- },
- "files": [
- "functions.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Marius Sarca",
- "email": "marius.sarca@gmail.com"
- },
- {
- "name": "Sorin Sarca",
- "email": "sarca_sorin@hotmail.com"
- }
- ],
- "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.",
- "homepage": "https://opis.io/closure",
- "keywords": [
- "anonymous functions",
- "closure",
- "function",
- "serializable",
- "serialization",
- "serialize"
- ],
- "time": "2019-09-02T21:07:33+00:00"
- },
- {
- "name": "paragonie/random_compat",
- "version": "v9.99.99",
- "source": {
- "type": "git",
- "url": "https://github.com/paragonie/random_compat.git",
- "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
- "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
- "shasum": ""
- },
- "require": {
- "php": "^7"
- },
- "require-dev": {
- "phpunit/phpunit": "4.*|5.*",
- "vimeo/psalm": "^1"
- },
- "suggest": {
- "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
- },
- "type": "library",
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Paragon Initiative Enterprises",
- "email": "security@paragonie.com",
- "homepage": "https://paragonie.com"
- }
- ],
- "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
- "keywords": [
- "csprng",
- "polyfill",
- "pseudorandom",
- "random"
- ],
- "time": "2018-07-02T15:55:56+00:00"
- },
- {
- "name": "phpoption/phpoption",
- "version": "1.5.0",
- "source": {
- "type": "git",
- "url": "https://github.com/schmittjoh/php-option.git",
- "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed",
- "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "4.7.*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "PhpOption\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache2"
- ],
- "authors": [
- {
- "name": "Johannes M. Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "Option Type for PHP",
- "keywords": [
- "language",
- "option",
- "php",
- "type"
- ],
- "time": "2015-07-25T16:39:46+00:00"
- },
- {
- "name": "pragmarx/datatables",
- "version": "v1.4.11",
- "source": {
- "type": "git",
- "url": "https://github.com/antonioribeiro/laravel4-datatables-package.git",
- "reference": "e5ffc430418b87eb80ca21e2a358352ff0a20a7b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/antonioribeiro/laravel4-datatables-package/zipball/e5ffc430418b87eb80ca21e2a358352ff0a20a7b",
- "reference": "e5ffc430418b87eb80ca21e2a358352ff0a20a7b",
- "shasum": ""
- },
- "require": {
- "illuminate/database": ">=4.0.0",
- "illuminate/filesystem": ">=4.0.0",
- "illuminate/support": ">=4.0.0",
- "illuminate/view": ">=4.0.0",
- "php": ">=5.3.0"
- },
- "require-dev": {
- "laravel/laravel": ">=4.0.0",
- "mockery/mockery": "0.7.2",
- "phpunit/phpunit": "3.7.*"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/migrations"
- ],
- "psr-0": {
- "Bllim\\Datatables": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Bilal Gultekin",
- "email": "bilal@bilal.im"
- }
- ],
- "description": "Server-side handler of DataTables Jquery Plugin for Laravel 4",
- "keywords": [
- "datatable",
- "datatables",
- "datatables jquery plugin",
- "laravel",
- "laravel4"
- ],
- "time": "2017-01-31T03:05:08+00:00"
- },
- {
- "name": "pragmarx/support",
- "version": "v0.9.0",
- "source": {
- "type": "git",
- "url": "https://github.com/antonioribeiro/support.git",
- "reference": "1b5bc356c530afbcb6f922f2865c55ead48ddaef"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/antonioribeiro/support/zipball/1b5bc356c530afbcb6f922f2865c55ead48ddaef",
- "reference": "1b5bc356c530afbcb6f922f2865c55ead48ddaef",
- "shasum": ""
- },
- "require": {
- "illuminate/filesystem": "~4.0|~5.0|~6.0",
- "php": ">=5.4.0",
- "symfony/var-dumper": "~2.6|~3.0|~4.0"
- },
- "suggest": {
- "laravel/framework": "Laravel framework.",
- "symfony/yaml": "The Yaml class needs it"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "0.7.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "PragmaRX\\Support\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Antonio Carlos Ribeiro",
- "email": "acr@antoniocarlosribeiro.com",
- "role": "Creator"
- }
- ],
- "description": "PragmaRX components support package",
- "keywords": [
- "laravel",
- "pragmarx"
- ],
- "time": "2019-09-10T21:14:36+00:00"
- },
- {
- "name": "psr/container",
- "version": "1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/container.git",
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Container\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common Container Interface (PHP FIG PSR-11)",
- "homepage": "https://github.com/php-fig/container",
- "keywords": [
- "PSR-11",
- "container",
- "container-interface",
- "container-interop",
- "psr"
- ],
- "time": "2017-02-14T16:28:37+00:00"
- },
- {
- "name": "psr/log",
- "version": "1.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/log.git",
- "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
- "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Log\\": "Psr/Log/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interface for logging libraries",
- "homepage": "https://github.com/php-fig/log",
- "keywords": [
- "log",
- "psr",
- "psr-3"
- ],
- "time": "2018-11-20T15:27:04+00:00"
- },
- {
- "name": "psr/simple-cache",
- "version": "1.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/simple-cache.git",
- "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
- "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\SimpleCache\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interfaces for simple caching",
- "keywords": [
- "cache",
- "caching",
- "psr",
- "psr-16",
- "simple-cache"
- ],
- "time": "2017-10-23T01:57:42+00:00"
- },
- {
- "name": "ramsey/uuid",
- "version": "3.8.0",
- "source": {
- "type": "git",
- "url": "https://github.com/ramsey/uuid.git",
- "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ramsey/uuid/zipball/d09ea80159c1929d75b3f9c60504d613aeb4a1e3",
- "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3",
- "shasum": ""
- },
- "require": {
- "paragonie/random_compat": "^1.0|^2.0|9.99.99",
- "php": "^5.4 || ^7.0",
- "symfony/polyfill-ctype": "^1.8"
- },
- "replace": {
- "rhumsaa/uuid": "self.version"
- },
- "require-dev": {
- "codeception/aspect-mock": "^1.0 | ~2.0.0",
- "doctrine/annotations": "~1.2.0",
- "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ~2.1.0",
- "ircmaxell/random-lib": "^1.1",
- "jakub-onderka/php-parallel-lint": "^0.9.0",
- "mockery/mockery": "^0.9.9",
- "moontoast/math": "^1.1",
- "php-mock/php-mock-phpunit": "^0.3|^1.1",
- "phpunit/phpunit": "^4.7|^5.0|^6.5",
- "squizlabs/php_codesniffer": "^2.3"
- },
- "suggest": {
- "ext-ctype": "Provides support for PHP Ctype functions",
- "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator",
- "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator",
- "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
- "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).",
- "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid",
- "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Ramsey\\Uuid\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Marijn Huizendveld",
- "email": "marijn.huizendveld@gmail.com"
- },
- {
- "name": "Thibaud Fabre",
- "email": "thibaud@aztech.io"
- },
- {
- "name": "Ben Ramsey",
- "email": "ben@benramsey.com",
- "homepage": "https://benramsey.com"
- }
- ],
- "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).",
- "homepage": "https://github.com/ramsey/uuid",
- "keywords": [
- "guid",
- "identifier",
- "uuid"
- ],
- "time": "2018-07-19T23:38:55+00:00"
- },
- {
- "name": "snowplow/referer-parser",
- "version": "0.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/snowplow/referer-parser.git",
- "reference": "5ce872b60999c63039723959a45928ef1196f03d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/snowplow/referer-parser/zipball/5ce872b60999c63039723959a45928ef1196f03d",
- "reference": "5ce872b60999c63039723959a45928ef1196f03d",
- "shasum": ""
- },
- "require-dev": {
- "phpunit/phpunit": "3.*",
- "symfony/yaml": "*"
- },
- "suggest": {
- "symfony/yaml": "Support for YAML configuration file"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "Snowplow\\RefererParser": "php/src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Lars Strojny",
- "email": "lars@strojny.net"
- }
- ],
- "description": "Snowplow Refer(r)er parser for PHP",
- "time": "2016-01-29T16:43:00+00:00"
- },
- {
- "name": "swiftmailer/swiftmailer",
- "version": "v6.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/swiftmailer/swiftmailer.git",
- "reference": "5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a",
- "reference": "5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a",
- "shasum": ""
- },
- "require": {
- "egulias/email-validator": "~2.0",
- "php": ">=7.0.0",
- "symfony/polyfill-iconv": "^1.0",
- "symfony/polyfill-intl-idn": "^1.10",
- "symfony/polyfill-mbstring": "^1.0"
- },
- "require-dev": {
- "mockery/mockery": "~0.9.1",
- "symfony/phpunit-bridge": "^3.4.19|^4.1.8"
- },
- "suggest": {
- "ext-intl": "Needed to support internationalized email addresses",
- "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "6.2-dev"
- }
- },
- "autoload": {
- "files": [
- "lib/swift_required.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Chris Corbyn"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Swiftmailer, free feature-rich PHP mailer",
- "homepage": "https://swiftmailer.symfony.com",
- "keywords": [
- "email",
- "mail",
- "mailer"
- ],
- "time": "2019-04-21T09:21:45+00:00"
- },
- {
- "name": "symfony/console",
- "version": "v4.3.4",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/console.git",
- "reference": "de63799239b3881b8a08f8481b22348f77ed7b36"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/de63799239b3881b8a08f8481b22348f77ed7b36",
- "reference": "de63799239b3881b8a08f8481b22348f77ed7b36",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php73": "^1.8",
- "symfony/service-contracts": "^1.1"
- },
- "conflict": {
- "symfony/dependency-injection": "<3.4",
- "symfony/event-dispatcher": "<4.3",
- "symfony/process": "<3.3"
- },
- "provide": {
- "psr/log-implementation": "1.0"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "~3.4|~4.0",
- "symfony/dependency-injection": "~3.4|~4.0",
- "symfony/event-dispatcher": "^4.3",
- "symfony/lock": "~3.4|~4.0",
- "symfony/process": "~3.4|~4.0",
- "symfony/var-dumper": "^4.3"
- },
- "suggest": {
- "psr/log": "For using the console logger",
- "symfony/event-dispatcher": "",
- "symfony/lock": "",
- "symfony/process": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.3-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Console\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Console Component",
- "homepage": "https://symfony.com",
- "time": "2019-08-26T08:26:39+00:00"
- },
- {
- "name": "symfony/css-selector",
- "version": "v4.3.4",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/css-selector.git",
- "reference": "c6e5e2a00db768c92c3ae131532af4e1acc7bd03"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/c6e5e2a00db768c92c3ae131532af4e1acc7bd03",
- "reference": "c6e5e2a00db768c92c3ae131532af4e1acc7bd03",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.3-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\CssSelector\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Jean-François Simon",
- "email": "jeanfrancois.simon@sensiolabs.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony CssSelector Component",
- "homepage": "https://symfony.com",
- "time": "2019-08-20T14:07:54+00:00"
- },
- {
- "name": "symfony/debug",
- "version": "v4.3.4",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/debug.git",
- "reference": "afcdea44a2e399c1e4b52246ec8d54c715393ced"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/afcdea44a2e399c1e4b52246ec8d54c715393ced",
- "reference": "afcdea44a2e399c1e4b52246ec8d54c715393ced",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3",
- "psr/log": "~1.0"
- },
- "conflict": {
- "symfony/http-kernel": "<3.4"
- },
- "require-dev": {
- "symfony/http-kernel": "~3.4|~4.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.3-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Debug\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Debug Component",
- "homepage": "https://symfony.com",
- "time": "2019-08-20T14:27:59+00:00"
- },
- {
- "name": "symfony/event-dispatcher",
- "version": "v4.3.4",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "429d0a1451d4c9c4abe1959b2986b88794b9b7d2"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/429d0a1451d4c9c4abe1959b2986b88794b9b7d2",
- "reference": "429d0a1451d4c9c4abe1959b2986b88794b9b7d2",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3",
- "symfony/event-dispatcher-contracts": "^1.1"
- },
- "conflict": {
- "symfony/dependency-injection": "<3.4"
- },
- "provide": {
- "psr/event-dispatcher-implementation": "1.0",
- "symfony/event-dispatcher-implementation": "1.1"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "~3.4|~4.0",
- "symfony/dependency-injection": "~3.4|~4.0",
- "symfony/expression-language": "~3.4|~4.0",
- "symfony/http-foundation": "^3.4|^4.0",
- "symfony/service-contracts": "^1.1",
- "symfony/stopwatch": "~3.4|~4.0"
- },
- "suggest": {
- "symfony/dependency-injection": "",
- "symfony/http-kernel": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.3-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\EventDispatcher\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony EventDispatcher Component",
- "homepage": "https://symfony.com",
- "time": "2019-08-26T08:55:16+00:00"
- },
- {
- "name": "symfony/event-dispatcher-contracts",
- "version": "v1.1.5",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/event-dispatcher-contracts.git",
- "reference": "c61766f4440ca687de1084a5c00b08e167a2575c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c61766f4440ca687de1084a5c00b08e167a2575c",
- "reference": "c61766f4440ca687de1084a5c00b08e167a2575c",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3"
- },
- "suggest": {
- "psr/event-dispatcher": "",
- "symfony/event-dispatcher-implementation": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Contracts\\EventDispatcher\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Generic abstractions related to dispatching event",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "time": "2019-06-20T06:46:26+00:00"
- },
- {
- "name": "symfony/finder",
- "version": "v4.3.4",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/finder.git",
- "reference": "86c1c929f0a4b24812e1eb109262fc3372c8e9f2"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/86c1c929f0a4b24812e1eb109262fc3372c8e9f2",
- "reference": "86c1c929f0a4b24812e1eb109262fc3372c8e9f2",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.3-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Finder\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Finder Component",
- "homepage": "https://symfony.com",
- "time": "2019-08-14T12:26:46+00:00"
- },
- {
- "name": "symfony/http-foundation",
- "version": "v4.3.4",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-foundation.git",
- "reference": "d804bea118ff340a12e22a79f9c7e7eb56b35adc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/d804bea118ff340a12e22a79f9c7e7eb56b35adc",
- "reference": "d804bea118ff340a12e22a79f9c7e7eb56b35adc",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3",
- "symfony/mime": "^4.3",
- "symfony/polyfill-mbstring": "~1.1"
- },
- "require-dev": {
- "predis/predis": "~1.0",
- "symfony/expression-language": "~3.4|~4.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.3-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\HttpFoundation\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony HttpFoundation Component",
- "homepage": "https://symfony.com",
- "time": "2019-08-26T08:55:16+00:00"
- },
- {
- "name": "symfony/http-kernel",
- "version": "v4.3.4",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-kernel.git",
- "reference": "5e0fc71be03d52cd00c423061cfd300bd6f92a52"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/5e0fc71be03d52cd00c423061cfd300bd6f92a52",
- "reference": "5e0fc71be03d52cd00c423061cfd300bd6f92a52",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3",
- "psr/log": "~1.0",
- "symfony/debug": "~3.4|~4.0",
- "symfony/event-dispatcher": "^4.3",
- "symfony/http-foundation": "^4.1.1",
- "symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-php73": "^1.9"
- },
- "conflict": {
- "symfony/browser-kit": "<4.3",
- "symfony/config": "<3.4",
- "symfony/dependency-injection": "<4.3",
- "symfony/translation": "<4.2",
- "symfony/var-dumper": "<4.1.1",
- "twig/twig": "<1.34|<2.4,>=2"
- },
- "provide": {
- "psr/log-implementation": "1.0"
- },
- "require-dev": {
- "psr/cache": "~1.0",
- "symfony/browser-kit": "^4.3",
- "symfony/config": "~3.4|~4.0",
- "symfony/console": "~3.4|~4.0",
- "symfony/css-selector": "~3.4|~4.0",
- "symfony/dependency-injection": "^4.3",
- "symfony/dom-crawler": "~3.4|~4.0",
- "symfony/expression-language": "~3.4|~4.0",
- "symfony/finder": "~3.4|~4.0",
- "symfony/process": "~3.4|~4.0",
- "symfony/routing": "~3.4|~4.0",
- "symfony/stopwatch": "~3.4|~4.0",
- "symfony/templating": "~3.4|~4.0",
- "symfony/translation": "~4.2",
- "symfony/translation-contracts": "^1.1",
- "symfony/var-dumper": "^4.1.1",
- "twig/twig": "^1.34|^2.4"
- },
- "suggest": {
- "symfony/browser-kit": "",
- "symfony/config": "",
- "symfony/console": "",
- "symfony/dependency-injection": "",
- "symfony/var-dumper": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.3-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\HttpKernel\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony HttpKernel Component",
- "homepage": "https://symfony.com",
- "time": "2019-08-26T16:47:42+00:00"
- },
- {
- "name": "symfony/mime",
- "version": "v4.3.4",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/mime.git",
- "reference": "987a05df1c6ac259b34008b932551353f4f408df"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/mime/zipball/987a05df1c6ac259b34008b932551353f4f408df",
- "reference": "987a05df1c6ac259b34008b932551353f4f408df",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3",
- "symfony/polyfill-intl-idn": "^1.10",
- "symfony/polyfill-mbstring": "^1.0"
- },
- "require-dev": {
- "egulias/email-validator": "^2.1.10",
- "symfony/dependency-injection": "~3.4|^4.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.3-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Mime\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "A library to manipulate MIME messages",
- "homepage": "https://symfony.com",
- "keywords": [
- "mime",
- "mime-type"
- ],
- "time": "2019-08-22T08:16:11+00:00"
- },
- {
- "name": "symfony/polyfill-ctype",
- "version": "v1.12.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "550ebaac289296ce228a706d0867afc34687e3f4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4",
- "reference": "550ebaac289296ce228a706d0867afc34687e3f4",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "suggest": {
- "ext-ctype": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.12-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Ctype\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Gert de Pagter",
- "email": "BackEndTea@gmail.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for ctype functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "ctype",
- "polyfill",
- "portable"
- ],
- "time": "2019-08-06T08:03:45+00:00"
- },
- {
- "name": "symfony/polyfill-iconv",
- "version": "v1.12.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-iconv.git",
- "reference": "685968b11e61a347c18bf25db32effa478be610f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/685968b11e61a347c18bf25db32effa478be610f",
- "reference": "685968b11e61a347c18bf25db32effa478be610f",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "suggest": {
- "ext-iconv": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.12-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Iconv\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for the Iconv extension",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "iconv",
- "polyfill",
- "portable",
- "shim"
- ],
- "time": "2019-08-06T08:03:45+00:00"
- },
- {
- "name": "symfony/polyfill-intl-idn",
- "version": "v1.12.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6af626ae6fa37d396dc90a399c0ff08e5cfc45b2",
- "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "symfony/polyfill-mbstring": "^1.3",
- "symfony/polyfill-php72": "^1.9"
- },
- "suggest": {
- "ext-intl": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.12-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Intl\\Idn\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Laurent Bassin",
- "email": "laurent@bassin.info"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "idn",
- "intl",
- "polyfill",
- "portable",
- "shim"
- ],
- "time": "2019-08-06T08:03:45+00:00"
- },
- {
- "name": "symfony/polyfill-mbstring",
- "version": "v1.12.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17",
- "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "suggest": {
- "ext-mbstring": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.12-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Mbstring\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for the Mbstring extension",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "mbstring",
- "polyfill",
- "portable",
- "shim"
- ],
- "time": "2019-08-06T08:03:45+00:00"
- },
- {
- "name": "symfony/polyfill-php72",
- "version": "v1.12.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "04ce3335667451138df4307d6a9b61565560199e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/04ce3335667451138df4307d6a9b61565560199e",
- "reference": "04ce3335667451138df4307d6a9b61565560199e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.12-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php72\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "time": "2019-08-06T08:03:45+00:00"
- },
- {
- "name": "symfony/polyfill-php73",
- "version": "v1.12.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/2ceb49eaccb9352bff54d22570276bb75ba4a188",
- "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.12-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php73\\": ""
- },
- "files": [
- "bootstrap.php"
- ],
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "time": "2019-08-06T08:03:45+00:00"
- },
- {
- "name": "symfony/process",
- "version": "v4.3.4",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/process.git",
- "reference": "e89969c00d762349f078db1128506f7f3dcc0d4a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/e89969c00d762349f078db1128506f7f3dcc0d4a",
- "reference": "e89969c00d762349f078db1128506f7f3dcc0d4a",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.3-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Process\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Process Component",
- "homepage": "https://symfony.com",
- "time": "2019-08-26T08:26:39+00:00"
- },
- {
- "name": "symfony/routing",
- "version": "v4.3.4",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/routing.git",
- "reference": "ff1049f6232dc5b6023b1ff1c6de56f82bcd264f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/ff1049f6232dc5b6023b1ff1c6de56f82bcd264f",
- "reference": "ff1049f6232dc5b6023b1ff1c6de56f82bcd264f",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3"
- },
- "conflict": {
- "symfony/config": "<4.2",
- "symfony/dependency-injection": "<3.4",
- "symfony/yaml": "<3.4"
- },
- "require-dev": {
- "doctrine/annotations": "~1.2",
- "psr/log": "~1.0",
- "symfony/config": "~4.2",
- "symfony/dependency-injection": "~3.4|~4.0",
- "symfony/expression-language": "~3.4|~4.0",
- "symfony/http-foundation": "~3.4|~4.0",
- "symfony/yaml": "~3.4|~4.0"
- },
- "suggest": {
- "doctrine/annotations": "For using the annotation loader",
- "symfony/config": "For using the all-in-one router or any loader",
- "symfony/expression-language": "For using expression matching",
- "symfony/http-foundation": "For using a Symfony Request object",
- "symfony/yaml": "For using the YAML loader"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.3-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Routing\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Routing Component",
- "homepage": "https://symfony.com",
- "keywords": [
- "router",
- "routing",
- "uri",
- "url"
- ],
- "time": "2019-08-26T08:26:39+00:00"
- },
- {
- "name": "symfony/service-contracts",
- "version": "v1.1.6",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/service-contracts.git",
- "reference": "ea7263d6b6d5f798b56a45a5b8d686725f2719a3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/ea7263d6b6d5f798b56a45a5b8d686725f2719a3",
- "reference": "ea7263d6b6d5f798b56a45a5b8d686725f2719a3",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3",
- "psr/container": "^1.0"
- },
- "suggest": {
- "symfony/service-implementation": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Contracts\\Service\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Generic abstractions related to writing services",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "time": "2019-08-20T14:44:19+00:00"
- },
- {
- "name": "symfony/translation",
- "version": "v4.3.4",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/translation.git",
- "reference": "28498169dd334095fa981827992f3a24d50fed0f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/28498169dd334095fa981827992f3a24d50fed0f",
- "reference": "28498169dd334095fa981827992f3a24d50fed0f",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/translation-contracts": "^1.1.6"
- },
- "conflict": {
- "symfony/config": "<3.4",
- "symfony/dependency-injection": "<3.4",
- "symfony/yaml": "<3.4"
- },
- "provide": {
- "symfony/translation-implementation": "1.0"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "~3.4|~4.0",
- "symfony/console": "~3.4|~4.0",
- "symfony/dependency-injection": "~3.4|~4.0",
- "symfony/finder": "~2.8|~3.0|~4.0",
- "symfony/http-kernel": "~3.4|~4.0",
- "symfony/intl": "~3.4|~4.0",
- "symfony/service-contracts": "^1.1.2",
- "symfony/var-dumper": "~3.4|~4.0",
- "symfony/yaml": "~3.4|~4.0"
- },
- "suggest": {
- "psr/log-implementation": "To use logging capability in translator",
- "symfony/config": "",
- "symfony/yaml": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.3-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Translation\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Translation Component",
- "homepage": "https://symfony.com",
- "time": "2019-08-26T08:55:16+00:00"
- },
- {
- "name": "symfony/translation-contracts",
- "version": "v1.1.6",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/translation-contracts.git",
- "reference": "325b17c24f3ee23cbecfa63ba809c6d89b5fa04a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/325b17c24f3ee23cbecfa63ba809c6d89b5fa04a",
- "reference": "325b17c24f3ee23cbecfa63ba809c6d89b5fa04a",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3"
- },
- "suggest": {
- "symfony/translation-implementation": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Contracts\\Translation\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Generic abstractions related to translation",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "time": "2019-08-02T12:15:04+00:00"
- },
- {
- "name": "symfony/var-dumper",
- "version": "v4.3.4",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/var-dumper.git",
- "reference": "641043e0f3e615990a0f29479f9c117e8a6698c6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/641043e0f3e615990a0f29479f9c117e8a6698c6",
- "reference": "641043e0f3e615990a0f29479f9c117e8a6698c6",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php72": "~1.5"
- },
- "conflict": {
- "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0",
- "symfony/console": "<3.4"
- },
- "require-dev": {
- "ext-iconv": "*",
- "symfony/console": "~3.4|~4.0",
- "symfony/process": "~3.4|~4.0",
- "twig/twig": "~1.34|~2.4"
- },
- "suggest": {
- "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
- "ext-intl": "To show region name in time zone dump",
- "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script"
- },
- "bin": [
- "Resources/bin/var-dump-server"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.3-dev"
- }
- },
- "autoload": {
- "files": [
- "Resources/functions/dump.php"
- ],
- "psr-4": {
- "Symfony\\Component\\VarDumper\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony mechanism for exploring and dumping PHP variables",
- "homepage": "https://symfony.com",
- "keywords": [
- "debug",
- "dump"
- ],
- "time": "2019-08-26T08:26:39+00:00"
- },
- {
- "name": "tijsverkoyen/css-to-inline-styles",
- "version": "2.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git",
- "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757",
- "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757",
- "shasum": ""
- },
- "require": {
- "php": "^5.5 || ^7.0",
- "symfony/css-selector": "^2.7 || ^3.0 || ^4.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.2.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "TijsVerkoyen\\CssToInlineStyles\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Tijs Verkoyen",
- "email": "css_to_inline_styles@verkoyen.eu",
- "role": "Developer"
- }
- ],
- "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.",
- "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles",
- "time": "2017-11-27T11:13:29+00:00"
- },
- {
- "name": "ua-parser/uap-php",
- "version": "v3.9.1",
- "source": {
- "type": "git",
- "url": "https://github.com/ua-parser/uap-php.git",
- "reference": "2b7130ce5030a880e9d6c4d8463fd181dfd94711"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ua-parser/uap-php/zipball/2b7130ce5030a880e9d6c4d8463fd181dfd94711",
- "reference": "2b7130ce5030a880e9d6c4d8463fd181dfd94711",
- "shasum": ""
- },
- "require": {
- "composer/ca-bundle": "^1.1",
- "php": ">=5.3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "<8",
- "symfony/console": "^2.0 || ^3.0 || ^4.0",
- "symfony/filesystem": "^2.0 || ^3.0 || ^4.0",
- "symfony/finder": "^2.0 || ^3.0 || ^4.0",
- "symfony/yaml": "^2.0 || ^3.0 || ^4.0"
- },
- "suggest": {
- "symfony/console": "Required for CLI usage - ^2.0 || ^3.0 || ^4.0",
- "symfony/filesystem": "Required for CLI usage - 2.0 || ^3.0 || ^4.0",
- "symfony/finder": "Required for CLI usage - ^2.0 || ^3.0 || ^4.0",
- "symfony/yaml": "Required for CLI usage - ^4.0 || ^5.0"
- },
- "bin": [
- "bin/uaparser"
- ],
- "type": "library",
- "autoload": {
- "psr-4": {
- "UAParser\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Lars Strojny",
- "email": "lars@strojny.net"
- },
- {
- "name": "Dave Olsen",
- "email": "dmolsen@gmail.com"
- }
- ],
- "description": "A multi-language port of Browserscope's user agent parser.",
- "time": "2019-07-15T14:27:12+00:00"
- },
- {
- "name": "vlucas/phpdotenv",
- "version": "v3.5.0",
- "source": {
- "type": "git",
- "url": "https://github.com/vlucas/phpdotenv.git",
- "reference": "95cb0fa6c025f7f0db7fc60f81e9fb231eb2d222"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/95cb0fa6c025f7f0db7fc60f81e9fb231eb2d222",
- "reference": "95cb0fa6c025f7f0db7fc60f81e9fb231eb2d222",
- "shasum": ""
- },
- "require": {
- "php": "^5.4 || ^7.0",
- "phpoption/phpoption": "^1.5",
- "symfony/polyfill-ctype": "^1.9"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.5-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Dotenv\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Graham Campbell",
- "email": "graham@alt-three.com",
- "homepage": "https://gjcampbell.co.uk/"
- },
- {
- "name": "Vance Lucas",
- "email": "vance@vancelucas.com",
- "homepage": "https://vancelucas.com/"
- }
- ],
- "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
- "keywords": [
- "dotenv",
- "env",
- "environment"
- ],
- "time": "2019-08-27T17:00:38+00:00"
- }
- ],
- "packages-dev": [
- {
- "name": "hamcrest/hamcrest-php",
- "version": "v1.2.2",
- "source": {
- "type": "git",
- "url": "https://github.com/hamcrest/hamcrest-php.git",
- "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/b37020aa976fa52d3de9aa904aa2522dc518f79c",
- "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.2"
- },
- "replace": {
- "cordoval/hamcrest-php": "*",
- "davedevelopment/hamcrest-php": "*",
- "kodova/hamcrest-php": "*"
- },
- "require-dev": {
- "phpunit/php-file-iterator": "1.3.3",
- "satooshi/php-coveralls": "dev-master"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "hamcrest"
- ],
- "files": [
- "hamcrest/Hamcrest.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD"
- ],
- "description": "This is the PHP port of Hamcrest Matchers",
- "keywords": [
- "test"
- ],
- "time": "2015-05-11T14:41:42+00:00"
- },
- {
- "name": "mockery/mockery",
- "version": "0.9.11",
- "source": {
- "type": "git",
- "url": "https://github.com/mockery/mockery.git",
- "reference": "be9bf28d8e57d67883cba9fcadfcff8caab667f8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/mockery/mockery/zipball/be9bf28d8e57d67883cba9fcadfcff8caab667f8",
- "reference": "be9bf28d8e57d67883cba9fcadfcff8caab667f8",
- "shasum": ""
- },
- "require": {
- "hamcrest/hamcrest-php": "~1.1",
- "lib-pcre": ">=7.0",
- "php": ">=5.3.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "0.9.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "Mockery": "library/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Pádraic Brady",
- "email": "padraic.brady@gmail.com",
- "homepage": "http://blog.astrumfutura.com"
- },
- {
- "name": "Dave Marshall",
- "email": "dave.marshall@atstsolutions.co.uk",
- "homepage": "http://davedevelopment.co.uk"
- }
- ],
- "description": "Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL). Designed as a drop in alternative to PHPUnit's phpunit-mock-objects library, Mockery is easy to integrate with PHPUnit and can operate alongside phpunit-mock-objects without the World ending.",
- "homepage": "http://github.com/padraic/mockery",
- "keywords": [
- "BDD",
- "TDD",
- "library",
- "mock",
- "mock objects",
- "mockery",
- "stub",
- "test",
- "test double",
- "testing"
- ],
- "time": "2019-02-12T16:07:13+00:00"
- }
- ],
- "aliases": [],
- "minimum-stability": "dev",
- "stability-flags": [],
- "prefer-stable": true,
- "prefer-lowest": false,
- "platform": {
- "php": ">=5.3.7"
- },
- "platform-dev": []
-}
diff --git a/vendor/pragmarx/tracker/phpunit.xml b/vendor/pragmarx/tracker/phpunit.xml
deleted file mode 100644
index 3347b75b7..000000000
--- a/vendor/pragmarx/tracker/phpunit.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- ./tests/
-
-
-
diff --git a/vendor/pragmarx/tracker/readme.md b/vendor/pragmarx/tracker/readme.md
deleted file mode 100644
index 3644f5bf1..000000000
--- a/vendor/pragmarx/tracker/readme.md
+++ /dev/null
@@ -1,734 +0,0 @@
-# Laravel Stats Tracker
-
-[](https://packagist.org/packages/pragmarx/tracker) [](LICENSE) [](https://packagist.org/packages/pragmarx/tracker)
-
-### Tracker gathers a lot of information from your requests to identify and store:
-
-- **Sessions**
-- **Page Views (hits on routes)**
-- **Users (logged users)**
-- **Devices** (computer, smartphone, tablet...)
-- **Languages** (preference, language range)
-- **User Devices** (by, yeah, storing a cookie on each device)
-- **Browsers** (Chrome, Mozilla Firefox, Safari, Internet Explorer...)
-- **Operating Systems** (iOS, Mac OS, Linux, Windows...)
-- **Geo Location Data** (Latitute, Longitude, Country and City)
-- **Routes and all its parameters**
-- **Events**
-- **Referers** (url, medium, source, search term...)
-- **Exceptions/Errors**
-- **Sql queries and all its bindings**
-- **Url queries and all its arguments**
-- **Database connections**
-
-## Index
-
-- [Why?](#why)
-- [How To Use It](#usage)
-- [Screenshots](#screenshots)
-- [Blade Views](#views)
-- [Table Schemas](#how-data-is-stored)
-- [System Requirements](#requirements)
-- [Installing](#installing)
-- [Upgrading](upgrading.md)
-- [Changelog](changelog.md)
-- [Contributing](#contributing)
-
-## Why?
-
-Storing user tracking information, on indexed and normalized database tables, wastes less disk space and ease the extract of valuable information about your application and business.
-
-## Usage
-
-As soon as you install and enable it, Tracker will start storing all information you tell it to, then you can in your application use the Tracker Facade to access everything. Here are some of the methods and relationships available:
-
-#### Current Session/Visitor
-
-```php
-$visitor = Tracker::currentSession();
-```
-
-Most of those methods return an Eloquent model or collection, so you can use not only its attributes, but also relational data:
-
-```php
-var_dump( $visitor->client_ip );
-
-var_dump( $visitor->device->is_mobile );
-
-var_dump( $visitor->device->platform );
-
-var_dump( $visitor->geoIp->city );
-
-var_dump( $visitor->language->preference );
-
-```
-
-#### Sessions (visits)
-
-```php
-$sessions = Tracker::sessions(60 * 24); // get sessions (visits) from the past day
-```
-
-```php
-foreach ($sessions as $session)
-{
- var_dump( $session->user->email );
-
- var_dump( $session->device->kind . ' - ' . $session->device->platform );
-
- var_dump( $session->agent->browser . ' - ' . $session->agent->browser_version );
-
- var_dump( $session->geoIp->country_name );
-
- foreach ($session->session->log as $log)
- {
- var_dump( $log->path );
- }
-}
-```
-
-#### Online Users
-
-Brings all online sessions (logged and unlogged users)
-
-```php
-$users = Tracker::onlineUsers(); // defaults to 3 minutes
-```
-
-#### Users
-
-```php
-$users = Tracker::users(60 * 24);
-```
-
-#### User Devices
-
-```php
-$users = Tracker::userDevices(60 * 24, $user->id);
-```
-
-#### Events
-
-```php
-$events = Tracker::events(60 * 24);
-```
-
-#### Errors
-
-```php
-$errors = Tracker::errors(60 * 24);
-```
-
-#### PageViews summary
-
-```php
-$pageViews = Tracker::pageViews(60 * 24 * 30);
-```
-
-#### PageViews By Country summary
-
-```php
-$pageViews = Tracker::pageViewsByCountry(60 * 24);
-```
-
-#### Filter range
-
-You can send timestamp ranges to those methods using the Minutes class:
-
-```php
-$range = new Minutes();
-
-$range->setStart(Carbon::now()->subDays(2));
-
-$range->setEnd(Carbon::now()->subDays(1));
-
-Tracker::userDevices($range);
-```
-
-#### Routes By Name
-
-Having a route of
-
-```php
-Route::get('user/{id}', ['as' => 'user.profile', 'use' => 'UsersController@profile']);
-```
-
-You can use this method to select all hits on that particular route and count them using Laravel:
-
-```php
-return Tracker::logByRouteName('user.profile')
- ->where(function($query)
- {
- $query
- ->where('parameter', 'id')
- ->where('value', 1);
- })
- ->count();
-```
-
-And if you need count how many unique visitors accessed that route, you can do:
-
-```php
-return Tracker::logByRouteName('tracker.stats.log')
- ->where(function($query)
- {
- $query
- ->where('parameter', 'uuid')
- ->where('value', '8b6faf82-00f1-4db9-88ad-32e58cfb4f9d');
- })
- ->select('tracker_log.session_id')
- ->groupBy('tracker_log.session_id')
- ->distinct()
- ->count('tracker_log.session_id');
-```
-
-## Screenshots
-
-### Visits
-
-
-
-### Charts
-
-
-
-### Users
-
-
-
-### Events
-
-
-
-### Errors
-
-
-
-## Blade Views
-
-The views above are available in this package, but you need to install the `sb-admin` panel on your public folder, please look at the instructions below.
-
-## How data is stored
-
-All tables are prefixed by `tracker_`, and here's an extract of some of them, showing columns and contents:
-
-### sessions
-
-```
-+-----+--------------------------------------+---------+-----------+----------+-----------------+------------+-----------+----------+-------------+
-| id | uuid | user_id | device_id | agent_id | client_ip | referer_id | cookie_id | geoip_id | language_id |
-+-----+--------------------------------------+---------+-----------+----------+-----------------+------------+-----------+----------+-------------+
-| 1 | 09465be3-5930-4581-8711-5161f62c4373 | 1 | 1 | 1 | 186.228.127.245 | 2 | 1 | 2 | 3 |
-| 2 | 07399969-0a19-47f0-862d-43b06d7cde45 | | 2 | 2 | 66.240.192.138 | | 2 | 2 | 2 |
-+-----+--------------------------------------+---------+-----------+----------+-----------------+------------+-----------+----------+-------------+
-```
-
-### devices
-
-```
-+----+----------+-------------+-------------+------------------+-----------+
-| id | kind | model | platform | platform_version | is_mobile |
-+----+----------+-------------+-------------+------------------+-----------+
-| 1 | Computer | unavailable | Windows 8 | | |
-| 2 | Tablet | iPad | iOS | 7.1.1 | 1 |
-| 3 | Computer | unavailable | Windows XP | | |
-| 5 | Computer | unavailable | Other | | |
-| 6 | Computer | unavailable | Windows 7 | | |
-| 7 | Computer | unavailable | Windows 8.1 | | |
-| 8 | Phone | iPhone | iOS | 7.1 | 1 |
-+----+----------+-------------+-------------+------------------+-----------+
-```
-
-### agents
-
-```
-+----+-----------------------------------------------------------------------------------------------------------------------------------------+-------------------+-----------------+
-| id | name | browser | browser_version |
-+----+-----------------------------------------------------------------------------------------------------------------------------------------+-------------------+-----------------+
-| 1 | Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36 | Chrome | 35.0.1916 |
-| 2 | Mozilla/5.0 (iPad; CPU OS 7_1_1 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) CriOS/34.0.1847.18 Mobile/11D201 Safari/9537.53 | Chrome Mobile iOS | 34.0.1847 |
-| 3 | Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) | IE | 6.0 |
-| 4 | Python-urllib/2.6 | Other | |
-| 5 | Other | Other | |
-| 6 | Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36 | Chrome | 34.0.1847 |
-| 7 | Mozilla/5.0 (Windows NT 6.3; rv:28.0) Gecko/20100101 Firefox/28.0 | Firefox | 28.0 |
-| 8 | Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D169 Safari/9537.53 | Mobile Safari | 7.0 |
-+----+-----------------------------------------------------------------------------------------------------------------------------------------+-------------------+-----------------+
-```
-
-### languages
-
-```
-+----+------------+----------------+
-| id | preference | language_range |
-+----+------------+----------------+
-| 1 | en | ru=0.8,es=0.5 |
-| 2 | es | en=0.7,ru=0.3 |
-| 3 | ru | en=0.5,es=0.5 |
-+----+------------+----------------+
-```
-
-
-### domains
-
-```
-+----+--------------------------+
-| id | name |
-+----+--------------------------+
-| 1 | antoniocarlosribeiro.com |
-+----+--------------------------+
-```
-
-### errors
-
-```
-+----+------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| id | code | message |
-+----+------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| 1 | 404 | |
-| 2 | 500 | Call to undefined method PragmaRX\Tracker\Tracker::sessionLog() |
-| 3 | 500 | Trying to get property of non-object (View: /home/forge/stage.antoniocarlosribeiro.com/app/views/admin/tracker/log.blade.php) |
-| 4 | 500 | syntax error, unexpected 'foreach' (T_FOREACH) |
-| 5 | 500 | Call to undefined method PragmaRX\Tracker\Tracker::pageViewsByCountry() |
-| 6 | 500 | Class PragmaRX\Firewall\Vendor\Laravel\Artisan\Base contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Illuminate\Console\Command::fire) |
-| 7 | 405 | |
-| 8 | 500 | Trying to get property of non-object |
-| 9 | 500 | Missing argument 2 for Illuminate\Database\Eloquent\Model::setAttribute(), called in /home/forge/stage.antoniocarlosribeiro.com/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php on line 2444 and defined |
-+----+------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-```
-
-### events
-
-```
-+----+------------------------------------------------+
-| id | name |
-+----+------------------------------------------------+
-| 1 | illuminate.log |
-| 2 | router.before |
-| 3 | router.matched |
-| 4 | auth.attempt |
-| 5 | auth.login |
-| 6 | composing: admin.tracker.index |
-| 7 | creating: admin.tracker._partials.menu |
-| 8 | composing: admin.tracker._partials.menu |
-| 9 | creating: admin.layout |
-| 10 | composing: admin.layout |
-| 11 | creating: admin._partials.mainMenu |
-| 12 | composing: admin._partials.mainMenu |
-| 13 | creating: admin._partials.messages |
-| 14 | composing: admin._partials.messages |
-| 15 | creating: global._partials.google-analytics |
-| 16 | composing: global._partials.google-analytics |
-+----+------------------------------------------------+
-```
-
-### geoip
-
-```
-+----+----------+-----------+--------------+---------------+---------------------------+--------+----------------+-------------+-----------+----------+------------+----------------+
-| id | latitude | longitude | country_code | country_code3 | country_name | region | city | postal_code | area_code | dma_code | metro_code | continent_code |
-+----+----------+-----------+--------------+---------------+---------------------------+--------+----------------+-------------+-----------+----------+------------+----------------+
-| 1 | 37.4192 | -122.057 | US | USA | United States | CA | Mountain View | 94043 | 650 | 807 | 807 | NA |
-| 2 | -10 | -55 | BR | BRA | Brazil | | | | | | | SA |
-| 3 | 30.3909 | -86.3161 | US | USA | United States | FL | Miramar Beach | 32550 | 850 | 686 | 686 | NA |
-| 4 | 38.65 | -90.5334 | US | USA | United States | MO | Chesterfield | 63017 | 314 | 609 | 609 | NA |
-| 5 | 42.7257 | -84.636 | US | USA | United States | MI | Lansing | 48917 | 517 | 551 | 551 | NA |
-| 6 | 42.8884 | -78.8761 | US | USA | United States | NY | Buffalo | 14202 | 716 | 514 | 514 | NA |
-| 7 | 40.1545 | -75.3809 | US | USA | United States | PA | Norristown | 19403 | 610 | 504 | 504 | NA |
-| 8 | 47.4891 | -122.291 | US | USA | United States | WA | Seattle | 98168 | 206 | 819 | 819 | NA |
-| 9 | 33.7516 | -84.3915 | US | USA | United States | GA | Atlanta | 30303 | 404 | 524 | 524 | NA |
-| 10 | 33.7633 | -117.794 | US | USA | United States | CA | Santa Ana | 92705 | 714 | 803 | 803 | NA |
-| 11 | 33.4357 | -111.917 | US | USA | United States | AZ | Tempe | 85281 | 480 | 753 | 753 | NA |
-| 12 | 40.7421 | -74.0018 | US | USA | United States | NY | New York | 10011 | 212 | 501 | 501 | NA |
-| 13 | 28.6185 | -81.4336 | US | USA | United States | FL | Orlando | 32810 | 407 | 534 | 534 | NA |
-| 14 | 38.6312 | -90.1922 | US | USA | United States | MO | Saint Louis | 63101 | 314 | 609 | 609 | NA |
-| 15 | 51 | 9 | DE | DEU | Germany | | | | | | | EU |
-| 16 | 52.5 | 5.75 | NL | NLD | Netherlands | | | | | | | EU |
-| 17 | 48.86 | 2.35 | FR | FRA | France | | | | | | | EU |
-| 18 | 60 | 100 | RU | RUS | Russian Federation | | | | | | | EU |
-| 19 | 51.5 | -0.13 | GB | GBR | United Kingdom | | | | | | | EU |
-| 20 | 42.8333 | 12.8333 | IT | ITA | Italy | | | | | | | EU |
-| 21 | 59.3333 | 18.05 | SE | SWE | Sweden | 26 | Stockholm | | | | | EU |
-| 22 | -41 | 174 | NZ | NZL | New Zealand | | | | | | | OC |
-| 23 | 37.57 | 126.98 | KR | KOR | Korea, Republic of | | | | | | | AS |
-| 24 | 1.3667 | 103.8 | SG | SGP | Singapore | | | | | | | AS |
-| 25 | -43.5333 | 172.633 | NZ | NZL | New Zealand | E9 | Christchurch | 8023 | | | | OC |
-| 26 | -27.471 | 153.024 | AU | AUS | Australia | 04 | Brisbane | | | | | OC |
-| 27 | 26.9167 | 75.8167 | IN | IND | India | 24 | Jaipur | | | | | AS |
-| 28 | 32 | 53 | IR | IRN | Iran, Islamic Republic of | | | | | | | AS |
-| 29 | 32.0617 | 118.778 | CN | CHN | China | 04 | Nanjing | | | | | AS |
-| 30 | -22.9 | -47.0833 | BR | BRA | Brazil | 27 | Campinas | | | | | SA |
-| 31 | 32.8073 | -117.132 | US | USA | United States | CA | San Diego | 92123 | 858 | 825 | 825 | NA |
-| 32 | -22.9 | -43.2333 | BR | BRA | Brazil | 21 | Rio De Janeiro | | | | | SA |
-+----+----------+-----------+--------------+---------------+---------------------------+--------+----------------+-------------+-----------+----------+------------+----------------+
-```
-
-### log
-
-```
-+-----+------------+---------+----------+--------+---------------+---------+-----------+---------+------------+----------+
-| id | session_id | path_id | query_id | method | route_path_id | is_ajax | is_secure | is_json | wants_json | error_id |
-+-----+------------+---------+----------+--------+---------------+---------+-----------+---------+------------+----------+
-| 1 | 1 | 1 | | GET | 1 | | 1 | | | |
-| 2 | 1 | 2 | | GET | 2 | | 1 | | | |
-| 3 | 1 | 3 | | GET | 3 | | 1 | | | |
-| 4 | 1 | 3 | | POST | 4 | | 1 | | | |
-+-----+------------+---------+----------+--------+---------------+---------+-----------+---------+------------+----------+
-```
-
-### paths
-
-```
-+----+--------------------------------------------------------+
-| id | path |
-+----+--------------------------------------------------------+
-| 1 | / |
-| 2 | admin |
-| 3 | login |
-| 4 | admin/languages |
-| 5 | admin/tracker |
-| 6 | admin/pages |
-| 7 | jmx-console |
-| 8 | manager/html |
-| 9 | administrator |
-| 10 | joomla/administrator |
-| 11 | cms/administrator |
-| 12 | Joomla/administrator |
-| 13 | phpmyadmin |
-| 14 | phpMyAdmin |
-| 15 | mysql |
-| 16 | sql |
-| 17 | myadmin |
-| 18 | webdav |
-+----+--------------------------------------------------------+
-```
-
-### route_paths
-
-```
-+----+----------+--------------------------------------------------------+
-| id | route_id | path |
-+----+----------+--------------------------------------------------------+
-| 1 | 1 | / |
-| 2 | 2 | admin |
-| 3 | 3 | login |
-| 4 | 4 | login |
-| 5 | 5 | admin/languages |
-| 6 | 6 | admin/tracker |
-| 7 | 7 | admin/pages |
-+----+----------+--------------------------------------------------------+
-```
-
-### routes
-
-```
-+----+--------------------------------------+----------------------------------------------------------+
-| id | name | action |
-+----+--------------------------------------+----------------------------------------------------------+
-| 1 | home | ACR\Controllers\Home@index |
-| 2 | admin | ACR\Controllers\Admin\Admin@index |
-| 3 | login.form | ACR\Controllers\Logon@form |
-| 4 | login.do | ACR\Controllers\Logon@login |
-| 5 | admin.languages.index | ACR\Controllers\Admin\Languages@index |
-| 6 | admin.tracker.index | ACR\Controllers\Admin\Tracker@index |
-| 7 | admin.pages.index | ACR\Controllers\Admin\Pages@index |
-| 8 | admin.tracker.log | ACR\Controllers\Admin\Tracker@log |
-| 9 | technology | ACR\Controllers\Technology@index |
-| 10 | technology.articles.show | ACR\Controllers\Technology@show |
-| 11 | language.select | ACR\Controllers\Language@select |
-| 12 | admin.tracker.summary | ACR\Controllers\Admin\Tracker@summary |
-| 13 | admin.tracker.api.pageviews | ACR\Controllers\Admin\Tracker@apiPageviews |
-| 14 | admin.tracker.api.pageviewsbycountry | ACR\Controllers\Admin\Tracker@apiPageviewsByCountry |
-| 15 | admin.pages.create | ACR\Controllers\Admin\Pages@create |
-| 16 | api.markdown | ACR\Controllers\Api@markdown |
-| 17 | admin.pages.store | ACR\Controllers\Admin\Pages@store |
-| 18 | bio | ACR\Controllers\StaticPages@show |
-| 19 | logout.do | ACR\Controllers\Logon@logout |
-| 20 | admin.tracker.index | ACR\Controllers\Admin\UsageTracker@index |
-| 21 | admin.tracker.api.pageviewsbycountry | ACR\Controllers\Admin\UsageTracker@apiPageviewsByCountry |
-| 22 | admin.tracker.api.pageviews | ACR\Controllers\Admin\UsageTracker@apiPageviews |
-+----+--------------------------------------+----------------------------------------------------------+
-```
-
-### sql_queries ;
-
-```
-+----+------------------------------------------+-------------------------------------------------------------------------------------------------+-------+---------------+
-| id | sha1 | statement | time | connection_id |
-+----+------------------------------------------+-------------------------------------------------------------------------------------------------+-------+---------------+
-| 1 | 5aee121018ac16dbf26dbbe0cf35fd44a29a5d7e | select * from "users" where "id" = ? limit 1 | 3.13 | 1 |
-| 2 | 0fc3f3a722b0f9ef38e6bee44fc3fde9fb1fd1d9 | select "created_at" from "articles" where "published_at" is not null order by "created_at" desc | 1.99 | 1 |
-+----+------------------------------------------+-------------------------------------------------------------------------------------------------+-------+---------------+
-```
-
-## Manually log things
-
-If your application has special needs, you can manually log things like:
-
-#### Events
-
-```php
-Tracker::trackEvent(['event' => 'cart.add']);
-Tracker::trackEvent(['event' => 'cart.add', 'object' => 'App\Cart\Events\Add']);
-```
-
-#### Routes
-
-```php
-Tracker::trackVisit(
- [
- 'name' => 'my.dynamic.route.name',
- 'action' => 'MyDynamic@url'
- ],
- ['path' => 'my/dynamic/url']
-);
-```
-
-## Requirements
-
-- Laravel 5+
-- PHP 5.3.7+
-- Package "geoip/geoip":"~1.14" or "geoip2/geoip2":"~2.0"
- (If you are planning to store Geo IP information)
-
-For Laravel 4+ please use version 2.0.10.
-
-## Installing
-
-#### Require the `tracker` package by **executing** the following command in your command line:
-
- composer require pragmarx/tracker
-
-#### Add the service provider to your app/config/app.php:
-
-```php
- PragmaRX\Tracker\Vendor\Laravel\ServiceProvider::class,
-```
-
-#### Add the alias to the facade on your app/config/app.php:
-
-```php
-'Tracker' => 'PragmaRX\Tracker\Vendor\Laravel\Facade',
-```
-
-#### Publish tracker configuration:
-
-**Laravel 4**
-
- php artisan config:publish pragmarx/tracker
-
-**Laravel 5**
-
- php artisan vendor:publish --provider="PragmaRX\Tracker\Vendor\Laravel\ServiceProvider"
-
-#### Enable the Middleware (Laravel 5)
-
-Open the newly published config file found at `app/config/tracker.php` and enable `use_middleware`:
-
-```php
-'use_middleware' => true,
-```
-
-#### Add the Middleware to Laravel Kernel (Laravel 5)
-
-Open the file `app/Http/Kernel.php` and add the following to your web middlewares:
-
-```php
-\PragmaRX\Tracker\Vendor\Laravel\Middlewares\Tracker::class,
-```
-
-#### Enable Tracker in your config.php (Laravel 4) or tracker.php (Laravel 5)
-
-```php
-'enabled' => true,
-```
-
-#### Publish the migration
-
- php artisan tracker:tables
-
-This is only needed if you are on Laravel 4, because `vendor:publish` does it for you in Laravel 5.
-
-#### Create a database connection for it on your `config/database.php`
-
-```php
-'connections' => [
- 'mysql' => [
- ...
- ],
-
- 'tracker' => [
- 'driver' => '...',
- 'host' => '...',
- 'database' => ...,
- 'strict' => false, // to avoid problems on some MySQL installs
- ...
- ],
-],
-```
-
-#### Migrate it
-
-If you have set the default connection to `tracker`, you can
-
- php artisan migrate
-
-Otherwise you'll have to
-
- php artisan migrate --database=tracker
-
-#### If you are planning to store Geo IP information, also install the geoip package:
-
- composer require "geoip/geoip":"~1.14"
-
- or
-
- composer require "geoip2/geoip2":"~2.0"
-
-#### And make sure you don't have the PHP module installed. This is a Debian/Ubuntu example:
-
- sudo apt-get purge php5-geoip
-
-## Everything Is Disabled By Default
-
-Tracker has a lot of logging options, but you need to decide what you want to log. Starting by enabling this one:
-
-```php
-'log_enabled' => true,
-```
-
-It is responsible for logging page hits and sessions, basically the client IP address.
-
-## Multiple authentication drivers
-
-You just have to all your auth IOC bidings to the array:
-
-```php
-'authentication_ioc_binding' => ['auth', 'admin'],
-```
-
-## Stats Panel
-
-To use the stats panel on your website you'll need to download the sb-admin 2 sources to your public folder:
-
- git clone https://github.com/BlackrockDigital/startbootstrap-sb-admin-2.git public/templates/sb-admin-2
- cd public/templates/sb-admin-2
- git checkout tags/v3.3.7+1
- git checkout -b v3.3.7+1
-
-And enabled in your config file:
-
-```php
-'stats_panel_enabled' => true,
-```
-
-Set the web middleware for stats routes (Laravel 5)
-
-```php
-'stats_routes_middleware' => 'web',
-```
-
-Only admins can view the stats, so if you don't have an is_admin attribute on your user model, you'll have to add one:
-
-```php
-public function getIsAdminAttribute()
-{
- return true;
-}
-```
-
-It can be 'admin', 'is_admin', 'root' or 'is_root'.
-
-## Troubleshooting
-
-### Is everything enabled?
-
-Make sure Tracker is enabled in the config file. Usually this is the source of most problems.
-
-### Tail your laravel.log file
-
-``` php
-tail -f storage/logs/laravel.log
-```
-
-Usually non-trackable IP addresses and other messages will appear in the log:
-
-```
-[2018-03-19 21:28:08] local.WARNING: TRACKER (unable to track item): 127.0.0.1 is not trackable.
-```
-
-### SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default value for 'field name'
-
-This is probably related to SQL modes on MySQL, specifically with `NO_ZERO_IN_DATE` and `NO_ZERO_DATE` modes:
-
-https://stackoverflow.com/questions/36882149/error-1067-42000-invalid-default-value-for-created-at
-
-
-Because Laravel's defaults to
-
-```sql
-set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
-```
-
-You may need to change your Tracker database connection configuration to
-
-```php
-'connections' => [
- ...
-
- 'tracker' => [
- ...
-
- 'strict' => false,
- ],
-],
-
-```
-
-## Not able to track users?
-
-If you get an error like:
-
- Base table or view not found: 1146 Table 'tracker.users' doesn't exist
-
-You probably need to change:
-
- 'user_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\User',
-
-To create (or use a current) a User model:
-
- 'user_model' => 'App\TrackerUser',
-
-And configure the Connection related to your users table:
-
- protected $connection = 'mysql';
-
-## Not able to track API's?
-
-In your kernel
-
- protected $middlewareGroups = [
- 'web' => [
- .......
- \PragmaRX\Tracker\Vendor\Laravel\Middlewares\Tracker::class,
- ],
-
- 'api' => [
- .......
- \PragmaRX\Tracker\Vendor\Laravel\Middlewares\Tracker::class,
- ],
- ];
-
-
-## Author
-
-[Antonio Carlos Ribeiro](http://twitter.com/iantonioribeiro)
-[All Contributors](https://github.com/antonioribeiro/tracker/graphs/contributors)
-
-## License
-
-Tracker is licensed under the BSD 3-Clause License - see the `LICENSE` file for details
-
-## Contributing
-
-Pull requests and issues are more than welcome.
diff --git a/vendor/pragmarx/tracker/src/Data/Repositories/Agent.php b/vendor/pragmarx/tracker/src/Data/Repositories/Agent.php
deleted file mode 100644
index 1e62c72e7..000000000
--- a/vendor/pragmarx/tracker/src/Data/Repositories/Agent.php
+++ /dev/null
@@ -1,7 +0,0 @@
-config = $config;
-
- $this->request = $request;
-
- $this->cookieJar = $cookieJar;
-
- parent::__construct($model);
- }
-
- public function getId()
- {
- if (!$this->config->get('store_cookie_tracker')) {
- return;
- }
-
- if (!$cookie = $this->request->cookie($this->config->get('tracker_cookie_name'))) {
- $cookie = (string) UUID::uuid4();
-
- $this->cookieJar->queue($this->config->get('tracker_cookie_name'), $cookie, 0);
- }
-
- return $this->findOrCreate(['uuid' => $cookie]);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Data/Repositories/Device.php b/vendor/pragmarx/tracker/src/Data/Repositories/Device.php
deleted file mode 100644
index 356d03c06..000000000
--- a/vendor/pragmarx/tracker/src/Data/Repositories/Device.php
+++ /dev/null
@@ -1,7 +0,0 @@
-getMessage()) {
- return $message;
- }
-
- return $message;
- }
-
- public function getCodeFromException($exception)
- {
- if (method_exists($exception, 'getCode') && $code = $exception->getCode()) {
- return $code;
- }
-
- if (method_exists($exception, 'getStatusCode') && $code = $exception->getStatusCode()) {
- return $code;
- }
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Data/Repositories/Event.php b/vendor/pragmarx/tracker/src/Data/Repositories/Event.php
deleted file mode 100644
index d32c9f710..000000000
--- a/vendor/pragmarx/tracker/src/Data/Repositories/Event.php
+++ /dev/null
@@ -1,185 +0,0 @@
-eventStorage = $eventStorage;
-
- $this->eventLogRepository = $eventLogRepository;
-
- $this->systemClassRepository = $systemClassRepository;
-
- $this->logRepository = $logRepository;
-
- $this->config = $config;
- }
-
- public function logEvents()
- {
- if (!$this->logRepository->getCurrentLogId()) {
- return;
- }
-
- foreach ($this->eventStorage->popAll() as $event) {
- if ($this->isLoggableEvent($event)) {
- $this->logEvent($event);
- }
- }
- }
-
- private function isLoggableEvent($event)
- {
- $forbidden = $this->config->get('do_not_log_events');
-
- // Illuminate Query may cause infinite recursion
- $forbidden[] = 'illuminate.query';
-
- return
- $event['event'] != $this->getObject($event['object'])
-
- &&
-
- !in_array_wildcard($event['event'], $forbidden)
-
- &&
-
- !$this->config->get('log_only_events')
- || in_array($event['event'], $this->config->get('log_only_events'));
- }
-
- public function logEvent($event)
- {
- $event = $this->makeEventArray($event);
-
- $evenId = $this->getEventId($event);
-
- if ($evenId) {
- $objectName = $this->getObjectName($event);
-
- $classId = $this->getClassId($objectName);
-
- $this->eventLogRepository->create(
- [
- 'log_id' => $this->logRepository->getCurrentLogId(),
- 'event_id' => $evenId,
- 'class_id' => $classId,
- ]
- );
- }
- }
-
- private function getObject($object)
- {
- if (is_object($object)) {
- $object = get_class($object);
- } elseif (is_array($object)) {
- $object = serialize($object);
- }
-
- return $object;
- }
-
- public function getAll($minutes, $results)
- {
- return $this->getModel()->allInThePeriod($minutes, $results);
- }
-
- /**
- * Get the object name from an event.
- *
- * @param $event
- *
- * @return null|string
- */
- private function getObjectName($event)
- {
- return isset($event['object'])
- ? $this->getObject($event['object'])
- : null;
- }
-
- /**
- * Get the system class id by object name.
- *
- * @param null|string $objectName
- *
- * @return null
- */
- private function getClassId($objectName)
- {
- return $objectName
- ? $this->systemClassRepository->findOrCreate(
- ['name' => $objectName],
- ['name']
- )
- : null;
- }
-
- /**
- * Get the event id.
- *
- * @param $event
- *
- * @return null
- */
- private function getEventId($event)
- {
- return $event['event']
- ? $this->findOrCreate(
- ['name' => $event['event']],
- ['name']
- )
- : null;
- }
-
- private function makeEventArray($event)
- {
- if (is_string($event)) {
- $event = [
- 'event' => $event,
- 'object' => null,
- ];
- }
-
- return $event;
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Data/Repositories/EventLog.php b/vendor/pragmarx/tracker/src/Data/Repositories/EventLog.php
deleted file mode 100644
index 8129fb517..000000000
--- a/vendor/pragmarx/tracker/src/Data/Repositories/EventLog.php
+++ /dev/null
@@ -1,7 +0,0 @@
-route_path_id = $route_path_id;
- }
-
- $model = $this->getModel();
-
- if ($model->id && $this->route_path_id && !$model->route_path_id) {
- $model->route_path_id = $this->route_path_id;
-
- $model->save();
- }
-
- return $model;
- }
-
- public function updateError($error_id)
- {
- $model = $this->getModel();
-
- if ($model->id) {
- $model->error_id = $error_id;
-
- $model->save();
- }
-
- return $model;
- }
-
- public function bySession($sessionId, $results = true)
- {
- $query = $this
- ->getModel()
- ->where('session_id', $sessionId)->orderBy('updated_at', 'desc');
-
- if ($results) {
- return $query->get();
- }
-
- return $query;
- }
-
- /**
- * @return null
- */
- public function getCurrentLogId()
- {
- return $this->currentLogId;
- }
-
- /**
- * @param null|$currentLogId
- *
- * @return null|int
- */
- public function setCurrentLogId($currentLogId)
- {
- return $this->currentLogId = $currentLogId;
- }
-
- public function createLog($data)
- {
- $log = $this->create($data);
-
- $this->updateRoute();
-
- return $this->setCurrentLogId($log->id);
- }
-
- public function pageViews($minutes, $results)
- {
- return $this->getModel()->pageViews($minutes, $results);
- }
-
- public function pageViewsByCountry($minutes, $results)
- {
- return $this->getModel()->pageViewsByCountry($minutes, $results);
- }
-
- public function getErrors($minutes, $results)
- {
- return $this->getModel()->errors($minutes, $results);
- }
-
- public function allByRouteName($name, $minutes = null)
- {
- return $this->getModel()->allByRouteName($name, $minutes);
- }
-
- public function delete()
- {
- $this->currentLogId = null;
-
- $this->getModel()->delete();
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Data/Repositories/Path.php b/vendor/pragmarx/tracker/src/Data/Repositories/Path.php
deleted file mode 100644
index c0b7829e2..000000000
--- a/vendor/pragmarx/tracker/src/Data/Repositories/Path.php
+++ /dev/null
@@ -1,7 +0,0 @@
-refererParser = $refererParser;
-
- $this->currentUrl = $currentUrl;
-
- $this->searchTermModel = $searchTermModel;
- }
-
- /**
- * @param $refererUrl
- * @param $host
- * @param $domain_id
- *
- * @return mixed
- */
- public function store($refererUrl, $host, $domain_id)
- {
- $attributes = [
- 'url' => $refererUrl,
- 'host' => $host,
- 'domain_id' => $domain_id,
- 'medium' => null,
- 'source' => null,
- 'search_terms_hash' => null,
- ];
-
- $parsed = $this->refererParser->parse($refererUrl, $this->currentUrl);
-
- if ($parsed->isKnown()) {
- $attributes['medium'] = $parsed->getMedium();
-
- $attributes['source'] = $parsed->getSource();
-
- $attributes['search_terms_hash'] = sha1($parsed->getSearchTerm());
- }
-
- $referer = $this->findOrCreate(
- $attributes,
- ['url', 'search_terms_hash']
- );
-
- $referer = $this->find($referer);
-
- if ($parsed->isKnown()) {
- $this->storeSearchTerms($referer, $parsed);
- }
-
- return $referer->id;
- }
-
- private function storeSearchTerms($referer, $parsed)
- {
- foreach (explode(' ', $parsed->getSearchTerm()) as $term) {
- $this->findOrCreate(
- [
- 'referer_id' => $referer->id,
- 'search_term' => $term,
- ],
- ['referer_id', 'search_term'],
- $created,
- $this->searchTermModel
- );
- }
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Data/Repositories/Repository.php b/vendor/pragmarx/tracker/src/Data/Repositories/Repository.php
deleted file mode 100644
index e51832571..000000000
--- a/vendor/pragmarx/tracker/src/Data/Repositories/Repository.php
+++ /dev/null
@@ -1,183 +0,0 @@
-model = $model;
-
- $this->className = get_class($model);
-
- $this->connection = $this->getModel()->getConnectionName();
-
- $this->cache = app('tracker.cache');
- }
-
- public function where($key, $operation, $value = null)
- {
- $this->builder = $this->builder ?: $this->newQuery();
-
- $this->builder = $this->builder->where($key, $operation, $value = null);
-
- return $this;
- }
-
- public function first()
- {
- $this->result = $this->builder->first();
-
- return $this->result ? $this : null;
- }
-
- public function find($id)
- {
- list($model, $cacheKey) = $this->cache->findCached($id, null, $this->className);
-
- if (!$model) {
- $model = $this->newQuery();
-
- if ($this->relations) {
- $model->with($this->relations);
- }
-
- if ($model = $model->find($id)) {
- $this->cache->cachePut($cacheKey, $model);
- }
- }
-
- $this->model = $model;
- $this->result = $model;
-
- return $model;
- }
-
- public function create($attributes, $model = null)
- {
- $model = $model && !$model->exists() ? $model : $this->newModel($model);
-
- foreach ($attributes as $attribute => $value) {
- if (in_array($attribute, $model->getFillable())) {
- $model->{$attribute} = $value;
- }
- }
-
- $model->save();
-
- return $model;
- }
-
- public function getId()
- {
- return $this->getAttribute('id');
- }
-
- /**
- * @param string $attribute
- */
- public function getAttribute($attribute)
- {
- return $this->result ? $this->result->{$attribute} : null;
- }
-
- public function setAttribute($attribute, $value)
- {
- return $this->result->{$attribute} = $value;
- }
-
- public function save()
- {
- return $this->result->save();
- }
-
- /**
- * @param string[] $keys
- */
- public function findOrCreate($attributes, $keys = null, &$created = false, $otherModel = null)
- {
- list($model, $cacheKey) = $this->cache->findCached($attributes, $keys, $this->className);
-
- if (!$model) {
- $model = $this->newQuery($otherModel);
-
- $keys = $keys ?: array_keys($attributes);
-
- foreach ($keys as $key) {
- $model = $model->where($key, $attributes[$key]);
- }
-
- if (!$model = $model->first()) {
- $model = $this->create($attributes, $otherModel);
-
- $created = true;
- }
-
- $this->cache->cachePut($cacheKey, $model);
- }
-
- $this->model = $model;
-
- return $model->id;
- }
-
- public function getModel()
- {
- if ($this->model instanceof Illuminate\Database\Eloquent\Builder) {
- $this->model = new $this->className();
- }
-
- if ($this->connection) {
- $this->model->setConnection($this->connection);
- }
-
- return $this->model;
- }
-
- public function newModel($model = null)
- {
- $className = $this->className;
-
- if ($model) {
- $className = get_class($model);
- }
-
- $this->model = new $className();
-
- return $this->getModel();
- }
-
- public function newQuery($model = null)
- {
- $className = $this->className;
-
- if ($model) {
- $className = get_class($model);
- }
-
- $this->builder = new $className();
-
- if ($this->connection) {
- $this->builder = $this->builder->on($this->connection);
- }
-
- return $this->builder->newQuery();
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Data/Repositories/RepositoryInterface.php b/vendor/pragmarx/tracker/src/Data/Repositories/RepositoryInterface.php
deleted file mode 100644
index 2e5a1ad95..000000000
--- a/vendor/pragmarx/tracker/src/Data/Repositories/RepositoryInterface.php
+++ /dev/null
@@ -1,7 +0,0 @@
-config = $config;
- }
-
- public function isTrackable($route)
- {
- $forbidden = $this->config->get('do_not_track_routes');
-
- return
- !$forbidden ||
- !$route->currentRouteName() ||
- !in_array_wildcard($route->currentRouteName(), $forbidden);
- }
-
- public function pathIsTrackable($path)
- {
- $forbidden = $this->config->get('do_not_track_paths');
-
- return
- !$forbidden ||
- empty($path) ||
- !in_array_wildcard($path, $forbidden);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Data/Repositories/RoutePath.php b/vendor/pragmarx/tracker/src/Data/Repositories/RoutePath.php
deleted file mode 100644
index 8726837ce..000000000
--- a/vendor/pragmarx/tracker/src/Data/Repositories/RoutePath.php
+++ /dev/null
@@ -1,7 +0,0 @@
-config = $config;
-
- $this->session = $session;
-
- parent::__construct($model);
- }
-
- public function findByUuid($uuid)
- {
- list($model, $cacheKey) = $this->cache->findCached($uuid, 'uuid', 'PragmaRX\Tracker\Vendor\Laravel\Models\Session');
-
- if (!$model) {
- $model = $this->newQuery()->where('uuid', $uuid)->with($this->relations)->first();
-
- $this->cache->cachePut($cacheKey, $model);
- }
-
- return $model;
- }
-
- public function getCurrentId($sessionInfo)
- {
- $this->setSessionData($sessionInfo);
-
- return $this->sessionGetId($sessionInfo);
- }
-
- public function setSessionData($sessinInfo)
- {
- $this->generateSession($sessinInfo);
-
- if ($this->sessionIsKnownOrCreateSession()) {
- $this->ensureSessionDataIsComplete();
- }
- }
-
- private function generateSession($sessionInfo)
- {
- $this->sessionInfo = $sessionInfo;
-
- if (!$this->sessionIsReliable()) {
- $this->regenerateSystemSession();
- }
-
- $this->checkSessionUuid();
- }
-
- private function sessionIsReliable()
- {
- $data = $this->getSessionData();
-
- if (isset($data['user_id'])) {
- if ($data['user_id'] !== $this->sessionInfo['user_id']) {
- return false;
- }
- }
-
- if (isset($data['client_ip'])) {
- if ($data['client_ip'] !== $this->sessionInfo['client_ip']) {
- return false;
- }
- }
-
- if (isset($data['user_agent'])) {
- if ($data['user_agent'] !== $this->sessionInfo['user_agent']) {
- return false;
- }
- }
-
- return true;
- }
-
- private function sessionIsKnownOrCreateSession()
- {
- if (!$known = $this->sessionIsKnown()) {
- $this->sessionSetId($this->findOrCreate($this->sessionInfo, ['uuid']));
- } else {
- $session = $this->find($this->getSessionData('id'));
-
- $session->updated_at = Carbon::now();
-
- $session->save();
-
- $this->sessionInfo['id'] = $this->getSessionData('id');
- }
-
- return $known;
- }
-
- private function sessionIsKnown()
- {
- if (!$this->session->has($this->getSessionKey())) {
- return false;
- }
-
- if (!$this->getSessionData('uuid') == $this->getSystemSessionId()) {
- return false;
- }
-
- if (!$this->findByUuid($this->getSessionData('uuid'))) {
- return false;
- }
-
- return true;
- }
-
- private function ensureSessionDataIsComplete()
- {
- $sessionData = $this->getSessionData();
-
- $wasComplete = true;
-
- foreach ($this->sessionInfo as $key => $value) {
- if ($key === 'user_agent') {
- continue;
- }
- if ($sessionData[$key] !== $value) {
- if (!isset($model)) {
- $model = $this->find($this->sessionInfo['id']);
- }
-
- $model->setAttribute($key, $value);
-
- $model->save();
-
- $wasComplete = false;
- }
- }
-
- if (!$wasComplete) {
- $this->storeSession();
- }
- }
-
- private function sessionGetId()
- {
- return $this->sessionInfo['id'];
- }
-
- private function sessionSetId($id)
- {
- $this->sessionInfo['id'] = $id;
-
- $this->storeSession();
- }
-
- private function storeSession()
- {
- $this->putSessionData($this->sessionInfo);
- }
-
- private function getSystemSessionId()
- {
- $sessionData = $this->getSessionData();
-
- if (isset($sessionData['uuid'])) {
- return $sessionData['uuid'];
- }
-
- return (string) UUID::uuid4();
- }
-
- private function regenerateSystemSession($data = null)
- {
- $data = $data ?: $this->getSessionData();
-
- if (!$data) {
- $this->resetSessionUuid($data);
-
- $this->sessionIsKnownOrCreateSession();
- }
-
- return $this->sessionInfo;
- }
-
- /**
- * @param string $variable
- */
- private function getSessionData($variable = null)
- {
- $data = $this->session->get($this->getSessionKey());
-
- return $variable
- ? (isset($data[$variable]) ? $data[$variable] : null)
- : $data;
- }
-
- private function putSessionData($data)
- {
- $this->session->put($this->getSessionKey(), $data);
- }
-
- private function getSessionKey()
- {
- return $this->config->get('tracker_session_name');
- }
-
- private function getSessions()
- {
- return $this
- ->newQuery()
- ->with($this->relations)
- ->orderBy('updated_at', 'desc');
- }
-
- public function all()
- {
- return $this->getSessions()->get();
- }
-
- public function last($minutes, $returnResults)
- {
- $query = $this
- ->getSessions()
- ->period($minutes);
-
- if ($returnResults) {
- $cacheKey = 'last-sessions';
-
- $result = $this->cache->findCachedWithKey($cacheKey);
-
- if (!$result) {
- $result = $query->get();
-
- $this->cache->cachePut($cacheKey, $result, 1); // cache only for 1 minute
-
- return $result;
- }
-
- return $result;
- }
-
- return $query;
- }
-
- public function userDevices($minutes, $user_id, $results)
- {
- if (!$user_id) {
- return [];
- }
-
- $sessions = $this
- ->getSessions()
- ->period($minutes)
- ->where('user_id', $user_id);
-
- if ($results) {
- $sessions = $sessions->get()->pluck('device')->unique();
- }
-
- return $sessions;
- }
-
- public function users($minutes, $results)
- {
- return $this->getModel()->users($minutes, $results);
- }
-
- public function getCurrent()
- {
- return $this->getModel();
- }
-
- public function updateSessionData($data)
- {
- $session = $this->checkIfUserChanged($data, $this->find($this->getSessionData('id')));
-
- foreach ($session->getAttributes() as $name => $value) {
- if (isset($data[$name]) && $name !== 'id' && $name !== 'uuid') {
- $session->{$name} = $data[$name];
- }
- }
-
- $session->save();
-
- return $data;
- }
-
- private function checkIfUserChanged($data, $model)
- {
- if (!is_null($model->user_id) && !is_null($data['user_id']) && $data['user_id'] !== $model->user_id) {
- $newSession = $this->regenerateSystemSession($data);
-
- $model = $this->findByUuid($newSession['uuid']);
- }
-
- return $model;
- }
-
- private function checkSessionUuid()
- {
- if (!isset($this->sessionInfo['uuid']) || !$this->sessionInfo['uuid']) {
- $this->sessionInfo['uuid'] = $this->getSystemSessionId();
- }
- }
-
- private function resetSessionUuid($data = null)
- {
- $this->sessionInfo['uuid'] = null;
-
- $data = $data ?: $this->sessionInfo;
-
- unset($data['uuid']);
-
- $this->putSessionData($data);
-
- $this->checkSessionUuid();
-
- return $data;
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Data/Repositories/SqlQuery.php b/vendor/pragmarx/tracker/src/Data/Repositories/SqlQuery.php
deleted file mode 100644
index 34dd0cd7f..000000000
--- a/vendor/pragmarx/tracker/src/Data/Repositories/SqlQuery.php
+++ /dev/null
@@ -1,169 +0,0 @@
-sqlQueryLogRepository = $sqlQueryLogRepository;
-
- $this->sqlQueryBindingRepository = $sqlQueryBindingRepository;
-
- $this->sqlQueryBindingParameterRepository = $sqlQueryBindingParameterRepository;
-
- $this->connectionRepository = $connectionRepository;
-
- $this->logRepository = $logRepository;
-
- $this->config = $config;
- }
-
- public function fire()
- {
- if (!$this->logRepository->getCurrentLogId()) {
- return;
- }
-
- foreach ($this->queries as $query) {
- $this->logQuery($query);
- }
-
- $this->clear();
- }
-
- private function sqlQueryIsLoggable($sqlQuery)
- {
- return strpos($sqlQuery, '"tracker_') === false;
- }
-
- private function serializeBindings($bindings)
- {
- return serialize($bindings);
- }
-
- public function push($query)
- {
- $this->queries[] = $query;
-
- $this->fire();
- }
-
- private function logQuery($query)
- {
- $sqlQuery = htmlentities($query['query']);
-
- $bindings = $query['bindings'];
-
- $time = $query['time'];
-
- $name = $query['name'];
-
- if (!$this->sqlQueryIsLoggable($sqlQuery)) {
- return;
- }
-
- $connectionId = $this->connectionRepository->findOrCreate(
- ['name' => $name],
- ['name']
- );
-
- $sqlQueryId = $this->findOrCreate(
- [
- 'sha1' => sha1($sqlQuery),
- 'statement' => $sqlQuery,
- 'time' => $time,
- 'connection_id' => $connectionId,
- ],
- ['sha1']
- );
-
- if ($bindings && $this->canLogBindings()) {
- $bindingsSerialized = $this->serializeBindings($bindings);
-
- $sqlQuery_bindings_id = $this->sqlQueryBindingRepository->findOrCreate(
- ['sha1' => sha1($bindingsSerialized), 'serialized' => $bindingsSerialized],
- ['sha1'],
- $created
- );
-
- if ($created) {
- foreach ($bindings as $parameter => $value) {
- $this->sqlQueryBindingParameterRepository->create(
- [
- 'sql_query_bindings_id' => $sqlQuery_bindings_id,
-
- // unfortunately laravel uses question marks,
- // but hopefully someday this will change
- 'name' => '?',
-
- 'value' => $value,
- ]
- );
- }
- }
- }
-
- $this->sqlQueryLogRepository->create(
- [
- 'log_id' => $this->logRepository->getCurrentLogId(),
- 'sql_query_id' => $sqlQueryId,
- ]
- );
- }
-
- private function canLogBindings()
- {
- return $this->config->get('log_sql_queries_bindings');
- }
-
- /**
- * @return array
- */
- private function clear()
- {
- return $this->queries = [];
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Data/Repositories/SqlQueryBinding.php b/vendor/pragmarx/tracker/src/Data/Repositories/SqlQueryBinding.php
deleted file mode 100644
index 7c7a018b9..000000000
--- a/vendor/pragmarx/tracker/src/Data/Repositories/SqlQueryBinding.php
+++ /dev/null
@@ -1,7 +0,0 @@
-authentication = $authentication;
-
- $this->mobileDetect = $mobileDetect;
-
- $this->userAgentParser = $userAgentParser;
-
- $this->session = $session;
-
- $this->config = $config;
-
- $this->geoIp = $geoIp;
-
- $this->sessionRepository = $sessionRepository;
-
- $this->logRepository = $logRepository;
-
- $this->pathRepository = $pathRepository;
-
- $this->queryRepository = $queryRepository;
-
- $this->queryArgumentRepository = $queryArgumentRepository;
-
- $this->agentRepository = $agentRepository;
-
- $this->deviceRepository = $deviceRepository;
-
- $this->cookieRepository = $cookieRepository;
-
- $this->domainRepository = $domainRepository;
-
- $this->refererRepository = $refererRepository;
-
- $this->routeRepository = $routeRepository;
-
- $this->routePathRepository = $routePathRepository;
-
- $this->routePathParameterRepository = $routePathParameterRepository;
-
- $this->errorRepository = $errorRepository;
-
- $this->geoIpRepository = $geoIpRepository;
-
- $this->sqlQueryRepository = $sqlQueryRepository;
-
- $this->sqlQueryBindingRepository = $sqlQueryBindingRepository;
-
- $this->sqlQueryBindingParameterRepository = $sqlQueryBindingParameterRepository;
-
- $this->sqlQueryLogRepository = $sqlQueryLogRepository;
-
- $this->connectionRepository = $connectionRepository;
-
- $this->eventRepository = $eventRepository;
-
- $this->eventLogRepository = $eventLogRepository;
-
- $this->systemClassRepository = $systemClassRepository;
-
- $this->crawlerDetector = $crawlerDetector;
-
- $this->languageRepository = $languageRepository;
-
- $this->languageDetect = $languageDetect;
- }
-
- public function checkSessionData($newData, $currentData)
- {
- if ($newData && $currentData && $newData !== $currentData) {
- $newData = $this->updateSessionData($newData);
- }
-
- return $newData;
- }
-
- public function createLog($data)
- {
- $this->logRepository->createLog($data);
-
- $this->sqlQueryRepository->fire();
- }
-
- private function createRoutePathParameter($route_path_id, $parameter, $value)
- {
- return $this->routePathParameterRepository->create(
- [
- 'route_path_id' => $route_path_id,
- 'parameter' => $parameter,
- 'value' => $value,
- ]
- );
- }
-
- public function errors($minutes, $results)
- {
- return $this->logRepository->getErrors($minutes, $results);
- }
-
- public function events($minutes, $results)
- {
- return $this->eventRepository->getAll($minutes, $results);
- }
-
- public function findOrCreateAgent($data)
- {
- return $this->agentRepository->findOrCreate($data, ['name_hash']);
- }
-
- public function findOrCreateDevice($data)
- {
- return $this->deviceRepository->findOrCreate($data, ['kind', 'model', 'platform', 'platform_version']);
- }
-
- public function findOrCreateLanguage($data)
- {
- return $this->languageRepository->findOrCreate($data, ['preference', 'language-range']);
- }
-
- public function findOrCreatePath($path)
- {
- return $this->pathRepository->findOrCreate($path, ['path']);
- }
-
- public function findOrCreateQuery($data)
- {
- $id = $this->queryRepository->findOrCreate($data, ['query'], $created);
-
- if ($created) {
- foreach ($data['arguments'] as $argument => $value) {
- if (is_array($value)) {
- $value = multi_implode(',', $value);
- }
-
- $this->queryArgumentRepository->create(
- [
- 'query_id' => $id,
- 'argument' => $argument,
- 'value' => empty($value) ? '' : $value,
- ]
- );
- }
- }
-
- return $id;
- }
-
- public function findOrCreateSession($data)
- {
- return $this->sessionRepository->findOrCreate($data, ['uuid']);
- }
-
- public function getAgentId()
- {
- return $this->findOrCreateAgent($this->getCurrentAgentArray());
- }
-
- public function getAllSessions()
- {
- return $this->sessionRepository->all();
- }
-
- public function getCookieId()
- {
- return $this->cookieRepository->getId();
- }
-
- public function getCurrentAgentArray()
- {
- return [
- 'name' => $name = $this->getCurrentUserAgent() ?: 'Other',
-
- 'browser' => $this->userAgentParser->userAgent->family,
-
- 'browser_version' => $this->userAgentParser->getUserAgentVersion(),
-
- 'name_hash' => hash('sha256', $name),
- ];
- }
-
- public function getCurrentDeviceProperties()
- {
- if ($properties = $this->getDevice()) {
- $properties['platform'] = $this->getOperatingSystemFamily();
-
- $properties['platform_version'] = $this->getOperatingSystemVersion();
- }
-
- return $properties;
- }
-
- public function getCurrentUserAgent()
- {
- return $this->userAgentParser->originalUserAgent;
- }
-
- public function getCurrentUserId()
- {
- return $this->authentication->getCurrentUserId();
- }
-
- /**
- * @return array
- */
- private function getDevice()
- {
- try {
- return $this->mobileDetect->detectDevice();
- } catch (\Exception $e) {
- return;
- }
- }
-
- private function getLanguage()
- {
- try {
- return $this->languageDetect->detectLanguage();
- } catch (\Exception $e) {
- return;
- }
- }
-
- public function getCurrentLanguage()
- {
- if ($languages = $this->getLanguage()) {
- $languages['preference'] = $this->languageDetect->getLanguagePreference();
-
- $languages['language-range'] = $this->languageDetect->getLanguageRange();
- }
-
- return $languages;
- }
-
- public function getDomainId($domain)
- {
- return $this->domainRepository->findOrCreate(
- ['name' => $domain],
- ['name']
- );
- }
-
- public function getGeoIpId($clientIp)
- {
- $id = null;
-
- if ($geoIpData = $this->geoIp->searchAddr($clientIp)) {
- $id = $this->geoIpRepository->findOrCreate(
- $geoIpData,
- ['latitude', 'longitude']
- );
- }
-
- return $id;
- }
-
- public function getLastSessions($minutes, $results)
- {
- return $this->sessionRepository->last($minutes, $results);
- }
-
- /**
- * @return mixed
- */
- private function getOperatingSystemFamily()
- {
- try {
- return $this->userAgentParser->operatingSystem->family;
- } catch (\Exception $e) {
- return;
- }
- }
-
- /**
- * @return mixed
- */
- private function getOperatingSystemVersion()
- {
- try {
- return $this->userAgentParser->getOperatingSystemVersion();
- } catch (\Exception $e) {
- return;
- }
- }
-
- public function getQueryId($query)
- {
- if (!$query) {
- return;
- }
-
- return $this->findOrCreateQuery($query);
- }
-
- public function getRefererId($referer)
- {
- if ($referer) {
- $url = parse_url($referer);
-
- if (!isset($url['host'])) {
- return;
- }
-
- $parts = explode('.', $url['host']);
-
- $domain = array_pop($parts);
-
- if (count($parts) > 0) {
- $domain = array_pop($parts).'.'.$domain;
- }
-
- $domain_id = $this->getDomainId($domain);
-
- return $this->refererRepository->store($referer, $url['host'], $domain_id);
- }
- }
-
- /**
- * @param $request
- *
- * @return mixed
- */
- private function getRequestPath($request)
- {
- if (is_string($request)) {
- return $request;
- }
-
- if (is_array($request)) {
- return $request['path'];
- }
-
- return $request->path();
- }
-
- /**
- * @param $route
- *
- * @return mixed
- */
- private function getRouteAction($route)
- {
- if (is_string($route)) {
- return '';
- }
-
- if (is_array($route)) {
- return $route['action'];
- }
-
- return $route->currentRouteAction();
- }
-
- /**
- * @param string $name
- */
- private function getRouteId($name, $action)
- {
- return $this->routeRepository->findOrCreate(
- ['name' => $name, 'action' => $action],
- ['name', 'action']
- );
- }
-
- /**
- * @param $route
- *
- * @return string
- */
- private function getRouteName($route)
- {
- if (is_string($route)) {
- return $route;
- }
-
- if (is_array($route)) {
- return $route['name'];
- }
-
- if ($name = $route->current()->getName()) {
- return $name;
- }
-
- $action = $route->current()->getAction();
-
- if ($name = isset($action['as']) ? $action['as'] : null) {
- return $name;
- }
-
- return '/'.$route->current()->uri();
- }
-
- /**
- * @param bool $created
- */
- private function getRoutePath($route_id, $path, &$created = null)
- {
- return $this->routePathRepository->findOrCreate(
- ['route_id' => $route_id, 'path' => $path],
- ['route_id', 'path'],
- $created
- );
- }
-
- public function getRoutePathId($route, $request)
- {
- $route_id = $this->getRouteId(
- $this->getRouteName($route),
- $this->getRouteAction($route)
- ?: 'closure'
- );
-
- $created = false;
-
- $route_path_id = $this->getRoutePath(
- $route_id,
- $this->getRequestPath($request),
- $created
- );
-
- if ($created && $route instanceof IlluminateRouter && $route->current()) {
- foreach ($route->current()->parameters() as $parameter => $value) {
- // When the parameter value is a whole model, we have
- // two options left:
- //
- // 1) Return model id, if it's available as 'id'
- // 2) Return null (not ideal, but, what could we do?)
- //
- // Should we store the whole model? Not really useful, right?
-
- if ($value instanceof \Illuminate\Database\Eloquent\Model) {
- $model_id = null;
-
- foreach ($this->config->get('id_columns_names', ['id']) as $column) {
- if (property_exists($value, $column)) {
- $model_id = $value->$column;
-
- break;
- }
- }
-
- $value = $model_id;
- }
-
- if ($route_path_id && $parameter && $value) {
- $this->createRoutePathParameter($route_path_id, $parameter, $value);
- }
- }
- }
-
- return $route_path_id;
- }
-
- public function getSessionId($sessionData, $updateLastActivity)
- {
- return $this->sessionRepository->getCurrentId($sessionData, $updateLastActivity);
- }
-
- public function getSessionLog($uuid, $results = true)
- {
- $session = $this->sessionRepository->findByUuid($uuid);
-
- return $this->logRepository->bySession($session->id, $results);
- }
-
- public function handleException($exception)
- {
- $error_id = $this->errorRepository->findOrCreate(
- [
- 'message' => $this->errorRepository->getMessageFromException($exception),
- 'code' => $this->errorRepository->getCodeFromException($exception),
- ],
- ['message', 'code']
- );
-
- return $this->logRepository->updateError($error_id);
- }
-
- public function isRobot()
- {
- return $this->crawlerDetector->isRobot();
- }
-
- public function logByRouteName($name, $minutes = null)
- {
- return $this->logRepository->allByRouteName($name, $minutes);
- }
-
- public function logEvents()
- {
- $this->eventRepository->logEvents();
- }
-
- public function logSqlQuery($query, $bindings, $time, $name)
- {
- $this->sqlQueryRepository->push([
- 'query' => $query,
- 'bindings' => $bindings,
- 'time' => $time,
- 'name' => $name,
- ]);
- }
-
- public function pageViews($minutes, $results)
- {
- return $this->logRepository->pageViews($minutes, $results);
- }
-
- public function pageViewsByCountry($minutes, $results)
- {
- return $this->logRepository->pageViewsByCountry($minutes, $results);
- }
-
- public function parserIsAvailable()
- {
- return !empty($this->userAgentParser);
- }
-
- public function routeIsTrackable($route)
- {
- return $this->routeRepository->isTrackable($route);
- }
-
- public function pathIsTrackable($path)
- {
- return $this->routeRepository->pathIsTrackable($path);
- }
-
- public function setSessionData($data)
- {
- $this->sessionRepository->setSessionData($data);
- }
-
- public function trackEvent($event)
- {
- $this->eventRepository->logEvent($event);
- }
-
- public function trackRoute($route, $request)
- {
- $this->updateRoute(
- $this->getRoutePathId($route, $request)
- );
- }
-
- public function updateRoute($route_id)
- {
- return $this->logRepository->updateRoute($route_id);
- }
-
- public function updateSessionData($data)
- {
- return $this->sessionRepository->updateSessionData($data);
- }
-
- public function userDevices($minutes, $user_id, $results)
- {
- return $this->sessionRepository->userDevices(
- $minutes,
- $user_id ?: $this->authentication->getCurrentUserId(),
- $results
- );
- }
-
- public function users($minutes, $results)
- {
- return $this->sessionRepository->users($minutes, $results);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Data/RepositoryManagerInterface.php b/vendor/pragmarx/tracker/src/Data/RepositoryManagerInterface.php
deleted file mode 100644
index 63134e87a..000000000
--- a/vendor/pragmarx/tracker/src/Data/RepositoryManagerInterface.php
+++ /dev/null
@@ -1,7 +0,0 @@
-events[] = [
- 'event' => $event,
- 'object' => $object,
- ];
- }
-
- public function popAll()
- {
- $events = $this->events;
-
- $this->events = [];
-
- return $events;
- }
-
- public function turnOff()
- {
- $this->isOn = false;
- }
-
- public function turnOn()
- {
- $this->isOn = true;
- }
-
- public function isOn()
- {
- return $this->isOn;
- }
-
- public function isOff()
- {
- return !$this->isOn;
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Repositories/Message.php b/vendor/pragmarx/tracker/src/Repositories/Message.php
deleted file mode 100644
index 0fbf23481..000000000
--- a/vendor/pragmarx/tracker/src/Repositories/Message.php
+++ /dev/null
@@ -1,47 +0,0 @@
-messageList = collect();
- }
-
- /**
- * Add a message to the messages list.
- *
- * @param $message
- *
- * @return void
- */
- public function addMessage($message)
- {
- collect((array) $message)->each(function ($item) {
- collect($item)->flatten()->each(function ($flattened) {
- $this->messageList->push($flattened);
- });
- });
- }
-
- /**
- * Get the messages.
- *
- * @return \Illuminate\Support\Collection
- */
- public function getMessages()
- {
- return $this->messageList;
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Services/Authentication.php b/vendor/pragmarx/tracker/src/Services/Authentication.php
deleted file mode 100644
index 4fe043bfb..000000000
--- a/vendor/pragmarx/tracker/src/Services/Authentication.php
+++ /dev/null
@@ -1,73 +0,0 @@
-app = $app;
-
- $this->config = $config;
- }
-
- public function check()
- {
- return $this->executeAuthMethod($this->config->get('authenticated_check_method'));
- }
-
- private function executeAuthMethod($method)
- {
- $guards = $this->config->get('authentication_guards');
- // Make sure authentication_guards at least contains a null value to DRY code
- if (empty($guards)) {
- $guards[] = null;
- }
-
- foreach ($this->getAuthentication() as $auth) {
- foreach ($guards as $guard) {
- // Call guard() if not null
- if ($guard && $guard != 'null') {
- $auth = $auth->guard($guard);
- }
- }
- if (is_callable([$auth, $method], true, $callable_name)) {
- if ($data = $auth->$method()) {
- return $data;
- }
- }
- }
-
- return false;
- }
-
- private function getAuthentication()
- {
- foreach ((array) $this->config->get('authentication_ioc_binding') as $binding) {
- $this->authentication[] = $this->app->make($binding);
- }
-
- return $this->authentication;
- }
-
- public function user()
- {
- return $this->executeAuthMethod($this->config->get('authenticated_user_method'));
- }
-
- public function getCurrentUserId()
- {
- if ($this->check()) {
- return $this->user()->{$this->config->get('authenticated_user_id_column')};
- }
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Support/Cache.php b/vendor/pragmarx/tracker/src/Support/Cache.php
deleted file mode 100644
index 3e7d3eefb..000000000
--- a/vendor/pragmarx/tracker/src/Support/Cache.php
+++ /dev/null
@@ -1,118 +0,0 @@
-config = $config;
-
- $this->app = $app;
- }
-
- public function cachePut($cacheKey, $model)
- {
- if ($this->config->get('cache_enabled')) {
- IlluminateCache::put($cacheKey, $model, 10);
- }
- }
-
- private function extractAttributes($attributes)
- {
- if (is_array($attributes) || is_string($attributes)) {
- return $attributes;
- }
-
- if (is_string($attributes) || is_numeric($attributes)) {
- return (array) $attributes;
- }
-
- if ($attributes instanceof Model) {
- return $attributes->getAttributes();
- }
- }
-
- /**
- * @param $attributes
- * @param $keys
- *
- * @return array
- */
- private function extractKeys($attributes, $keys)
- {
- if (!$keys) {
- $keys = array_keys($attributes);
- }
-
- if (!is_array($keys)) {
- $keys = (array) $keys;
-
- return $keys;
- }
-
- return $keys;
- }
-
- /**
- * @param string $key
- *
- * @return array
- */
- public function findCachedWithKey($key)
- {
- if ($this->config->get('cache_enabled')) {
- return IlluminateCache::get($key);
- }
- }
-
- public function makeKeyAndPut($model, $key)
- {
- $key = $this->makeCacheKey($model, $key, get_class($model));
-
- $this->cachePut($key, $model);
- }
-
- /**
- * @param string $identifier
- */
- public function findCached($attributes, $keys, $identifier = null)
- {
- if (!$this->config->get('cache_enabled')) {
- return;
- }
-
- $key = $this->makeCacheKey($attributes, $keys, $identifier);
-
- return [
- $this->findCachedWithKey($key),
- $key,
- ];
- }
-
- public function makeCacheKey($attributes, $keys, $identifier)
- {
- $attributes = $this->extractAttributes($attributes);
-
- $cacheKey = "className=$identifier;";
-
- $keys = $this->extractKeys($attributes, $keys, $identifier);
-
- foreach ($keys as $key) {
- if (isset($attributes[$key])) {
- $cacheKey .= "$key=$attributes[$key];";
- }
- }
-
- return sha1($cacheKey);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Support/CrawlerDetector.php b/vendor/pragmarx/tracker/src/Support/CrawlerDetector.php
deleted file mode 100644
index 5b0f37dd7..000000000
--- a/vendor/pragmarx/tracker/src/Support/CrawlerDetector.php
+++ /dev/null
@@ -1,36 +0,0 @@
-detector = new CrawlerDetect($headers, $agent);
- }
-
- /**
- * Check if current request is from a bot.
- *
- * @return bool
- */
- public function isRobot()
- {
- return $this->detector->isCrawler();
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Support/Exceptions/CompileError.php b/vendor/pragmarx/tracker/src/Support/Exceptions/CompileError.php
deleted file mode 100644
index 63e41b2f0..000000000
--- a/vendor/pragmarx/tracker/src/Support/Exceptions/CompileError.php
+++ /dev/null
@@ -1,9 +0,0 @@
-tracker = $tracker;
-
- $this->illuminateHandler = $illuminateHandler;
-
- $this->initializeHandlers();
- }
-
- private function initializeHandlers()
- {
- $this->originalExceptionHandler = set_exception_handler([$this, 'handleException']);
-
- $this->originalErrorHandler = set_error_handler([$this, 'handleError']);
- }
-
- public function handleException(Exception $exception)
- {
- try {
- $this->tracker->handleException($exception, $exception->getCode());
- } catch (\Exception $e) {
- // Ignore Tracker exceptions
- }
-
- // Call Laravel Exception Handler
- return call_user_func($this->originalExceptionHandler, $exception);
- }
-
- public function handleError($err_severity, $err_msg, $err_file, $err_line, array $err_context)
- {
- try {
- $error = ExceptionFactory::make($err_severity, $err_msg);
-
- $this->tracker->handleException($error, $error->getCode());
- } catch (\Exception $e) {
- // Ignore Tracker exceptions
- }
-
- // Call Laravel Exception Handler
- return call_user_func($this->originalErrorHandler, $err_severity, $err_msg, $err_file, $err_line);
- }
-
- public function report(Exception $e)
- {
- try {
- $this->tracker->handleException($e);
- } catch (Exception $exception) {
- // ignore
- }
-
- $this->illuminateHandler->report($e);
- }
-
- public function shouldReport(Exception $e)
- {
- return $this->illuminateHandler->shouldReport($e);
- }
-
- public function render($request, Exception $e)
- {
- return $this->illuminateHandler->render($request, $e);
- }
-
- public function renderForConsole($output, Exception $e)
- {
- return $this->illuminateHandler->renderForConsole($output, $e);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Support/Exceptions/Notice.php b/vendor/pragmarx/tracker/src/Support/Exceptions/Notice.php
deleted file mode 100644
index 0984b193f..000000000
--- a/vendor/pragmarx/tracker/src/Support/Exceptions/Notice.php
+++ /dev/null
@@ -1,9 +0,0 @@
- $this->getLanguagePreference(),
- 'language-range' => $this->getLanguageRange(),
- ];
- }
-
- /**
- * Get language prefernece.
- *
- * @return string
- */
- public function getLanguagePreference()
- {
- $languages = $this->languages();
-
- return count($languages) ? $languages[0] : 'en';
- }
-
- /**
- * Get languages ranges.
- *
- * @return string
- */
- public function getLanguageRange()
- {
- return implode(',', $this->languages());
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Support/Migration.php b/vendor/pragmarx/tracker/src/Support/Migration.php
deleted file mode 100644
index 787cf5526..000000000
--- a/vendor/pragmarx/tracker/src/Support/Migration.php
+++ /dev/null
@@ -1,17 +0,0 @@
-manager = app()->make('db');
-
- $this->connection = $this->manager->connection(config('tracker.connection'));
-
- parent::checkConnection();
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Support/Minutes.php b/vendor/pragmarx/tracker/src/Support/Minutes.php
deleted file mode 100644
index 73580a996..000000000
--- a/vendor/pragmarx/tracker/src/Support/Minutes.php
+++ /dev/null
@@ -1,119 +0,0 @@
-minutes = $minutes;
-
- if ($minutes instanceof self) {
- $this->start = $minutes->getStart();
-
- $this->end = $minutes->getEnd();
- } else {
- $this->calculateStartEnd();
- }
- }
-
- /**
- * Calculate start and end dates.
- */
- private function calculateStartEnd()
- {
- if ($this->minutes == 0) {
- $this->setToday();
- } else {
- $this->start = Carbon::now()->subMinutes($this->minutes);
-
- $this->end = Carbon::now();
- }
- }
-
- /**
- * @return mixed
- */
- public function getEnd()
- {
- return $this->end;
- }
-
- /**
- * @return mixed
- */
- public function getMinutes()
- {
- return $this->minutes;
- }
-
- /**
- * @return mixed
- */
- public function getStart()
- {
- return $this->start;
- }
-
- /**
- * @param $minutes
- *
- * @return static
- */
- public static function make($minutes)
- {
- return new static($minutes);
- }
-
- /**
- * @param mixed $end
- */
- public function setEnd($end)
- {
- $this->end = $end;
- }
-
- /**
- * @param mixed $start
- */
- public function setStart($start)
- {
- $this->start = $start;
- }
-
- /**
- * Today.
- */
- private function setToday()
- {
- $this->start = Carbon::now()->setTime(0, 0, 0);
-
- $this->end = Carbon::now()->setTime(23, 59, 59);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Support/MobileDetect.php b/vendor/pragmarx/tracker/src/Support/MobileDetect.php
deleted file mode 100644
index 061731663..000000000
--- a/vendor/pragmarx/tracker/src/Support/MobileDetect.php
+++ /dev/null
@@ -1,65 +0,0 @@
- $this->getDeviceKind(),
- 'model' => $this->device(),
- 'is_mobile' => $this->isMobile(),
- 'is_robot' => $this->isRobot(),
- ];
- }
-
- /**
- * Get the kind of device.
- *
- * @internal param $mobile
- *
- * @return string
- */
- public function getDeviceKind()
- {
- $kind = 'unavailable';
-
- if ($this->isTablet()) {
- $kind = 'Tablet';
- } elseif ($this->isPhone()) {
- $kind = 'Phone';
- } elseif ($this->isComputer()) {
- $kind = 'Computer';
- }
-
- return $kind;
- }
-
- /**
- * Is this a phone?
- *
- * @return bool
- */
- public function isPhone($userAgent = null, $httpHeaders = null)
- {
- return !$this->isTablet() && !$this->isComputer();
- }
-
- /**
- * Is this a computer?
- *
- * @return bool
- */
- public function isComputer()
- {
- return !$this->isMobile();
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Support/RefererParser.php b/vendor/pragmarx/tracker/src/Support/RefererParser.php
deleted file mode 100644
index e31ffe1e5..000000000
--- a/vendor/pragmarx/tracker/src/Support/RefererParser.php
+++ /dev/null
@@ -1,104 +0,0 @@
-parser = $parser;
- }
-
- /**
- * Parse a referer.
- *
- * @return RefererParser
- */
- public function parse($refererUrl, $pageUrl)
- {
- $this->setReferer($this->parser->parse($refererUrl, $pageUrl));
-
- return $this;
- }
-
- /**
- * Get the search medium.
- *
- * @return string|null
- */
- public function getMedium()
- {
- if ($this->isKnown()) {
- return $this->referer->getMedium();
- }
- }
-
- /**
- * Get the search source.
- *
- * @return string|null
- */
- public function getSource()
- {
- if ($this->isKnown()) {
- return $this->referer->getSource();
- }
- }
-
- /**
- * Get the search term.
- *
- * @return string|null
- */
- public function getSearchTerm()
- {
- if ($this->isKnown()) {
- return $this->referer->getSearchTerm();
- }
- }
-
- /**
- * Check if the referer is knwon.
- *
- * @return bool
- */
- public function isKnown()
- {
- return $this->referer->isKnown();
- }
-
- /**
- * Set the referer.
- *
- * @param \Snowplow\RefererParser\Referer $referer
- *
- * @return RefererParser
- */
- public function setReferer($referer)
- {
- $this->referer = $referer;
-
- return $this;
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Support/UserAgentParser.php b/vendor/pragmarx/tracker/src/Support/UserAgentParser.php
deleted file mode 100644
index addd4d7e7..000000000
--- a/vendor/pragmarx/tracker/src/Support/UserAgentParser.php
+++ /dev/null
@@ -1,51 +0,0 @@
-parser = Parser::create()->parse($userAgent);
-
- $this->userAgent = $this->parser->ua;
-
- $this->operatingSystem = $this->parser->os;
-
- $this->device = $this->parser->device;
-
- $this->basePath = $basePath;
-
- $this->originalUserAgent = $this->parser->originalUserAgent;
- }
-
- public function getOperatingSystemVersion()
- {
- return $this->operatingSystem->major.
- ($this->operatingSystem->minor !== null ? '.'.$this->operatingSystem->minor : '').
- ($this->operatingSystem->patch !== null ? '.'.$this->operatingSystem->patch : '');
- }
-
- public function getUserAgentVersion()
- {
- return $this->userAgent->major.
- ($this->userAgent->minor !== null ? '.'.$this->userAgent->minor : '').
- ($this->userAgent->patch !== null ? '.'.$this->userAgent->patch : '');
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Tracker.php b/vendor/pragmarx/tracker/src/Tracker.php
deleted file mode 100644
index 4b115a7f7..000000000
--- a/vendor/pragmarx/tracker/src/Tracker.php
+++ /dev/null
@@ -1,564 +0,0 @@
-config = $config;
-
- $this->dataRepositoryManager = $dataRepositoryManager;
-
- $this->request = $request;
-
- $this->route = $route;
-
- $this->logger = $logger;
-
- $this->laravel = $laravel;
-
- $this->messageRepository = $messageRepository;
- }
-
- public function allSessions()
- {
- return $this->dataRepositoryManager->getAllSessions();
- }
-
- public function boot()
- {
- if ($this->booted) {
- return false;
- }
-
- $this->booted = true;
-
- if ($this->isTrackable()) {
- $this->track();
- }
-
- return true;
- }
-
- public function checkCurrentUser()
- {
- if (!$this->sessionData['user_id'] && $user_id = $this->getUserId()) {
- return true;
- }
-
- return false;
- }
-
- public function currentSession()
- {
- return $this->dataRepositoryManager->sessionRepository->getCurrent();
- }
-
- protected function deleteCurrentLog()
- {
- $this->dataRepositoryManager->logRepository->delete();
- }
-
- public function errors($minutes, $results = true)
- {
- return $this->dataRepositoryManager->errors(Minutes::make($minutes), $results);
- }
-
- public function events($minutes, $results = true)
- {
- return $this->dataRepositoryManager->events(Minutes::make($minutes), $results);
- }
-
- public function getAgentId()
- {
- return $this->config->get('log_user_agents')
- ? $this->dataRepositoryManager->getAgentId()
- : null;
- }
-
- public function getConfig($key)
- {
- return $this->config->get($key);
- }
-
- public function getCookieId()
- {
- return $this->config->get('store_cookie_tracker')
- ? $this->dataRepositoryManager->getCookieId()
- : null;
- }
-
- public function getDeviceId()
- {
- return $this->config->get('log_devices')
- ? $this->dataRepositoryManager->findOrCreateDevice(
- $this->dataRepositoryManager->getCurrentDeviceProperties()
- )
- : null;
- }
-
- public function getLanguageId()
- {
- return $this->config->get('log_languages')
- ? $this->dataRepositoryManager->findOrCreateLanguage($this->dataRepositoryManager->getCurrentLanguage())
- : null;
- }
-
- public function getDomainId($domain)
- {
- return $this->dataRepositoryManager->getDomainId($domain);
- }
-
- public function getGeoIpId()
- {
- return $this->config->get('log_geoip')
- ? $this->dataRepositoryManager->getGeoIpId($this->request->getClientIp())
- : null;
- }
-
- /**
- * @return array
- */
- public function getLogData()
- {
- return [
- 'session_id' => $this->getSessionId(true),
- 'method' => $this->request->method(),
- 'path_id' => $this->getPathId(),
- 'query_id' => $this->getQueryId(),
- 'referer_id' => $this->getRefererId(),
- 'is_ajax' => $this->request->ajax(),
- 'is_secure' => $this->request->isSecure(),
- 'is_json' => $this->request->isJson(),
- 'wants_json' => $this->request->wantsJson(),
- ];
- }
-
- public function getLogger()
- {
- return $this->logger;
- }
-
- public function getPathId()
- {
- return $this->config->get('log_paths')
- ? $this->dataRepositoryManager->findOrCreatePath(
- [
- 'path' => $this->request->path(),
- ]
- )
- : null;
- }
-
- public function getQueryId()
- {
- if ($this->config->get('log_queries')) {
- if (count($arguments = $this->request->query())) {
- return $this->dataRepositoryManager->getQueryId(
- [
- 'query' => array_implode('=', '|', $arguments),
- 'arguments' => $arguments,
- ]
- );
- }
- }
- }
-
- public function getRefererId()
- {
- return $this->config->get('log_referers')
- ? $this->dataRepositoryManager->getRefererId(
- $this->request->headers->get('referer')
- )
- : null;
- }
-
- public function getRoutePathId()
- {
- return $this->dataRepositoryManager->getRoutePathId($this->route, $this->request);
- }
-
- protected function logUntrackable($item)
- {
- if ($this->config->get('log_untrackable_sessions') && !isset($this->loggedItems[$item])) {
- $this->getLogger()->warning('TRACKER (unable to track item): '.$item);
-
- $this->loggedItems[$item] = $item;
- }
- }
-
- /**
- * @return array
- */
- protected function makeSessionData()
- {
- $sessionData = [
- 'user_id' => $this->getUserId(),
- 'device_id' => $this->getDeviceId(),
- 'client_ip' => $this->request->getClientIp(),
- 'geoip_id' => $this->getGeoIpId(),
- 'agent_id' => $this->getAgentId(),
- 'referer_id' => $this->getRefererId(),
- 'cookie_id' => $this->getCookieId(),
- 'language_id' => $this->getLanguageId(),
- 'is_robot' => $this->isRobot(),
-
- // The key user_agent is not present in the sessions table, but
- // it's internally used to check if the user agent changed
- // during a session.
- 'user_agent' => $this->dataRepositoryManager->getCurrentUserAgent(),
- ];
-
- return $this->sessionData = $this->dataRepositoryManager->checkSessionData($sessionData, $this->sessionData);
- }
-
- public function getSessionId($updateLastActivity = false)
- {
- return $this->dataRepositoryManager->getSessionId(
- $this->makeSessionData(),
- $updateLastActivity
- );
- }
-
- public function getUserId()
- {
- return $this->config->get('log_users')
- ? $this->dataRepositoryManager->getCurrentUserId()
- : null;
- }
-
- /**
- * @param \Exception $exception
- */
- public function handleException($exception)
- {
- if ($this->config->get('log_enabled')) {
- $this->dataRepositoryManager->handleException($exception);
- }
- }
-
- public function isEnabled()
- {
- return $this->enabled;
- }
-
- public function isRobot()
- {
- return $this->dataRepositoryManager->isRobot();
- }
-
- protected function isSqlQueriesLoggableConnection($name)
- {
- return !in_array(
- $name,
- $this->config->get('do_not_log_sql_queries_connections')
- );
- }
-
- public function isTrackable()
- {
- return $this->config->get('enabled') &&
- $this->logIsEnabled() &&
- $this->allowConsole() &&
- $this->parserIsAvailable() &&
- $this->isTrackableIp() &&
- $this->isTrackableEnvironment() &&
- $this->routeIsTrackable() &&
- $this->pathIsTrackable() &&
- $this->notRobotOrTrackable();
- }
-
- public function isTrackableEnvironment()
- {
- $trackable = !in_array(
- $this->laravel->environment(),
- $this->config->get('do_not_track_environments')
- );
-
- if (!$trackable) {
- $this->logUntrackable('environment '.$this->laravel->environment().' is not trackable.');
- }
-
- return $trackable;
- }
-
- public function isTrackableIp()
- {
- $trackable = !IpAddress::ipv4InRange(
- $ipAddress = $this->request->getClientIp(),
- $this->config->get('do_not_track_ips')
- );
-
- if (!$trackable) {
- $this->logUntrackable($ipAddress.' is not trackable.');
- }
-
- return $trackable;
- }
-
- public function logByRouteName($name, $minutes = null)
- {
- if ($minutes) {
- $minutes = Minutes::make($minutes);
- }
-
- return $this->dataRepositoryManager->logByRouteName($name, $minutes);
- }
-
- public function logEvents()
- {
- if (
- $this->isTrackable() &&
- $this->config->get('log_enabled') &&
- $this->config->get('log_events')
- ) {
- $this->dataRepositoryManager->logEvents();
- }
- }
-
- public function logIsEnabled()
- {
- $enabled =
- $this->config->get('log_enabled') ||
- $this->config->get('log_sql_queries') ||
- $this->config->get('log_sql_queries_bindings') ||
- $this->config->get('log_events') ||
- $this->config->get('log_geoip') ||
- $this->config->get('log_user_agents') ||
- $this->config->get('log_users') ||
- $this->config->get('log_devices') ||
- $this->config->get('log_languages') ||
- $this->config->get('log_referers') ||
- $this->config->get('log_paths') ||
- $this->config->get('log_queries') ||
- $this->config->get('log_routes') ||
- $this->config->get('log_exceptions');
-
- if (!$enabled) {
- $this->logUntrackable('there are no log items enabled.');
- }
-
- return $enabled;
- }
-
- public function logSqlQuery($query, $bindings, $time, $name)
- {
- if (
- $this->isTrackable() &&
- $this->config->get('log_enabled') &&
- $this->config->get('log_sql_queries') &&
- $this->isSqlQueriesLoggableConnection($name)
- ) {
- $this->dataRepositoryManager->logSqlQuery($query, $bindings, $time, $name);
- }
- }
-
- protected function notRobotOrTrackable()
- {
- $trackable =
- !$this->isRobot() ||
- !$this->config->get('do_not_track_robots');
-
- if (!$trackable) {
- $this->logUntrackable('tracking of robots is disabled.');
- }
-
- return $trackable;
- }
-
- public function pageViews($minutes, $results = true)
- {
- return $this->dataRepositoryManager->pageViews(Minutes::make($minutes), $results);
- }
-
- public function pageViewsByCountry($minutes, $results = true)
- {
- return $this->dataRepositoryManager->pageViewsByCountry(Minutes::make($minutes), $results);
- }
-
- public function allowConsole()
- {
- return
- (!$this->laravel->runningInConsole()) ||
- $this->config->get('console_log_enabled', false);
- }
-
- public function parserIsAvailable()
- {
- if (!$this->dataRepositoryManager->parserIsAvailable()) {
- $this->logger->error(trans('tracker::tracker.regex_file_not_available'));
-
- return false;
- }
-
- return true;
- }
-
- public function routeIsTrackable()
- {
- if (!$this->route) {
- return false;
- }
-
- if (!$trackable = $this->dataRepositoryManager->routeIsTrackable($this->route)) {
- $this->logUntrackable('route '.$this->route->getCurrentRoute()->getName().' is not trackable.');
- }
-
- return $trackable;
- }
-
- public function pathIsTrackable()
- {
- if (!$trackable = $this->dataRepositoryManager->pathIsTrackable($this->request->path())) {
- $this->logUntrackable('path '.$this->request->path().' is not trackable.');
- }
-
- return $trackable;
- }
-
- public function routerMatched($log)
- {
- if ($this->dataRepositoryManager->routeIsTrackable($this->route)) {
- if ($log) {
- $this->dataRepositoryManager->updateRoute(
- $this->getRoutePathId()
- );
- }
- }
- // Router was matched but this route is not trackable
- // Let's just delete the stored data, because There's not a
- // realy clean way of doing this because if a route is not
- // matched, and this happens ages after the app is booted,
- // we till need to store data from the request.
- else {
- $this->turnOff();
-
- $this->deleteCurrentLog();
- }
- }
-
- public function sessionLog($uuid, $results = true)
- {
- return $this->dataRepositoryManager->getSessionLog($uuid, $results);
- }
-
- public function sessions($minutes = 1440, $results = true)
- {
- return $this->dataRepositoryManager->getLastSessions(Minutes::make($minutes), $results);
- }
-
- public function onlineUsers($minutes = 3, $results = true)
- {
- return $this->sessions(3);
- }
-
- public function track()
- {
- $log = $this->getLogData();
-
- if ($this->config->get('log_enabled')) {
- $this->dataRepositoryManager->createLog($log);
- }
- }
-
- public function trackEvent($event)
- {
- $this->dataRepositoryManager->trackEvent($event);
- }
-
- public function trackVisit($route, $request)
- {
- $this->dataRepositoryManager->trackRoute($route, $request);
- }
-
- public function turnOff()
- {
- $this->enabled = false;
- }
-
- public function userDevices($minutes, $user_id = null, $results = true)
- {
- return $this->dataRepositoryManager->userDevices(
- Minutes::make($minutes),
- $user_id,
- $results
- );
- }
-
- public function users($minutes, $results = true)
- {
- return $this->dataRepositoryManager->users(Minutes::make($minutes), $results);
- }
-
- /**
- * Get the messages.
- *
- * @return \Illuminate\Support\Collection
- */
- public function getMessages()
- {
- return $this->messageRepository->getMessages();
- }
-
- /**
- * Update the GeoIp2 database.
- *
- * @return bool
- */
- public function updateGeoIp()
- {
- $updater = new GeoIpUpdater();
-
- $success = $updater->updateGeoIpFiles($this->config->get('geoip_database_path'));
-
- $this->messageRepository->addMessage($updater->getMessages());
-
- return $success;
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Vendor/Laravel/Artisan/Base.php b/vendor/pragmarx/tracker/src/Vendor/Laravel/Artisan/Base.php
deleted file mode 100644
index 928128f21..000000000
--- a/vendor/pragmarx/tracker/src/Vendor/Laravel/Artisan/Base.php
+++ /dev/null
@@ -1,109 +0,0 @@
-$type($message);
- }
- }
-
- /**
- * Get the console command arguments.
- *
- * @return array
- */
- protected function getArguments()
- {
- return [
- ['query', InputArgument::IS_ARRAY, 'The SQL query to be executed'],
- ];
- }
-
- /**
- * Get the console command options.
- *
- * @return array
- */
- protected function getOptions()
- {
- $baseOptions = [
- ['database', null, InputOption::VALUE_OPTIONAL, 'The database connection to use.'],
- ];
-
- return array_merge($baseOptions, isset($this->options) ? $this->options : []);
- }
-
- /**
- * Display results.
- *
- * @param $result
- * @param string $method
- */
- public function display($result, $method = 'info')
- {
- if ($result) {
- if (is_array($result)) {
- $this->displayTable($result);
- } elseif (is_bool($result)) {
- $this->{$method}($result ? 'Statement executed sucessfully.' : 'And error ocurred while executing the statement.');
- } else {
- $this->{$method}($result);
- }
- }
- }
-
- /**
- * Display results in table format.
- *
- * @param $table
- */
- public function displayTable($table)
- {
- $headers = $this->makeHeaders($table[0]);
-
- $rows = [];
-
- foreach ($table as $row) {
- $rows[] = (array) $row;
- }
-
- $this->table = $this->getHelperSet()->get('table');
-
- $this->table->setHeaders($headers)->setRows($rows);
-
- $this->table->render($this->getOutput());
- }
-
- /**
- * Extract headers from result.
- *
- * @param $items
- *
- * @return array
- */
- private function makeHeaders($items)
- {
- return array_keys((array) $items);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Vendor/Laravel/Artisan/Tables.php b/vendor/pragmarx/tracker/src/Vendor/Laravel/Artisan/Tables.php
deleted file mode 100644
index 0ec6f4d97..000000000
--- a/vendor/pragmarx/tracker/src/Vendor/Laravel/Artisan/Tables.php
+++ /dev/null
@@ -1,84 +0,0 @@
-fire();
- }
-
- /**
- * Execute the command.
- *
- * @return void
- */
- public function fire()
- {
- $files = $this->laravel->make('files');
-
- foreach ($files->files($this->getPackageMigrationsPath()) as $file) {
- if (!file_exists($destination = $this->makeMigrationPath($file))) {
- $files->copy($file, $destination);
-
- $this->info("Migration created: $destination");
- }
- }
- }
-
- /**
- * Get the package migrations folder.
- *
- * @return string
- */
- protected function getPackageMigrationsPath()
- {
- $ds = DIRECTORY_SEPARATOR;
-
- return __DIR__."{$ds}..{$ds}..{$ds}..{$ds}migrations";
- }
-
- /**
- * Get the system migrations folder.
- *
- * @return string
- */
- protected function getBaseMigrationsPath()
- {
- $path = 'database'.DIRECTORY_SEPARATOR.'migrations';
-
- return base_path($path);
- }
-
- /**
- * Make a full path migration name.
- *
- * @param $file
- *
- * @return string
- */
- private function makeMigrationPath($file)
- {
- return $this->getBaseMigrationsPath().DIRECTORY_SEPARATOR.basename($file);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Vendor/Laravel/Artisan/UpdateGeoIp.php b/vendor/pragmarx/tracker/src/Vendor/Laravel/Artisan/UpdateGeoIp.php
deleted file mode 100644
index 37e3915cf..000000000
--- a/vendor/pragmarx/tracker/src/Vendor/Laravel/Artisan/UpdateGeoIp.php
+++ /dev/null
@@ -1,46 +0,0 @@
-updateGeoIp()
- ? 'info'
- : 'error';
-
- $this->displayMessages($type, $tracker->getMessages());
- }
-
- /**
- * Handle the command.
- *
- * @return void
- */
- public function handle()
- {
- $this->fire();
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Vendor/Laravel/Controllers/Stats.php b/vendor/pragmarx/tracker/src/Vendor/Laravel/Controllers/Stats.php
deleted file mode 100644
index da3bc65db..000000000
--- a/vendor/pragmarx/tracker/src/Vendor/Laravel/Controllers/Stats.php
+++ /dev/null
@@ -1,370 +0,0 @@
-authentication = app()->make('tracker.authentication');
- }
-
- public function index(Session $session)
- {
- if (!$this->isAuthenticated()) {
- return View::make('pragmarx/tracker::message')->with('message', trans('tracker::tracker.auth_required'));
- }
-
- if (!$this->hasAdminProperty()) {
- return View::make('pragmarx/tracker::message')->with('message', trans('tracker::tracker.miss_admin_prop'));
- }
-
- if (!$this->isAdmin()) {
- return View::make('pragmarx/tracker::message')->with('message', trans('tracker::tracker.not_admin'));
- }
-
- return $this->showPage($session, $session->getValue('page'));
- }
-
- /**
- * @param Session $session
- */
- public function showPage($session, $page)
- {
- $me = $this;
-
- if (method_exists($me, $page)) {
- return $this->$page($session);
- }
- }
-
- public function visits(Session $session)
- {
- $datatables_data =
- [
- 'datatables_ajax_route' => route('tracker.stats.api.visits'),
- 'datatables_columns' => '
- { "data" : "id", "title" : "'.trans('tracker::tracker.id').'", "orderable": true, "searchable": true },
- { "data" : "client_ip", "title" : "'.trans('tracker::tracker.ip_address').'", "orderable": true, "searchable": true },
- { "data" : "country", "title" : "'.trans('tracker::tracker.country_city').'", "orderable": true, "searchable": true },
- { "data" : "user", "title" : "'.trans('tracker::tracker.user').'", "orderable": true, "searchable": true },
- { "data" : "device", "title" : "'.trans('tracker::tracker.device').'", "orderable": true, "searchable": true },
- { "data" : "browser", "title" : "'.trans('tracker::tracker.browser').'", "orderable": true, "searchable": true },
- { "data" : "language", "title" : "'.trans('tracker::tracker.language').'", "orderable": true, "searchable": true },
- { "data" : "referer", "title" : "'.trans('tracker::tracker.referer').'", "orderable": true, "searchable": true },
- { "data" : "pageViews", "title" : "'.trans('tracker::tracker.page_views').'", "orderable": true, "searchable": true },
- { "data" : "lastActivity","title" : "'.trans('tracker::tracker.last_activity').'", "orderable": true, "searchable": true },
- ',
- ];
-
- return View::make('pragmarx/tracker::index')
- ->with('sessions', Tracker::sessions($session->getMinutes()))
- ->with('title', ''.trans('tracker::tracker.visits').'')
- ->with('username_column', Tracker::getConfig('authenticated_user_username_column'))
- ->with('datatables_data', $datatables_data);
- }
-
- public function log($uuid)
- {
- return View::make('pragmarx/tracker::log')
- ->with('uuid', $uuid)
- ->with('title', 'log');
- }
-
- public function summary()
- {
- return View::make('pragmarx/tracker::summary')
- ->with('title', ''.trans('tracker::tracker.page_views_summary').'');
- }
-
- public function apiPageviews(Session $session)
- {
- return Tracker::pageViews($session->getMinutes())->toJson();
- }
-
- public function apiPageviewsByCountry(Session $session)
- {
- return Tracker::pageViewsByCountry($session->getMinutes())->toJson();
- }
-
- public function apiLog($uuid)
- {
- $query = Tracker::sessionLog($uuid, false);
-
- $query->select([
- 'id',
- 'session_id',
- 'method',
- 'path_id',
- 'query_id',
- 'route_path_id',
- 'is_ajax',
- 'is_secure',
- 'is_json',
- 'wants_json',
- 'error_id',
- 'created_at',
- ]);
-
- return Datatables::of($query)
- ->edit_column('route_name', function ($row) {
- $path = $row->routePath;
-
- return $row->routePath
- ? $row->routePath->route->name.'
'.$row->routePath->route->action
- : ($row->path ? $row->path->path : '');
- })
-
- ->edit_column('route', function ($row) {
- $route = null;
-
- if ($row->routePath) {
- foreach ($row->routePath->parameters as $parameter) {
- $route .= ($route ? '
' : '').$parameter->parameter.'='.$parameter->value;
- }
- }
-
- return $route;
- })
-
- ->edit_column('query', function ($row) {
- $query = null;
-
- if ($row->logQuery) {
- foreach ($row->logQuery->arguments as $argument) {
- $query .= ($query ? '
' : '').$argument->argument.'='.$argument->value;
- }
- }
-
- return $query;
- })
-
- ->edit_column('is_ajax', function ($row) {
- return $row->is_ajax ? 'yes' : 'no';
- })
-
- ->edit_column('is_secure', function ($row) {
- return $row->is_secure ? 'yes' : 'no';
- })
-
- ->edit_column('is_json', function ($row) {
- return $row->is_json ? 'yes' : 'no';
- })
-
- ->edit_column('wants_json', function ($row) {
- return $row->wants_json ? 'yes' : 'no';
- })
-
- ->edit_column('error', function ($row) {
- return $row->error ? 'yes' : 'no';
- })
-
- ->make(true);
- }
-
- public function users(Session $session)
- {
- return View::make('pragmarx/tracker::users')
- ->with('users', Tracker::users($session->getMinutes()))
- ->with('title', ''.trans('tracker::tracker.users').'')
- ->with('username_column', Tracker::getConfig('authenticated_user_username_column'));
- }
-
- private function events(Session $session)
- {
- return View::make('pragmarx/tracker::events')
- ->with('events', Tracker::events($session->getMinutes()))
- ->with('title', ''.trans('tracker::tracker.events').'');
- }
-
- public function errors(Session $session)
- {
- return View::make('pragmarx/tracker::errors')
- ->with('error_log', Tracker::errors($session->getMinutes()))
- ->with('title', ''.trans('tracker::tracker.errors').'');
- }
-
- public function apiErrors(Session $session)
- {
- $query = Tracker::errors($session->getMinutes(), false);
-
- $query->select([
- 'id',
- 'error_id',
- 'session_id',
- 'path_id',
- 'updated_at',
- ]);
-
- return Datatables::of($query)
- ->edit_column('updated_at', function ($row) {
- return "{$row->updated_at->diffForHumans()}";
- })
- ->make(true);
- }
-
- public function apiEvents(Session $session)
- {
- $query = Tracker::events($session->getMinutes(), false);
-
- return Datatables::of($query)->make(true);
- }
-
- public function apiUsers(Session $session)
- {
- $username_column = Tracker::getConfig('authenticated_user_username_column');
-
- return Datatables::of(Tracker::users($session->getMinutes(), false))
- ->edit_column('user_id', function ($row) use ($username_column) {
- return "{$row->user->$username_column}";
- })
- ->edit_column('updated_at', function ($row) {
- return "{$row->updated_at->diffForHumans()}";
- })
- ->make(true);
- }
-
- public function apiVisits(Session $session)
- {
- $username_column = Tracker::getConfig('authenticated_user_username_column');
-
- $query = Tracker::sessions($session->getMinutes(), false);
-
- $query->select([
- 'id',
- 'uuid',
- 'user_id',
- 'device_id',
- 'agent_id',
- 'client_ip',
- 'referer_id',
- 'cookie_id',
- 'geoip_id',
- 'language_id',
- 'is_robot',
- 'updated_at',
- ]);
-
- return Datatables::of($query)
- ->edit_column('id', function ($row) use ($username_column) {
- $uri = route('tracker.stats.log', $row->uuid);
-
- return ''.$row->id.'';
- })
-
- ->add_column('country', function ($row) {
- $cityName = $row->geoip && $row->geoip->city ? ' - '.$row->geoip->city : '';
-
- $countryName = ($row->geoip ? $row->geoip->country_name : '').$cityName;
-
- $countryCode = strtolower($row->geoip ? $row->geoip->country_code : '');
-
- $flag = $countryCode
- ? ""
- : '';
-
- return "$flag $countryName";
- })
-
- ->add_column('user', function ($row) use ($username_column) {
- return $row->user ? $row->user->$username_column : 'guest';
- })
-
- ->add_column('device', function ($row) use ($username_column) {
- $model = ($row->device && $row->device->model && $row->device->model !== 'unavailable' ? '['.$row->device->model.']' : '');
-
- $platform = ($row->device && $row->device->platform ? ' ['.trim($row->device->platform.' '.$row->device->platform_version).']' : '');
-
- $mobile = ($row->device && $row->device->is_mobile ? ' [mobile device]' : '');
-
- return $model || $platform || $mobile
- ? $row->device->kind.' '.$model.' '.$platform.' '.$mobile
- : '';
- })
-
- ->add_column('browser', function ($row) use ($username_column) {
- return $row->agent && $row->agent
- ? $row->agent->browser.' ('.$row->agent->browser_version.')'
- : '';
- })
-
- ->add_column('language', function ($row) use ($username_column) {
- return $row->language && $row->language
- ? $row->language->preference
- : '';
- })
-
- ->add_column('referer', function ($row) use ($username_column) {
- return $row->referer ? $row->referer->domain->name : '';
- })
-
- ->add_column('pageViews', function ($row) use ($username_column) {
- return $row->page_views;
- })
-
- ->add_column('lastActivity', function ($row) use ($username_column) {
- return $row->updated_at->diffForHumans();
- })
-
- ->make(true);
- }
-
- private function isAuthenticated()
- {
- return $this->authentication->check();
- }
-
- private function hasAdminProperty()
- {
- $user = $this->authentication->user();
-
- foreach ($this->adminProperties as $property) {
- $propertyCamel = Str::camel($property);
-
- if (
- isset($user->$property) ||
- isset($user->$propertyCamel) ||
- method_exists($user, $property) ||
- method_exists($user, $propertyCamel)
- ) {
- return true;
- }
- }
-
- return false;
- }
-
- private function isAdmin()
- {
- $user = $this->authentication->user();
-
- foreach ($this->adminProperties as $property) {
- $propertyCamel = Str::camel($property);
-
- if (
- (isset($user->$property) && $user->$property) ||
- (isset($user->$propertyCamel) && $user->$propertyCamel) ||
- (method_exists($user, $property) && $user->$property()) ||
- (method_exists($user, $propertyCamel) && $user->$propertyCamel())
- ) {
- return true;
- }
- }
-
- return false;
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Vendor/Laravel/Facade.php b/vendor/pragmarx/tracker/src/Vendor/Laravel/Facade.php
deleted file mode 100644
index 83268d05e..000000000
--- a/vendor/pragmarx/tracker/src/Vendor/Laravel/Facade.php
+++ /dev/null
@@ -1,18 +0,0 @@
-boot();
- }
-
- return $next($request);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/Agent.php b/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/Agent.php
deleted file mode 100644
index 12d9d7f8c..000000000
--- a/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/Agent.php
+++ /dev/null
@@ -1,15 +0,0 @@
-setConnection($this->getConfig()->get('connection'));
- }
-
- public function getConfig()
- {
- if ($this->config) {
- return $this->config;
- } elseif (isset($GLOBALS['app']) && $GLOBALS['app'] instanceof Application) {
- return $GLOBALS['app']['tracker.config'];
- }
-
- return app()->make('tracker.config');
- }
-
- public function save(array $options = [])
- {
- parent::save($options);
-
- app('tracker.cache')->makeKeyAndPut($this, $this->getKeyName());
- }
-
- public function setConfig($config)
- {
- $this->config = $config;
- }
-
- public function scopePeriod($query, $minutes, $alias = '')
- {
- $alias = $alias ? "$alias." : '';
-
- return $query
- ->where($alias.'updated_at', '>=', $minutes->getStart() ? $minutes->getStart() : 1)
- ->where($alias.'updated_at', '<=', $minutes->getEnd() ? $minutes->getEnd() : 1);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/Connection.php b/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/Connection.php
deleted file mode 100644
index 14a5bb6ec..000000000
--- a/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/Connection.php
+++ /dev/null
@@ -1,12 +0,0 @@
-select(
- 'tracker_events.id',
- 'tracker_events.name',
- $this->getConnection()->raw('count('.$this->getEventLogTableName().'.id) as total')
- )
- ->from('tracker_events')
- ->period($minutes, 'tracker_events_log')
- ->join('tracker_events_log', 'tracker_events_log.event_id', '=', 'tracker_events.id')
- ->groupBy('tracker_events.id', 'tracker_events.name')
- ->orderBy('total', 'desc');
-
- if ($result) {
- return $query->get();
- }
-
- return $query;
- }
-
- private function getEventLogTableName()
- {
- return $this->getTablePrefix().'tracker_events_log';
- }
-
- /**
- * @return string
- */
- private function getTablePrefix()
- {
- return $this->getConnection()->getTablePrefix();
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/EventLog.php b/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/EventLog.php
deleted file mode 100644
index 4b93ad14a..000000000
--- a/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/EventLog.php
+++ /dev/null
@@ -1,14 +0,0 @@
-belongsTo($this->getConfig()->get('session_model'));
- }
-
- public function path()
- {
- return $this->belongsTo($this->getConfig()->get('path_model'));
- }
-
- public function error()
- {
- return $this->belongsTo($this->getConfig()->get('error_model'));
- }
-
- public function logQuery()
- {
- return $this->belongsTo($this->getConfig()->get('query_model'), 'query_id');
- }
-
- public function routePath()
- {
- return $this->belongsTo($this->getConfig()->get('route_path_model'), 'route_path_id');
- }
-
- public function pageViews($minutes, $results)
- {
- $query = $this->select(
- $this->getConnection()->raw('DATE(created_at) as date, count(*) as total')
- )->groupBy(
- $this->getConnection()->raw('DATE(created_at)')
- )
- ->period($minutes)
- ->orderBy('date');
-
- if ($results) {
- return $query->get();
- }
-
- return $query;
- }
-
- public function pageViewsByCountry($minutes, $results)
- {
- $query =
- $this
- ->select(
- 'tracker_geoip.country_name as label', $this->getConnection()->raw('count(tracker_log.id) as value')
- )
- ->join('tracker_sessions', 'tracker_log.session_id', '=', 'tracker_sessions.id')
- ->join('tracker_geoip', 'tracker_sessions.geoip_id', '=', 'tracker_geoip.id')
- ->groupBy('tracker_geoip.country_name')
- ->period($minutes, 'tracker_log')
- ->whereNotNull('tracker_sessions.geoip_id')
- ->orderBy('value', 'desc');
-
- if ($results) {
- return $query->get();
- }
-
- return $query;
- }
-
- public function errors($minutes, $results)
- {
- $query = $this
- ->with('error')
- ->with('session')
- ->with('path')
- ->period($minutes, 'tracker_log')
- ->whereNotNull('error_id')
- ->orderBy('created_at', 'desc');
-
- if ($results) {
- return $query->get();
- }
-
- return $query;
- }
-
- public function allByRouteName($name, $minutes = null)
- {
- $result = $this
- ->join('tracker_route_paths', 'tracker_route_paths.id', '=', 'tracker_log.route_path_id')
-
- ->leftJoin(
- 'tracker_route_path_parameters',
- 'tracker_route_path_parameters.route_path_id',
- '=',
- 'tracker_route_paths.id'
- )
-
- ->join('tracker_routes', 'tracker_routes.id', '=', 'tracker_route_paths.route_id')
-
- ->where('tracker_routes.name', $name);
-
- if ($minutes) {
- $result->period($minutes, 'tracker_log');
- }
-
- return $result;
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/Path.php b/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/Path.php
deleted file mode 100644
index 2216ac0a1..000000000
--- a/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/Path.php
+++ /dev/null
@@ -1,12 +0,0 @@
-hasMany($this->getConfig()->get('query_argument_model'));
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/QueryArgument.php b/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/QueryArgument.php
deleted file mode 100644
index 5c7dcb8f8..000000000
--- a/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/QueryArgument.php
+++ /dev/null
@@ -1,14 +0,0 @@
-belongsTo($this->getConfig()->get('domain_model'));
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/RefererSearchTerm.php b/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/RefererSearchTerm.php
deleted file mode 100644
index 4682be93f..000000000
--- a/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/RefererSearchTerm.php
+++ /dev/null
@@ -1,13 +0,0 @@
-hasMany($this->getConfig()->get('route_path_model'));
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/RoutePath.php b/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/RoutePath.php
deleted file mode 100644
index 5064a9863..000000000
--- a/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/RoutePath.php
+++ /dev/null
@@ -1,23 +0,0 @@
-hasMany($this->getConfig()->get('route_path_parameter_model'));
- }
-
- public function route()
- {
- return $this->belongsTo($this->getConfig()->get('route_model'), 'route_id');
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/RoutePathParameter.php b/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/RoutePathParameter.php
deleted file mode 100644
index d73f51524..000000000
--- a/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/RoutePathParameter.php
+++ /dev/null
@@ -1,14 +0,0 @@
-belongsTo($this->getConfig()->get('user_model'));
- }
-
- public function device()
- {
- return $this->belongsTo($this->getConfig()->get('device_model'));
- }
-
- public function language()
- {
- return $this->belongsTo($this->getConfig()->get('language_model'));
- }
-
- public function agent()
- {
- return $this->belongsTo($this->getConfig()->get('agent_model'));
- }
-
- public function referer()
- {
- return $this->belongsTo($this->getConfig()->get('referer_model'));
- }
-
- public function geoIp()
- {
- return $this->belongsTo($this->getConfig()->get('geoip_model'), 'geoip_id');
- }
-
- public function cookie()
- {
- return $this->belongsTo($this->getConfig()->get('cookie_model'), 'cookie_id');
- }
-
- public function log()
- {
- return $this->hasMany($this->getConfig()->get('log_model'));
- }
-
- public function getPageViewsAttribute()
- {
- return $this->log()->count();
- }
-
- public function users($minutes, $result)
- {
- $query = $this
- ->select(
- 'user_id',
- $this->getConnection()->raw('max(updated_at) as updated_at')
- )
- ->groupBy('user_id')
- ->from('tracker_sessions')
- ->period($minutes)
- ->whereNotNull('user_id')
- ->orderBy($this->getConnection()->raw('max(updated_at)'), 'desc');
-
- if ($result) {
- return $query->get();
- }
-
- return $query;
- }
-
- public function userDevices($minutes, $result, $user_id)
- {
- $query = $this
- ->select(
- 'user_id',
- $this->getConnection()->raw('max(updated_at) as updated_at')
- )
- ->groupBy('user_id')
- ->from('tracker_sessions')
- ->period($minutes)
- ->whereNotNull('user_id')
- ->orderBy($this->getConnection()->raw('max(updated_at)'), 'desc');
-
- if ($result) {
- return $query->get();
- }
-
- return $query;
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/SqlQuery.php b/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/SqlQuery.php
deleted file mode 100644
index c1ae5e041..000000000
--- a/vendor/pragmarx/tracker/src/Vendor/Laravel/Models/SqlQuery.php
+++ /dev/null
@@ -1,15 +0,0 @@
-getConfig('enabled')) {
- return false;
- }
-
- $this->loadRoutes();
-
- $this->registerErrorHandler();
-
- $this->bootTracker();
-
- $this->loadTranslations();
- }
-
- /**
- * Check if the service provider is full booted.
- *
- * @return void
- */
- public function isFullyBooted()
- {
- return $this->repositoryManagerIsBooted;
- }
-
- /**
- * Register the service provider.
- *
- * @return void
- */
- public function register()
- {
- parent::register();
-
- if ($this->getConfig('enabled')) {
- $this->registerAuthentication();
-
- $this->registerCache();
-
- $this->registerRepositories();
-
- $this->registerTracker();
-
- $this->registerTablesCommand();
-
- $this->registerUpdateGeoIpCommand();
-
- $this->registerExecutionCallback();
-
- $this->registerUserCheckCallback();
-
- $this->registerSqlQueryLogWatcher();
-
- $this->registerGlobalEventLogger();
-
- $this->registerDatatables();
-
- $this->registerMessageRepository();
-
- $this->registerGlobalViewComposers();
- }
- }
-
- /**
- * Get the services provided by the provider.
- *
- * @return string[]
- */
- public function provides()
- {
- return ['tracker'];
- }
-
- /**
- * Takes all the components of Tracker and glues them
- * together to create Tracker.
- *
- * @return void
- */
- protected function registerTracker()
- {
- $this->app->singleton('tracker', function ($app) {
- $app['tracker.loaded'] = true;
-
- return new Tracker(
- $app['tracker.config'],
- $app['tracker.repositories'],
- $app['request'],
- $app['router'],
- $app['log'],
- $app,
- $app['tracker.messages']
- );
- });
- }
-
- public function registerRepositories()
- {
- $this->app->singleton('tracker.repositories', function ($app) {
- try {
- $uaParser = new UserAgentParser($app->make('path.base'));
- } catch (\Exception $exception) {
- $uaParser = null;
- }
-
- $sessionModel = $this->instantiateModel('session_model');
-
- $logModel = $this->instantiateModel('log_model');
-
- $agentModel = $this->instantiateModel('agent_model');
-
- $deviceModel = $this->instantiateModel('device_model');
-
- $cookieModel = $this->instantiateModel('cookie_model');
-
- $pathModel = $this->instantiateModel('path_model');
-
- $queryModel = $this->instantiateModel('query_model');
-
- $queryArgumentModel = $this->instantiateModel('query_argument_model');
-
- $domainModel = $this->instantiateModel('domain_model');
-
- $refererModel = $this->instantiateModel('referer_model');
-
- $refererSearchTermModel = $this->instantiateModel('referer_search_term_model');
-
- $routeModel = $this->instantiateModel('route_model');
-
- $routePathModel = $this->instantiateModel('route_path_model');
-
- $routePathParameterModel = $this->instantiateModel('route_path_parameter_model');
-
- $errorModel = $this->instantiateModel('error_model');
-
- $geoipModel = $this->instantiateModel('geoip_model');
-
- $sqlQueryModel = $this->instantiateModel('sql_query_model');
-
- $sqlQueryBindingModel = $this->instantiateModel('sql_query_binding_model');
-
- $sqlQueryBindingParameterModel = $this->instantiateModel('sql_query_binding_parameter_model');
-
- $sqlQueryLogModel = $this->instantiateModel('sql_query_log_model');
-
- $connectionModel = $this->instantiateModel('connection_model');
-
- $eventModel = $this->instantiateModel('event_model');
-
- $eventLogModel = $this->instantiateModel('event_log_model');
-
- $systemClassModel = $this->instantiateModel('system_class_model');
-
- $languageModel = $this->instantiateModel('language_model');
-
- $logRepository = new Log($logModel);
-
- $connectionRepository = new Connection($connectionModel);
-
- $sqlQueryBindingRepository = new SqlQueryBinding($sqlQueryBindingModel);
-
- $sqlQueryBindingParameterRepository = new SqlQueryBindingParameter($sqlQueryBindingParameterModel);
-
- $sqlQueryLogRepository = new SqlQueryLog($sqlQueryLogModel);
-
- $sqlQueryRepository = new SqlQuery(
- $sqlQueryModel,
- $sqlQueryLogRepository,
- $sqlQueryBindingRepository,
- $sqlQueryBindingParameterRepository,
- $connectionRepository,
- $logRepository,
- $app['tracker.config']
- );
-
- $eventLogRepository = new EventLog($eventLogModel);
-
- $systemClassRepository = new SystemClass($systemClassModel);
-
- $eventRepository = new Event(
- $eventModel,
- $app['tracker.events'],
- $eventLogRepository,
- $systemClassRepository,
- $logRepository,
- $app['tracker.config']
- );
-
- $routeRepository = new Route(
- $routeModel,
- $app['tracker.config']
- );
-
- $crawlerDetect = new CrawlerDetector(
- $app['request']->headers->all(),
- $app['request']->server('HTTP_USER_AGENT')
- );
-
- $manager = new RepositoryManager(
- new GeoIp($this->getConfig('geoip_database_path')),
-
- new MobileDetect(),
-
- $uaParser,
-
- $app['tracker.authentication'],
-
- $app['session.store'],
-
- $app['tracker.config'],
-
- new Session($sessionModel,
- $app['tracker.config'],
- new PhpSession()),
-
- $logRepository,
-
- new Path($pathModel),
-
- new Query($queryModel),
-
- new QueryArgument($queryArgumentModel),
-
- new Agent($agentModel),
-
- new Device($deviceModel),
-
- new Cookie($cookieModel,
- $app['tracker.config'],
- $app['request'],
- $app['cookie']),
-
- new Domain($domainModel),
-
- new Referer(
- $refererModel,
- $refererSearchTermModel,
- $this->getAppUrl(),
- $app->make('PragmaRX\Tracker\Support\RefererParser')
- ),
-
- $routeRepository,
-
- new RoutePath($routePathModel),
-
- new RoutePathParameter($routePathParameterModel),
-
- new Error($errorModel),
-
- new GeoIpRepository($geoipModel),
-
- $sqlQueryRepository,
-
- $sqlQueryBindingRepository,
-
- $sqlQueryBindingParameterRepository,
-
- $sqlQueryLogRepository,
-
- $connectionRepository,
-
- $eventRepository,
-
- $eventLogRepository,
-
- $systemClassRepository,
-
- $crawlerDetect,
-
- new Language($languageModel),
-
- new LanguageDetect()
- );
-
- $this->repositoryManagerIsBooted = true;
-
- return $manager;
- });
- }
-
- public function registerAuthentication()
- {
- $this->app->singleton('tracker.authentication', function ($app) {
- return new Authentication($app['tracker.config'], $app);
- });
- }
-
- public function registerCache()
- {
- $this->app->singleton('tracker.cache', function ($app) {
- return new Cache($app['tracker.config'], $app);
- });
- }
-
- protected function registerTablesCommand()
- {
- $this->app->singleton('tracker.tables.command', function ($app) {
- return new TablesCommand();
- });
-
- $this->commands('tracker.tables.command');
- }
-
- protected function registerExecutionCallback()
- {
- $me = $this;
-
- $mathingEvents = [
- 'router.matched',
- 'Illuminate\Routing\Events\RouteMatched',
- ];
-
- $this->app['events']->listen($mathingEvents, function () use ($me) {
- $me->getTracker()->routerMatched($me->getConfig('log_routes'));
- });
- }
-
- protected function registerErrorHandler()
- {
- if ($this->getConfig('log_exceptions')) {
- $illuminateHandler = 'Illuminate\Contracts\Debug\ExceptionHandler';
-
- $handler = new TrackerExceptionHandler(
- $this->getTracker(),
- $this->app[$illuminateHandler]
- );
-
- // Replace original Illuminate Exception Handler by Tracker's
- $this->app[$illuminateHandler] = $handler;
- }
- }
-
- /**
- * @param string $modelName
- */
- protected function instantiateModel($modelName)
- {
- $model = $this->getConfig($modelName);
-
- if (!$model) {
- $message = "Tracker: Model not found for '$modelName'.";
-
- $this->app['log']->error($message);
-
- throw new \Exception($message);
- }
-
- $model = new $model();
-
- $model->setConfig($this->app['tracker.config']);
-
- if ($connection = $this->getConfig('connection')) {
- $model->setConnection($connection);
- }
-
- return $model;
- }
-
- protected function registerSqlQueryLogWatcher()
- {
- $me = $this;
-
- if (!class_exists('Illuminate\Database\Events\QueryExecuted')) {
- $this->app['events']->listen('illuminate.query', function ($query,
- $bindings,
- $time,
- $name) use ($me) {
- $me->logSqlQuery($query, $bindings, $time, $name);
- });
- } else {
- $this->app['events']->listen('Illuminate\Database\Events\QueryExecuted', function ($query) use ($me) {
- $me->logSqlQuery($query);
- });
- }
- }
-
- /**
- * @param $query
- * @param $bindings
- * @param $time
- * @param $name
- * @param $me
- */
- public function logSqlQuery($query, $bindings = null, $time = null, $connectionName = null)
- {
- if ($this->getTracker()->isEnabled()) {
- if ($query instanceof \Illuminate\Database\Events\QueryExecuted) {
- $bindings = $query->bindings;
- $time = $query->time;
- $connectionName = $query->connectionName;
- $query = $query->sql;
- }
-
- $this->getTracker()->logSqlQuery($query, $bindings, $time, $connectionName);
- }
- }
-
- protected function registerGlobalEventLogger()
- {
- $me = $this;
-
- $this->app->singleton('tracker.events', function ($app) {
- return new EventStorage();
- });
-
- $this->app['events']->listen('*', function ($object = null) use ($me) {
- if ($me->app['tracker.events']->isOff() || !$me->isFullyBooted()) {
- return;
- }
-
- // To avoid infinite recursion, event tracking while logging events
- // must be turned off
- $me->app['tracker.events']->turnOff();
-
- // Log events even before application is ready
- // $me->app['tracker.events']->logEvent(
- // $me->app['events']->firing(),
- // $object
- // );
- // TODO: we have to investigate a way of doing this
-
- // Can only send events to database after application is ready
- if (isset($me->app['tracker.loaded'])) {
- $me->getTracker()->logEvents();
- }
-
- // Turn the event tracking to on again
- $me->app['tracker.events']->turnOn();
- });
- }
-
- protected function loadRoutes()
- {
- if (!$this->getConfig('stats_panel_enabled')) {
- return false;
- }
-
- $prefix = $this->getConfig('stats_base_uri');
-
- $namespace = $this->getConfig('stats_controllers_namespace');
-
- $filters = [];
-
- if ($before = $this->getConfig('stats_routes_before_filter')) {
- $filters['before'] = $before;
- }
-
- if ($after = $this->getConfig('stats_routes_after_filter')) {
- $filters['after'] = $after;
- }
-
- if ($middleware = $this->getConfig('stats_routes_middleware')) {
- $filters['middleware'] = $middleware;
- }
-
- $router = $this->app->make('router');
-
- $router->group(['namespace' => $namespace], function () use ($prefix, $router, $filters) {
- $router->group($filters, function () use ($prefix, $router) {
- $router->group(['prefix' => $prefix], function ($router) {
- $router->get('/', ['as' => 'tracker.stats.index', 'uses' => 'Stats@index']);
-
- $router->get('log/{uuid}', ['as' => 'tracker.stats.log', 'uses' => 'Stats@log']);
-
- $router->get('api/pageviews', ['as' => 'tracker.stats.api.pageviews', 'uses' => 'Stats@apiPageviews']);
-
- $router->get('api/pageviewsbycountry', ['as' => 'tracker.stats.api.pageviewsbycountry', 'uses' => 'Stats@apiPageviewsByCountry']);
-
- $router->get('api/log/{uuid}', ['as' => 'tracker.stats.api.log', 'uses' => 'Stats@apiLog']);
-
- $router->get('api/errors', ['as' => 'tracker.stats.api.errors', 'uses' => 'Stats@apiErrors']);
-
- $router->get('api/events', ['as' => 'tracker.stats.api.events', 'uses' => 'Stats@apiEvents']);
-
- $router->get('api/users', ['as' => 'tracker.stats.api.users', 'uses' => 'Stats@apiUsers']);
-
- $router->get('api/visits', ['as' => 'tracker.stats.api.visits', 'uses' => 'Stats@apiVisits']);
- });
- });
- });
- }
-
- protected function registerDatatables()
- {
- $this->registerServiceProvider('Bllim\Datatables\DatatablesServiceProvider');
-
- $this->registerServiceAlias('Datatable', 'Bllim\Datatables\Facade\Datatables');
- }
-
- /**
- * Get the current package directory.
- *
- * @return string
- */
- public function getPackageDir()
- {
- return __DIR__.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'..';
- }
-
- /**
- * Boot & Track.
- */
- protected function bootTracker()
- {
- $this->getTracker()->boot();
- }
-
- /**
- * Register global view composers.
- */
- protected function registerGlobalViewComposers()
- {
- $me = $this;
-
- $this->app->make('view')->composer('pragmarx/tracker::*', function ($view) use ($me) {
- $view->with('stats_layout', $me->getConfig('stats_layout'));
-
- $template_path = url('/').$me->getConfig('stats_template_path');
-
- $view->with('stats_template_path', $template_path);
- });
- }
-
- protected function registerUpdateGeoIpCommand()
- {
- $this->app->singleton('tracker.updategeoip.command', function ($app) {
- return new UpdateGeoIp();
- });
-
- $this->commands('tracker.updategeoip.command');
- }
-
- protected function registerUserCheckCallback()
- {
- $me = $this;
-
- $this->app['events']->listen('router.before', function ($object = null) use ($me) {
-
- // get auth bindings to check
- $bindings = $me->getConfig('authentication_ioc_binding');
-
- // check if all bindings are resolved
- $checked_bindings = array_map(function ($abstract) use ($me) {
- return $me->app->resolved($abstract);
- }, $bindings);
-
- $all_bindings_resolved =
- (!in_array(false, $checked_bindings, true)) ?: false;
-
- if ($me->tracker &&
- !$me->userChecked &&
- $me->getConfig('log_users') &&
- $all_bindings_resolved
- ) {
- $me->userChecked = $me->getTracker()->checkCurrentUser();
- }
- });
- }
-
- /**
- * @return Tracker
- */
- public function getTracker()
- {
- if (!$this->tracker) {
- $this->tracker = $this->app['tracker'];
- }
-
- return $this->tracker;
- }
-
- public function getRootDirectory()
- {
- return __DIR__.'/../..';
- }
-
- protected function getAppUrl()
- {
- return $this->app['request']->url();
- }
-
- public function loadTranslations()
- {
- $this->loadTranslationsFrom(__DIR__.'/../../lang', 'tracker');
- }
-
- /**
- * Register the message repository.
- */
- protected function registerMessageRepository()
- {
- $this->app->singleton('tracker.messages', function () {
- return new MessageRepository();
- });
- }
-}
diff --git a/vendor/pragmarx/tracker/src/Vendor/Laravel/Support/Session.php b/vendor/pragmarx/tracker/src/Vendor/Laravel/Support/Session.php
deleted file mode 100644
index 19c47ad94..000000000
--- a/vendor/pragmarx/tracker/src/Vendor/Laravel/Support/Session.php
+++ /dev/null
@@ -1,40 +0,0 @@
-getValue('days', 1));
-
- LaravelSession::put('tracker.stats.page', $this->getValue('page', 'visits'));
-
- $this->minutes = new Minutes(60 * 24 * LaravelSession::get('tracker.stats.days'));
- }
-
- /**
- * @return Minutes
- */
- public function getMinutes()
- {
- return $this->minutes;
- }
-
- public function getValue($variable, $default = null)
- {
- if (Request::has($variable)) {
- $value = Request::get($variable);
- } else {
- $value = LaravelSession::get('tracker.stats.'.$variable, $default);
- }
-
- return $value;
- }
-}
diff --git a/vendor/pragmarx/tracker/src/config/.gitkeep b/vendor/pragmarx/tracker/src/config/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/vendor/pragmarx/tracker/src/config/config.php b/vendor/pragmarx/tracker/src/config/config.php
deleted file mode 100644
index 9eb0b8a2d..000000000
--- a/vendor/pragmarx/tracker/src/config/config.php
+++ /dev/null
@@ -1,374 +0,0 @@
- false,
-
- /*
- * Enable cache?
- */
- 'cache_enabled' => true,
-
- /*
- * Deffer booting for middleware use
- */
- 'use_middleware' => false,
-
- /*
- * Robots should be tracked?
- */
- 'do_not_track_robots' => false,
-
- /*
- * Which environments are not trackable?
- */
- 'do_not_track_environments' => [
- // defaults to none
- ],
-
- /*
- * Which routes names are not trackable?
- */
- 'do_not_track_routes' => [
- 'tracker.stats.*',
- ],
-
- /*
- * Which route paths are not trackable?
- */
- 'do_not_track_paths' => [
- 'api/*',
- ],
-
- /*
- * The Do Not Track Ips is used to disable Tracker for some IP addresses:
- *
- * '127.0.0.1', '192.168.1.1'
- *
- * You can set ranges of IPs
- * '192.168.0.1-192.168.0.100'
- *
- * And use net masks
- * '10.0.0.0/32'
- * '172.17.0.0/255.255.0.0'
- */
- 'do_not_track_ips' => [
- '127.0.0.0/24', /// range 127.0.0.1 - 127.0.0.255
- ],
-
- /*
- * When an IP is not trackable, show a message in log.
- */
- 'log_untrackable_sessions' => true,
-
- /*
- * Log every single access?
- *
- * The log table can become huge if your site is popular, but...
- *
- * Log table is also responsible for storing information on:
- *
- * - Routes and controller actions accessed
- * - HTTP method used (GET, POST...)
- * - Error log
- * - URL queries (including values)
- */
- 'log_enabled' => false,
-
- /*
- * Log artisan commands?
- */
- 'console_log_enabled' => false,
-
- /*
- * Log SQL queries?
- *
- * Log must be enabled for this option to work.
- */
- 'log_sql_queries' => false,
-
- /*
- * If you prefer to store Tracker data on a different database or connection,
- * you can set it here.
- *
- * To avoid SQL queries log recursion, create a different connection for Tracker,
- * point it to the same database (or not) and forbid logging of this connection in
- * do_not_log_sql_queries_connections.
- */
- 'connection' => 'tracker',
-
- /*
- * Forbid logging of SQL queries for some connections.
- *
- * To avoid recursion, you better ignore Tracker connection here.
- *
- * Please create a separate database connection for Tracker. It can hit
- * the same database of your application, but the connection itself
- * has to have a different name, so the package can ignore its own queries
- * and avoid recursion.
- *
- */
- 'do_not_log_sql_queries_connections' => [
- 'tracker',
- ],
-
- /*
- * GeoIp2 database path.
- *
- * To get a fresh version of this file, use the command
- *
- * php artisan tracker:updategeoip
- *
- */
-
- 'geoip_database_path' => __DIR__.'/geoip', //storage_path('geoip'),
-
- /*
- * Also log SQL query bindings?
- *
- * Log must be enabled for this option to work.
- */
- 'log_sql_queries_bindings' => false,
-
- /*
- * Log events?
- */
- 'log_events' => false,
-
- /*
- * Which events do you want to log exactly?
- */
- 'log_only_events' => [
- // defaults to logging all events
- ],
-
- /*
- * What are the names of the id columns on your system?
- *
- * 'id' is the most common, but if you have one or more different,
- * please add them here in your preference order.
- */
- 'id_columns_names' => [
- 'id',
- ],
- /*
- * Do not log events for the following patterns.
- * Strings accepts wildcards:
- *
- * eloquent.*
- *
- */
- 'do_not_log_events' => [
- 'illuminate.log',
- 'eloquent.*',
- 'router.*',
- 'composing: *',
- 'creating: *',
- ],
-
- /*
- * Do you wish to log Geo IP data?
- *
- * You will need to install the geoip package
- *
- * composer require "geoip/geoip":"~1.14"
- *
- * And remove the PHP module
- *
- * sudo apt-get purge php5-geoip
- *
- */
- 'log_geoip' => false,
-
- /*
- * Do you wish to log the user agent?
- */
- 'log_user_agents' => false,
-
- /*
- * Do you wish to log your users?
- */
- 'log_users' => false,
-
- /*
- * Do you wish to log devices?
- */
- 'log_devices' => false,
-
- /*
- * Do you wish to log languages?
- */
- 'log_languages' => false,
-
- /*
- * Do you wish to log HTTP referers?
- */
- 'log_referers' => false,
-
- /*
- * Do you wish to log url paths?
- */
- 'log_paths' => false,
-
- /*
- * Do you wish to log url queries and query arguments?
- */
- 'log_queries' => false,
-
- /*
- * Do you wish to log routes and route parameters?
- */
- 'log_routes' => false,
-
- /*
- * Log errors and exceptions?
- */
- 'log_exceptions' => false,
-
- /*
- * A cookie may be created on your visitor device, so you can have information
- * on everything made using that device on your site. *
- */
- 'store_cookie_tracker' => false,
-
- /*
- * If you are storing cookies, you better change it to a name you of your own.
- */
- 'tracker_cookie_name' => 'please_change_this_cookie_name',
-
- /*
- * Internal tracker session name.
- */
- 'tracker_session_name' => 'tracker_session',
-
- /*
- * ** IMPORTANT **
- * Change the user model to your own.
- * If the model is under a different connection, be specific.
- * ...
- * class ModelName {
- * protected $connection = 'mysql';
- * ...
- */
- 'user_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\User',
-
- /*
- * You can use your own model for every single table Tracker has.
- */
-
- 'session_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\Session',
-
- 'log_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\Log',
-
- 'path_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\Path',
-
- 'query_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\Query',
-
- 'query_argument_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\QueryArgument',
-
- 'agent_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\Agent',
-
- 'device_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\Device',
-
- 'cookie_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\Cookie',
-
- 'domain_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\Domain',
-
- 'referer_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\Referer',
-
- 'referer_search_term_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\RefererSearchTerm',
-
- 'route_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\Route',
-
- 'route_path_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\RoutePath',
-
- 'route_path_parameter_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\RoutePathParameter',
-
- 'error_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\Error',
-
- 'geoip_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\GeoIp',
-
- 'sql_query_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\SqlQuery',
-
- 'sql_query_binding_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\SqlQueryBinding',
-
- 'sql_query_binding_parameter_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\SqlQueryBindingParameter',
-
- 'sql_query_log_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\SqlQueryLog',
-
- 'connection_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\Connection',
-
- 'event_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\Event',
-
- 'event_log_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\EventLog',
-
- 'system_class_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\SystemClass',
-
- 'language_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\Language',
-
- /*
- * Laravel internal variables on user authentication and login.
- */
- 'authentication_ioc_binding' => ['auth'], // defaults to 'auth' in Illuminate\Support\Facades\Auth
-
- 'authentication_guards' => [], // defaults to []
-
- 'authenticated_check_method' => 'check', // to Auth::check()
-
- 'authenticated_user_method' => 'user', // to Auth::user()
-
- 'authenticated_user_id_column' => 'id', // to Auth::user()->id
-
- 'authenticated_user_username_column' => 'email', // to Auth::user()->email
-
- /*
- * Enable the Stats Panel?
- */
- 'stats_panel_enabled' => false,
-
- /*
- * Stats Panel routes before filter
- *
- */
- 'stats_routes_before_filter' => '',
-
- /*
- * Stats Panel routes after filter
- *
- */
- 'stats_routes_after_filter' => '',
-
- /*
- * Stats Panel routes middleware
- *
- */
- 'stats_routes_middleware' => 'web',
-
- /*
- * Stats Panel template path
- */
- 'stats_template_path' => '/templates/sb-admin-2',
-
- /*
- * Stats Panel base uri.
- *
- * If your site url is http://wwww.mysite.com, then your stats page will be:
- *
- * http://wwww.mysite.com/stats
- *
- */
- 'stats_base_uri' => 'stats',
-
- /*
- * Stats Panel layout view
- */
- 'stats_layout' => 'pragmarx/tracker::layout',
-
- /*
- * Stats Panel controllers namespace
- */
- 'stats_controllers_namespace' => 'PragmaRX\Tracker\Vendor\Laravel\Controllers',
-];
diff --git a/vendor/pragmarx/tracker/src/lang/en/tracker.php b/vendor/pragmarx/tracker/src/lang/en/tracker.php
deleted file mode 100644
index bd8c1342a..000000000
--- a/vendor/pragmarx/tracker/src/lang/en/tracker.php
+++ /dev/null
@@ -1,51 +0,0 @@
- 'Code',
- 'session' => 'Session',
- 'message' => 'Message',
- 'path' => 'Path',
- 'when' => 'When?',
- 'name' => 'Name',
- 'no_occurrences_in_period' => '# of occurrences in the period',
- 'tracker_title' => 'Laravel Stats Tracker',
- 'toggle_navigation' => 'Toggle navigation',
- 'today' => 'Today',
- 'no_days' => ':count Day|Days',
- 'no_years' => ':count Year|Years',
- 'visits' => 'Visits',
- 'summary' => 'Summary',
- 'users' => 'Users',
- 'user' => 'User',
- 'events' => 'Events',
- 'errors' => 'Errors',
- 'method' => 'Method',
- 'route_name_action' => 'Route Name / Action',
- 'route' => 'Route',
- 'language' => 'Language',
- 'query' => 'Query',
- 'is_ajax' => 'Is Ajax?',
- 'is_secure' => 'Is Secure?',
- 'is_json' => 'Is Json?',
- 'wants_json' => 'Wants Json?',
- 'error_q' => 'Error?',
- 'created_at' => 'Created At',
- 'go_home' => 'Go home »',
- 'page_views_by_country' => 'Page Views by Country',
- 'email' => 'Email',
- 'last_seen' => 'Last Seen',
- 'regex_file_not_available' => 'Tracker: uaparser regex file not available. "Execute php artisan tracker:updateparser" to generate it.',
- 'auth_required' => 'Authentication required',
- 'miss_admin_prop' => 'User model misses admin property',
- 'not_admin' => 'You are not Admin',
- 'id' => 'Id',
- 'ip_address' => 'IP Address',
- 'country_city' => 'Country / City',
- 'device' => 'Device',
- 'browser' => 'Browser',
- 'referer' => 'Referer',
- 'page_views' => 'Page Views',
- 'last_activity' => 'Last Activity',
- 'log' => 'Log',
- 'page_views_summary' => 'Page Views Summary',
-];
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311070_create_tracker_paths_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311070_create_tracker_paths_table.php
deleted file mode 100644
index a329679e9..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311070_create_tracker_paths_table.php
+++ /dev/null
@@ -1,44 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->string('path')->index();
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311071_create_tracker_queries_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311071_create_tracker_queries_table.php
deleted file mode 100644
index 605c36f08..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311071_create_tracker_queries_table.php
+++ /dev/null
@@ -1,44 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->string('query')->index();
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311072_create_tracker_queries_arguments_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311072_create_tracker_queries_arguments_table.php
deleted file mode 100644
index ef4ce579e..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311072_create_tracker_queries_arguments_table.php
+++ /dev/null
@@ -1,46 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->bigInteger('query_id')->unsigned()->index();
- $table->string('argument')->index();
- $table->string('value')->index();
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311073_create_tracker_routes_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311073_create_tracker_routes_table.php
deleted file mode 100644
index 4b36d393f..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311073_create_tracker_routes_table.php
+++ /dev/null
@@ -1,45 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->string('name')->index();
- $table->string('action')->index();
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311074_create_tracker_routes_paths_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311074_create_tracker_routes_paths_table.php
deleted file mode 100644
index b5cb6b1ec..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311074_create_tracker_routes_paths_table.php
+++ /dev/null
@@ -1,45 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->bigInteger('route_id')->unsigned()->index();
- $table->string('path')->index();
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311075_create_tracker_route_path_parameters_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311075_create_tracker_route_path_parameters_table.php
deleted file mode 100644
index 1a8c0489f..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311075_create_tracker_route_path_parameters_table.php
+++ /dev/null
@@ -1,46 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->bigInteger('route_path_id')->unsigned()->index();
- $table->string('parameter')->index();
- $table->string('value')->index();
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311076_create_tracker_agents_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311076_create_tracker_agents_table.php
deleted file mode 100644
index a24a1c9e3..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311076_create_tracker_agents_table.php
+++ /dev/null
@@ -1,46 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->string('name')->unique();
- $table->string('browser')->index();
- $table->string('browser_version');
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311077_create_tracker_cookies_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311077_create_tracker_cookies_table.php
deleted file mode 100644
index 69568abf4..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311077_create_tracker_cookies_table.php
+++ /dev/null
@@ -1,44 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->string('uuid')->unique();
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311078_create_tracker_devices_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311078_create_tracker_devices_table.php
deleted file mode 100644
index fab18a615..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311078_create_tracker_devices_table.php
+++ /dev/null
@@ -1,50 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->string('kind', 16)->index();
- $table->string('model', 64)->index();
- $table->string('platform', 64)->index();
- $table->string('platform_version', 16)->index();
- $table->boolean('is_mobile');
-
- $table->unique(['kind', 'model', 'platform', 'platform_version']);
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311079_create_tracker_domains_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311079_create_tracker_domains_table.php
deleted file mode 100644
index 313aa6585..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311079_create_tracker_domains_table.php
+++ /dev/null
@@ -1,44 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->string('name')->index();
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311080_create_tracker_referers_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311080_create_tracker_referers_table.php
deleted file mode 100644
index 3c38f478a..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311080_create_tracker_referers_table.php
+++ /dev/null
@@ -1,46 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->bigInteger('domain_id')->unsigned()->index();
- $table->string('url')->index();
- $table->string('host');
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311081_create_tracker_geoip_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311081_create_tracker_geoip_table.php
deleted file mode 100644
index 8f200da27..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311081_create_tracker_geoip_table.php
+++ /dev/null
@@ -1,56 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->double('latitude')->nullable()->index();
- $table->double('longitude')->nullable()->index();
-
- $table->string('country_code', 2)->nullable()->index();
- $table->string('country_code3', 3)->nullable()->index();
- $table->string('country_name')->nullable()->index();
- $table->string('region', 2)->nullable();
- $table->string('city', 50)->nullable()->index();
- $table->string('postal_code', 20)->nullable();
- $table->bigInteger('area_code')->nullable();
- $table->double('dma_code')->nullable();
- $table->double('metro_code')->nullable();
- $table->string('continent_code', 2)->nullable();
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311082_create_tracker_sessions_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311082_create_tracker_sessions_table.php
deleted file mode 100644
index 4676730d1..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311082_create_tracker_sessions_table.php
+++ /dev/null
@@ -1,52 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->string('uuid')->unique()->index();
- $table->bigInteger('user_id')->unsigned()->nullable()->index();
- $table->bigInteger('device_id')->unsigned()->nullable()->index();
- $table->bigInteger('agent_id')->unsigned()->nullable()->index();
- $table->string('client_ip')->index();
- $table->bigInteger('referer_id')->unsigned()->nullable()->index();
- $table->bigInteger('cookie_id')->unsigned()->nullable()->index();
- $table->bigInteger('geoip_id')->unsigned()->nullable()->index();
- $table->boolean('is_robot');
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311083_create_tracker_errors_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311083_create_tracker_errors_table.php
deleted file mode 100644
index abf2136b2..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311083_create_tracker_errors_table.php
+++ /dev/null
@@ -1,45 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->string('code')->index();
- $table->string('message')->index();
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311084_create_tracker_system_classes_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311084_create_tracker_system_classes_table.php
deleted file mode 100644
index 0b100a825..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311084_create_tracker_system_classes_table.php
+++ /dev/null
@@ -1,44 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->string('name')->index();
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311085_create_tracker_log_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311085_create_tracker_log_table.php
deleted file mode 100644
index 7b60b920e..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311085_create_tracker_log_table.php
+++ /dev/null
@@ -1,53 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->bigInteger('session_id')->unsigned()->index();
- $table->bigInteger('path_id')->unsigned()->nullable()->index();
- $table->bigInteger('query_id')->unsigned()->nullable()->index();
- $table->string('method', 10)->index();
- $table->bigInteger('route_path_id')->unsigned()->nullable()->index();
- $table->boolean('is_ajax');
- $table->boolean('is_secure');
- $table->boolean('is_json');
- $table->boolean('wants_json');
- $table->bigInteger('error_id')->unsigned()->nullable()->index();
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311086_create_tracker_events_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311086_create_tracker_events_table.php
deleted file mode 100644
index a4090782e..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311086_create_tracker_events_table.php
+++ /dev/null
@@ -1,44 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->string('name')->index();
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311087_create_tracker_events_log_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311087_create_tracker_events_log_table.php
deleted file mode 100644
index 74cbf607e..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311087_create_tracker_events_log_table.php
+++ /dev/null
@@ -1,46 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->bigInteger('event_id')->unsigned()->index();
- $table->bigInteger('class_id')->unsigned()->nullable()->index();
- $table->bigInteger('log_id')->unsigned()->index();
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311088_create_tracker_sql_queries_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311088_create_tracker_sql_queries_table.php
deleted file mode 100644
index 9b878dec8..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311088_create_tracker_sql_queries_table.php
+++ /dev/null
@@ -1,47 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->string('sha1', 40)->index();
- $table->text('statement');
- $table->double('time')->index();
- $table->integer('connection_id')->unsigned();
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311089_create_tracker_sql_query_bindings_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311089_create_tracker_sql_query_bindings_table.php
deleted file mode 100644
index 6f9536409..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311089_create_tracker_sql_query_bindings_table.php
+++ /dev/null
@@ -1,45 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->string('sha1', 40)->index();
- $table->text('serialized');
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311090_create_tracker_sql_query_bindings_parameters_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311090_create_tracker_sql_query_bindings_parameters_table.php
deleted file mode 100644
index fe794e399..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311090_create_tracker_sql_query_bindings_parameters_table.php
+++ /dev/null
@@ -1,46 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->bigInteger('sql_query_bindings_id')->unsigned()->nullable();
- $table->string('name')->nullable()->index();
- $table->text('value')->nullable();
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311091_create_tracker_sql_queries_log_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311091_create_tracker_sql_queries_log_table.php
deleted file mode 100644
index 3f7ad6539..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311091_create_tracker_sql_queries_log_table.php
+++ /dev/null
@@ -1,45 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->bigInteger('log_id')->unsigned()->index();
- $table->bigInteger('sql_query_id')->unsigned()->index();
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311092_create_tracker_connections_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311092_create_tracker_connections_table.php
deleted file mode 100644
index ba1173d81..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311092_create_tracker_connections_table.php
+++ /dev/null
@@ -1,44 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->string('name')->index();
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311093_create_tracker_tables_relations.php b/vendor/pragmarx/tracker/src/migrations/2015_03_07_311093_create_tracker_tables_relations.php
deleted file mode 100644
index 7e515603e..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_07_311093_create_tracker_tables_relations.php
+++ /dev/null
@@ -1,184 +0,0 @@
-builder->table('tracker_query_arguments', function ($table) {
- $table->foreign('query_id')
- ->references('id')
- ->on('tracker_queries')
- ->onUpdate('cascade')
- ->onDelete('cascade');
- });
-
- $this->builder->table('tracker_route_paths', function ($table) {
- $table->foreign('route_id')
- ->references('id')
- ->on('tracker_routes')
- ->onUpdate('cascade')
- ->onDelete('cascade');
- });
-
- $this->builder->table('tracker_route_path_parameters', function ($table) {
- $table->foreign('route_path_id')
- ->references('id')
- ->on('tracker_route_paths')
- ->onUpdate('cascade')
- ->onDelete('cascade');
- });
-
- $this->builder->table('tracker_referers', function ($table) {
- $table->foreign('domain_id')
- ->references('id')
- ->on('tracker_domains')
- ->onUpdate('cascade')
- ->onDelete('cascade');
- });
-
- $this->builder->table('tracker_sessions', function ($table) {
- $table->foreign('device_id')
- ->references('id')
- ->on('tracker_devices')
- ->onUpdate('cascade')
- ->onDelete('cascade');
- });
-
- $this->builder->table('tracker_sessions', function ($table) {
- $table->foreign('agent_id')
- ->references('id')
- ->on('tracker_agents')
- ->onUpdate('cascade')
- ->onDelete('cascade');
- });
-
- $this->builder->table('tracker_sessions', function ($table) {
- $table->foreign('referer_id')
- ->references('id')
- ->on('tracker_referers')
- ->onUpdate('cascade')
- ->onDelete('cascade');
- });
-
- $this->builder->table('tracker_sessions', function ($table) {
- $table->foreign('cookie_id')
- ->references('id')
- ->on('tracker_cookies')
- ->onUpdate('cascade')
- ->onDelete('cascade');
- });
-
- $this->builder->table('tracker_sessions', function ($table) {
- $table->foreign('geoip_id')
- ->references('id')
- ->on('tracker_geoip')
- ->onUpdate('cascade')
- ->onDelete('cascade');
- });
-
- $this->builder->table('tracker_log', function ($table) {
- $table->foreign('session_id')
- ->references('id')
- ->on('tracker_sessions')
- ->onUpdate('cascade')
- ->onDelete('cascade');
- });
-
- $this->builder->table('tracker_log', function ($table) {
- $table->foreign('path_id')
- ->references('id')
- ->on('tracker_paths')
- ->onUpdate('cascade')
- ->onDelete('cascade');
- });
-
- $this->builder->table('tracker_log', function ($table) {
- $table->foreign('query_id')
- ->references('id')
- ->on('tracker_queries')
- ->onUpdate('cascade')
- ->onDelete('cascade');
- });
-
- $this->builder->table('tracker_log', function ($table) {
- $table->foreign('route_path_id')
- ->references('id')
- ->on('tracker_route_paths')
- ->onUpdate('cascade')
- ->onDelete('cascade');
- });
-
- $this->builder->table('tracker_log', function ($table) {
- $table->foreign('error_id')
- ->references('id')
- ->on('tracker_errors')
- ->onUpdate('cascade')
- ->onDelete('cascade');
- });
-
- $this->builder->table('tracker_events_log', function ($table) {
- $table->foreign('event_id')
- ->references('id')
- ->on('tracker_events')
- ->onUpdate('cascade')
- ->onDelete('cascade');
- });
-
- $this->builder->table('tracker_events_log', function ($table) {
- $table->foreign('class_id')
- ->references('id')
- ->on('tracker_system_classes')
- ->onUpdate('cascade')
- ->onDelete('cascade');
- });
-
- $this->builder->table('tracker_events_log', function ($table) {
- $table->foreign('log_id')
- ->references('id')
- ->on('tracker_log')
- ->onUpdate('cascade')
- ->onDelete('cascade');
- });
-
- $this->builder->table('tracker_sql_query_bindings_parameters', function ($table) {
- $table->foreign('sql_query_bindings_id', 'tracker_sqlqb_parameters')
- ->references('id')
- ->on('tracker_sql_query_bindings')
- ->onUpdate('cascade')
- ->onDelete('cascade');
- });
-
- $this->builder->table('tracker_sql_queries_log', function ($table) {
- $table->foreign('log_id')
- ->references('id')
- ->on('tracker_log')
- ->onUpdate('cascade')
- ->onDelete('cascade');
- });
-
- $this->builder->table('tracker_sql_queries_log', function ($table) {
- $table->foreign('sql_query_id')
- ->references('id')
- ->on('tracker_sql_queries')
- ->onUpdate('cascade')
- ->onDelete('cascade');
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- // Tables will be dropped in the correct order... :)
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_13_311094_create_tracker_referer_search_term_table.php b/vendor/pragmarx/tracker/src/migrations/2015_03_13_311094_create_tracker_referer_search_term_table.php
deleted file mode 100644
index 80db0aa94..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_13_311094_create_tracker_referer_search_term_table.php
+++ /dev/null
@@ -1,45 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->bigInteger('referer_id')->unsigned()->index();
- $table->string('search_term')->index();
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_03_13_311095_add_tracker_referer_columns.php b/vendor/pragmarx/tracker/src/migrations/2015_03_13_311095_add_tracker_referer_columns.php
deleted file mode 100644
index f0c533ea9..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_03_13_311095_add_tracker_referer_columns.php
+++ /dev/null
@@ -1,64 +0,0 @@
-builder->table(
- $this->table,
- function ($table) {
- $table->string('medium')->nullable()->index();
- $table->string('source')->nullable()->index();
- $table->string('search_terms_hash')->nullable()->index();
- }
- );
-
- $this->builder->table($this->foreign, function ($table) {
- $table->foreign('referer_id', 'tracker_referers_referer_id_fk')
- ->references('id')
- ->on('tracker_referers')
- ->onUpdate('cascade')
- ->onDelete('cascade');
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->builder->table(
- $this->table,
- function ($table) {
- $table->dropColumn('medium');
- $table->dropColumn('source');
- $table->dropColumn('search_terms_hash');
- }
- );
-
- $this->builder->table(
- $this->foreign,
- function ($table) {
- $table->dropForeign('tracker_referers_referer_id_fk');
- }
- );
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_11_23_311096_add_tracker_referer_column_to_log.php b/vendor/pragmarx/tracker/src/migrations/2015_11_23_311096_add_tracker_referer_column_to_log.php
deleted file mode 100644
index d0fd14d56..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_11_23_311096_add_tracker_referer_column_to_log.php
+++ /dev/null
@@ -1,43 +0,0 @@
-builder->table(
- $this->table,
- function ($table) {
- $table->integer('referer_id')->unsigned()->nullable()->index();
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->builder->table(
- $this->table,
- function ($table) {
- $table->dropColumn('referer_id');
- }
- );
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_11_23_311097_create_tracker_languages_table.php b/vendor/pragmarx/tracker/src/migrations/2015_11_23_311097_create_tracker_languages_table.php
deleted file mode 100644
index eeabf1b48..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_11_23_311097_create_tracker_languages_table.php
+++ /dev/null
@@ -1,47 +0,0 @@
-builder->create(
- $this->table,
- function ($table) {
- $table->bigIncrements('id');
-
- $table->string('preference')->index();
- $table->string('language-range')->index();
-
- $table->unique(['preference', 'language-range']);
-
- $table->timestamps();
- $table->index('created_at');
- $table->index('updated_at');
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->drop($this->table);
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_11_23_311098_add_language_id_column_to_sessions.php b/vendor/pragmarx/tracker/src/migrations/2015_11_23_311098_add_language_id_column_to_sessions.php
deleted file mode 100644
index b927e1c13..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_11_23_311098_add_language_id_column_to_sessions.php
+++ /dev/null
@@ -1,43 +0,0 @@
-builder->table(
- $this->table,
- function ($table) {
- $table->bigInteger('language_id')->unsigned()->nullable()->index();
- }
- );
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->builder->table(
- $this->table,
- function ($table) {
- $table->dropColumn('language_id');
- }
- );
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_11_23_311099_add_tracker_language_foreign_key_to_sessions.php b/vendor/pragmarx/tracker/src/migrations/2015_11_23_311099_add_tracker_language_foreign_key_to_sessions.php
deleted file mode 100644
index 7ef236f46..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_11_23_311099_add_tracker_language_foreign_key_to_sessions.php
+++ /dev/null
@@ -1,34 +0,0 @@
-builder->table('tracker_sessions', function ($table) {
- $table->foreign('language_id')
- ->references('id')
- ->on('tracker_languages')
- ->onUpdate('cascade')
- ->onDelete('cascade');
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- $this->builder->table('tracker_sessions', function ($table) {
- $table->dropForeign(['language_id']);
- });
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2015_11_23_311100_add_nullable_to_tracker_error.php b/vendor/pragmarx/tracker/src/migrations/2015_11_23_311100_add_nullable_to_tracker_error.php
deleted file mode 100644
index da892c1d7..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2015_11_23_311100_add_nullable_to_tracker_error.php
+++ /dev/null
@@ -1,40 +0,0 @@
-builder->table(
- $this->table,
- function ($table) {
- $table->string('code')->nullable()->change();
- }
- );
- } catch (\Exception $e) {
- }
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2017_01_31_311101_fix_agent_name.php b/vendor/pragmarx/tracker/src/migrations/2017_01_31_311101_fix_agent_name.php
deleted file mode 100644
index ad7ad1b9e..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2017_01_31_311101_fix_agent_name.php
+++ /dev/null
@@ -1,65 +0,0 @@
-builder->table(
- $this->table,
- function ($table) {
- $table->dropUnique('tracker_agents_name_unique');
- }
- );
-
- $this->builder->table(
- $this->table,
- function ($table) {
- $table->mediumText('name')->change();
- }
- );
-
- $this->builder->table(
- $this->table,
- function ($table) {
- $table->unique('id', 'tracker_agents_name_unique'); // this is a dummy index
- }
- );
- } catch (\Exception $e) {
- dd($e->getMessage());
- }
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- try {
- $this->builder->table(
- $this->table,
- function ($table) {
- $table->string('name', 255)->change();
- $table->unique('name');
- }
- );
- } catch (\Exception $e) {
- }
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2017_06_20_311102_add_agent_name_hash.php b/vendor/pragmarx/tracker/src/migrations/2017_06_20_311102_add_agent_name_hash.php
deleted file mode 100644
index 1235f4f93..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2017_06_20_311102_add_agent_name_hash.php
+++ /dev/null
@@ -1,70 +0,0 @@
-builder->table(
- $this->table,
- function ($table) {
- $table->dropUnique('tracker_agents_name_unique');
-
- $table->string('name_hash', 65)->nullable();
- }
- );
-
- Agent::all()->each(function ($agent) {
- $agent->name_hash = hash('sha256', $agent->name);
-
- $agent->save();
- });
-
- $this->builder->table(
- $this->table,
- function ($table) {
- $table->unique('name_hash');
- }
- );
- } catch (\Exception $e) {
- dd($e->getMessage());
- }
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- try {
- $this->builder->table(
- $this->table,
- function ($table) {
- $table->dropUnique('tracker_agents_name_hash_unique');
-
- $table->dropColumn('name_hash');
-
- $table->mediumText('name')->unique()->change();
- }
- );
- } catch (\Exception $e) {
- }
- }
-}
diff --git a/vendor/pragmarx/tracker/src/migrations/2017_12_13_150000_fix_query_arguments.php b/vendor/pragmarx/tracker/src/migrations/2017_12_13_150000_fix_query_arguments.php
deleted file mode 100644
index 71ced3067..000000000
--- a/vendor/pragmarx/tracker/src/migrations/2017_12_13_150000_fix_query_arguments.php
+++ /dev/null
@@ -1,51 +0,0 @@
-builder->table(
- $this->table,
- function ($table) {
- $table->string('value')->nullable()->change();
- }
- );
- } catch (\Exception $e) {
- dd($e->getMessage());
- }
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function migrateDown()
- {
- try {
- $this->builder->table(
- $this->table,
- function ($table) {
- $table->string('value')->change();
- }
- );
- } catch (\Exception $e) {
- dd($e->getMessage());
- }
- }
-}
diff --git a/vendor/pragmarx/tracker/src/views/_dataTable.blade.php b/vendor/pragmarx/tracker/src/views/_dataTable.blade.php
deleted file mode 100644
index ce0ef9e5b..000000000
--- a/vendor/pragmarx/tracker/src/views/_dataTable.blade.php
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
-
-
diff --git a/vendor/pragmarx/tracker/src/views/_datatables.blade.php b/vendor/pragmarx/tracker/src/views/_datatables.blade.php
deleted file mode 100644
index 3d5e427f3..000000000
--- a/vendor/pragmarx/tracker/src/views/_datatables.blade.php
+++ /dev/null
@@ -1,15 +0,0 @@
-$(document).ready(function() {
- $('#table_div').dataTable( {
- "processing": true,
- "serverSide": true,
- "bFilter": false,
- "ajax": "{{$datatables_ajax_route}}",
- "columnDefs": [ {
- "targets": "_all",
- "defaultContent": ""
- } ],
- "columns": [
-
- ]
- } );
-} );
diff --git a/vendor/pragmarx/tracker/src/views/_summaryPiechart.blade.php b/vendor/pragmarx/tracker/src/views/_summaryPiechart.blade.php
deleted file mode 100644
index c6b444ca5..000000000
--- a/vendor/pragmarx/tracker/src/views/_summaryPiechart.blade.php
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
diff --git a/vendor/pragmarx/tracker/src/views/errors.blade.php b/vendor/pragmarx/tracker/src/views/errors.blade.php
deleted file mode 100644
index ecde8abb7..000000000
--- a/vendor/pragmarx/tracker/src/views/errors.blade.php
+++ /dev/null
@@ -1,22 +0,0 @@
-@extends($stats_layout)
-
-@section('page-contents')
-
-@stop
-
-@section('inline-javascript')
- @include(
- 'pragmarx/tracker::_datatables',
- array(
- 'datatables_ajax_route' => route('tracker.stats.api.errors'),
- 'datatables_columns' =>
- '
- { "data" : "error.code", "title" : "'.trans('tracker::tracker.code').'", "orderable": true, "searchable": false },
- { "data" : "session.uuid", "title" : "'.trans('tracker::tracker.session').'", "orderable": true, "searchable": false },
- { "data" : "error.message", "title" : "'.trans('tracker::tracker.message').'", "orderable": true, "searchable": false },
- { "data" : "path.path", "title" : "'.trans('tracker::tracker.path').'", "orderable": true, "searchable": false },
- { "data" : "updated_at", "title" : "'.trans('tracker::tracker.when').'", "orderable": true, "searchable": false },
- '
- )
- )
-@stop
diff --git a/vendor/pragmarx/tracker/src/views/events.blade.php b/vendor/pragmarx/tracker/src/views/events.blade.php
deleted file mode 100644
index d97d6d2c2..000000000
--- a/vendor/pragmarx/tracker/src/views/events.blade.php
+++ /dev/null
@@ -1,19 +0,0 @@
-@extends($stats_layout)
-
-@section('page-contents')
-
-@stop
-
-@section('inline-javascript')
- @include(
- 'pragmarx/tracker::_datatables',
- array(
- 'datatables_ajax_route' => route('tracker.stats.api.events'),
- 'datatables_columns' =>
- '
- { "data" : "name", "title" : "'.trans('tracker::tracker.name').'", "orderable": true, "searchable": false },
- { "data" : "total", "title" : "'.trans('tracker::tracker.no_occurrences_in_period').'", "orderable": true, "searchable": false },
- '
- )
- )
-@stop
diff --git a/vendor/pragmarx/tracker/src/views/html.blade.php b/vendor/pragmarx/tracker/src/views/html.blade.php
deleted file mode 100644
index 4db44e8a7..000000000
--- a/vendor/pragmarx/tracker/src/views/html.blade.php
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
-
-
-
-
- @lang("tracker::tracker.tracker_title")
-
-
-
- @yield('required-scripts-top')
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- @yield('body')
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- @yield('required-scripts-bottom')
-
-
-
-
-
diff --git a/vendor/pragmarx/tracker/src/views/index.blade.php b/vendor/pragmarx/tracker/src/views/index.blade.php
deleted file mode 100644
index 4654967d9..000000000
--- a/vendor/pragmarx/tracker/src/views/index.blade.php
+++ /dev/null
@@ -1,9 +0,0 @@
-@extends($stats_layout)
-
-@section('page-contents')
-
-@stop
-
-@section('inline-javascript')
- @include('pragmarx/tracker::_datatables', $datatables_data)
-@stop
diff --git a/vendor/pragmarx/tracker/src/views/layout.blade.php b/vendor/pragmarx/tracker/src/views/layout.blade.php
deleted file mode 100644
index ddae5b576..000000000
--- a/vendor/pragmarx/tracker/src/views/layout.blade.php
+++ /dev/null
@@ -1,89 +0,0 @@
-@extends('pragmarx/tracker::html')
-
-@section('body')
-
-
-
-
-
-
-
-
-
-
- @yield('page-contents')
-
-
-
-
-
- @yield('page-secondary-contents')
-
-
-
-
-
-
-
-
-
-@stop
diff --git a/vendor/pragmarx/tracker/src/views/log.blade.php b/vendor/pragmarx/tracker/src/views/log.blade.php
deleted file mode 100644
index 61de89a36..000000000
--- a/vendor/pragmarx/tracker/src/views/log.blade.php
+++ /dev/null
@@ -1,28 +0,0 @@
-@extends($stats_layout)
-
-@section('page-contents')
-
-@stop
-
-@section('inline-javascript')
- @include(
- 'pragmarx/tracker::_datatables',
- array(
- 'datatables_ajax_route' => route('tracker.stats.api.log', array('uuid' => $uuid)),
- 'datatables_columns' =>
- '
- { "data" : "method", "title" : "'.trans('tracker::tracker.method').'", "orderable": true, "searchable": false },
- { "data" : "route_name", "title" : "'.trans('tracker::tracker.route_name_action').'", "orderable": true, "searchable": false },
- { "data" : "route", "title" : "'.trans('tracker::tracker.route').'", "orderable": true, "searchable": false },
- { "data" : "query", "title" : "'.trans('tracker::tracker.query').'", "orderable": true, "searchable": false },
- { "data" : "is_ajax", "title" : "'.trans('tracker::tracker.is_ajax').'", "orderable": true, "searchable": false },
- { "data" : "is_secure", "title" : "'.trans('tracker::tracker.is_secure').'", "orderable": true, "searchable": false },
- { "data" : "is_json", "title" : "'.trans('tracker::tracker.is_json').'", "orderable": true, "searchable": false },
- { "data" : "wants_json", "title" : "'.trans('tracker::tracker.wants_json').'", "orderable": true, "searchable": false },
- { "data" : "error", "title" : "'.trans('tracker::tracker.error_q').'", "orderable": true, "searchable": false },
- { "data" : "created_at", "title" : "'.trans('tracker::tracker.created_at').'", "orderable": true, "searchable": false },
- '
- )
- )
-@stop
-
diff --git a/vendor/pragmarx/tracker/src/views/message.blade.php b/vendor/pragmarx/tracker/src/views/message.blade.php
deleted file mode 100644
index c68ae3b0d..000000000
--- a/vendor/pragmarx/tracker/src/views/message.blade.php
+++ /dev/null
@@ -1,13 +0,0 @@
-@extends('pragmarx/tracker::html')
-
-@section('body')
-
-@stop
diff --git a/vendor/pragmarx/tracker/src/views/screenshots/errors.png b/vendor/pragmarx/tracker/src/views/screenshots/errors.png
deleted file mode 100644
index a62ea32e7..000000000
Binary files a/vendor/pragmarx/tracker/src/views/screenshots/errors.png and /dev/null differ
diff --git a/vendor/pragmarx/tracker/src/views/screenshots/events.png b/vendor/pragmarx/tracker/src/views/screenshots/events.png
deleted file mode 100644
index 47add8069..000000000
Binary files a/vendor/pragmarx/tracker/src/views/screenshots/events.png and /dev/null differ
diff --git a/vendor/pragmarx/tracker/src/views/screenshots/summary.png b/vendor/pragmarx/tracker/src/views/screenshots/summary.png
deleted file mode 100644
index 9938f5897..000000000
Binary files a/vendor/pragmarx/tracker/src/views/screenshots/summary.png and /dev/null differ
diff --git a/vendor/pragmarx/tracker/src/views/screenshots/users.png b/vendor/pragmarx/tracker/src/views/screenshots/users.png
deleted file mode 100644
index 734f2cc7c..000000000
Binary files a/vendor/pragmarx/tracker/src/views/screenshots/users.png and /dev/null differ
diff --git a/vendor/pragmarx/tracker/src/views/screenshots/visits.png b/vendor/pragmarx/tracker/src/views/screenshots/visits.png
deleted file mode 100644
index 202bf682d..000000000
Binary files a/vendor/pragmarx/tracker/src/views/screenshots/visits.png and /dev/null differ
diff --git a/vendor/pragmarx/tracker/src/views/summary.blade.php b/vendor/pragmarx/tracker/src/views/summary.blade.php
deleted file mode 100644
index 91b1023dc..000000000
--- a/vendor/pragmarx/tracker/src/views/summary.blade.php
+++ /dev/null
@@ -1,94 +0,0 @@
-@extends($stats_layout)
-
-@section('page-contents')
-
-@stop
-
-@section('page-secondary-contents')
-
-
-
-
-
@lang('tracker::tracker.page_views_by_country')
-
-
-
-
-
-
- @include('pragmarx/tracker::_summaryPiechart')
-@stop
-
-@section('inline-javascript')
- jQuery(function()
- {
- console.log(jQuery('#pageViews'));
-
- var pageViewsLine = Morris.Line({
- element: 'pageViewsLine',
- parseTime:false,
- grid: true,
- data: [{'date': 0, 'total': 0}],
- xkey: 'date',
- ykeys: ['total'],
- labels: ['Page Views']
- });
-
- jQuery.ajax({
- type: "GET",
- url: "{{ route('tracker.stats.api.pageviews') }}",
- data: { }
- })
- .done(function( data ) {
- console.log(data);
- pageViewsLine.setData(formatDates(data));
- });
-
- var convertToPlottableData = function(data)
- {
- plottable = [];
-
- jsondata = JSON.parse(data);
-
- for(key in jsondata)
- {
- plottable[key] = {
- label: jsondata[key].label,
- data: jsondata[key].value
- }
- }
-
- return plottable;
- };
-
- var formatDates = function(data)
- {
- data = JSON.parse(data);
-
- for(key in data)
- {
- if (data[key].date !== 'undefined')
- {
- data[key].date = moment(data[key].date, "YYYY-MM-DD").format('dddd[,] MMM Do');
- }
- }
-
- return data;
- };
- });
-@stop
-
-@section('required-scripts-top')
-
-
-
-
-
-
-
-
-
-
-@stop
diff --git a/vendor/pragmarx/tracker/src/views/users.blade.php b/vendor/pragmarx/tracker/src/views/users.blade.php
deleted file mode 100644
index 162d6a2bc..000000000
--- a/vendor/pragmarx/tracker/src/views/users.blade.php
+++ /dev/null
@@ -1,19 +0,0 @@
-@extends($stats_layout)
-
-@section('page-contents')
-
-@stop
-
-@section('inline-javascript')
- @include(
- 'pragmarx/tracker::_datatables',
- array(
- 'datatables_ajax_route' => route('tracker.stats.api.users'),
- 'datatables_columns' =>
- '
- { "data" : "user_id", "title" : "'.trans('tracker::tracker.email').'", "orderable": true, "searchable": false },
- { "data" : "updated_at", "title" : "'.trans('tracker::tracker.last_seen').'", "orderable": true, "searchable": false },
- '
- )
- )
-@stop
diff --git a/vendor/pragmarx/tracker/tests/.gitkeep b/vendor/pragmarx/tracker/tests/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/vendor/pragmarx/tracker/upgrading.md b/vendor/pragmarx/tracker/upgrading.md
deleted file mode 100644
index 201912737..000000000
--- a/vendor/pragmarx/tracker/upgrading.md
+++ /dev/null
@@ -1,154 +0,0 @@
-# Laravel Stats Tracker Upgrading Guide
-
-## from 2.0.x to 3.0.0
-
-Add cache_enabled key to your config\tracker.php:
-
- /*
- * Enable cache?
- */
- 'cache_enabled' => true,
-
-## from 2.0.x to 2.0.4 or 2.0.9
-
-#### Run Artisan tracker:tables command
-
- php artisan tracker:tables
-
-#### Migrate
-
- php artisan migrate
-
-#### If you already have executed and get the error "1215 Cannot add foreign key constraint"
-
-You'll have to upgrade your migrations:
-
-1 - Rollback the last one: `php artisan tracker:tables`
-
-2 - Delete the following files from your database\migrations:
-
- 2015_11_23_311097_create_tracker_languages_table.php
- 2015_11_23_311098_add_language_id_column_to_sessions.php
- 2015_11_23_311099_add_tracker_language_foreign_key_to_sessions.php
- 2015_11_23_311100_add_nullable_to_tracker_error.php
-
-3 - Run `php artisan tracker:tables` to upgrade them
-
-4 - Migrate: `php artisan migrate`
-
-## to 0.6.0
-
-A [massive update happened at StartBootstrap](https://github.com/IronSummitMedia/startbootstrap/commit/66716399cf8eb5109498d41a2dad95a093c18f2b), you need to download and unzip the admin frontend again:
-
-```
- rm -rf public/templates/sb-admin-v2
- wget --output-document=/tmp/sba2.zip http://startbootstrap.com/downloads/sb-admin-2.zip
- unzip /tmp/sba2.zip -d public/templates/
-```
-
-## to 0.5.1
-
-#### As `tracker_route_paths.route_id` column was wrongly set to string, you need to change it to int8 or bigint. This is how you do this
-
-##### In PostgreSQL
-```
-ALTER TABLE "tracker_route_paths" ALTER COLUMN route_id TYPE BIGINT
- USING CAST(CASE route_id WHEN '' THEN NULL ELSE route_id END AS BIGINT)
-```
-
-##### In MySQL
-```
-ALTER TABLE tracker_route_paths CHANGE route_id route_id bigint unsigned NULL;
-```
-
-#### Add the following keys to your `app/config/packages/pragmarx/tracker/config.php`:
-
-```
-'log_exceptions' => true,
-
-'authenticated_user_username_column' => 'email',
-
-'do_not_track_routes' => array(
- 'tracker.stats.*',
-),
-```
-
-## to 0.5.0
-
-#### Download sb-panel v2, if you want to access the new Stats Panel:
-
-```
-wget --output-document=/tmp/sba2.zip http://startbootstrap.com/downloads/sb-admin-v2.zip
-unzip /tmp/sba2.zip -d public/templates/
-```
-
-#### Add the following keys to your `app/config/packages/pragmarx/tracker/config.php`:
-
-```
-/**
- * Enable the Stats Panel?
- */
-'stats_panel_enabled' => false,
-
-/**
- * Stats Panel routes before filter
- *
- * You better drop an 'auth' filter here.
- */
-'stats_routes_before_filter' => '',
-
-/**
- * Stats Panel template path
- */
-'stats_template_path' => '/templates/sb-admin-v2',
-
-/**
- * Stats Panel base uri.
- *
- * If your site url is http://wwww.mysite.com, then your stats page will be:
- *
- * http://wwww.mysite.com/stats
- *
- */
-'stats_base_uri' => 'stats',
-
-/**
- * Stats Panel layout view
- */
-'stats_layout' => 'pragmarx/tracker::layout',
-
-/**
- * Stats Panel controllers namespace
- */
-'stats_controllers_namespace' => 'PragmaRX\Tracker\Vendor\Laravel\Controllers',
-```
-
-#### The Stats Panel must be enabled in your config file
-
-```
-'stats_panel_enabled' => true,
-```
-
-## to 0.4.0
-
-#### Add the following keys to your `app/config/packages/pragmarx/tracker/config.php`:
-
-```
-'log_geoip' => true,
-'log_user_agents' => true,
-'log_users' => true,
-'log_devices' => true,
-'log_referers' => true,
-'log_paths' => true,
-'log_queries' => true,
-'log_routes' => true,
-```
-
-#### On `tracker_sessions` table, alter columns `device_id` and `agent_id` to be nullable.
-#### On `tracker_log` table, alter column `path_id` to be nullable.
-
-## to 0.3.2
-
-- Add a is_robot boolean column to: `ALTER TABLE tracker_sessions ADD is_robot BOOL;`
-- Add `'do_not_track_robots' => true or false,` to `tracker\config.php`.
-- Change `tracker_events_log.class_id` to be a nullable column.
diff --git a/vendor/ramsey/uuid/CHANGELOG.md b/vendor/ramsey/uuid/CHANGELOG.md
index 878e7925e..f2f1548e2 100644
--- a/vendor/ramsey/uuid/CHANGELOG.md
+++ b/vendor/ramsey/uuid/CHANGELOG.md
@@ -21,12 +21,21 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
### Security
+## [3.9.2] - 2019-12-17
+
+### Fixed
+
+* Check whether files returned by `/sys/class/net/*/address` are readable
+ before attempting to read them. This avoids a PHP warning that was being
+ emitted on hosts that do not grant permission to read these files.
+
+
## [3.9.1] - 2019-12-01
### Fixed
* Fix `RandomNodeProvider` behavior on 32-bit systems. The `RandomNodeProvider`
- was converting a 6-byte string to a a decimal number, which is a 48-bit,
+ was converting a 6-byte string to a decimal number, which is a 48-bit,
unsigned integer. This caused problems on 32-bit systems and has now been
resolved.
@@ -51,7 +60,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
### Deprecated
-These will be removed in version ramsey/uuid version 4.0.0:
+These will be removed in ramsey/uuid version 4.0.0:
* `MtRandGenerator`, `OpenSslGenerator`, and `SodiumRandomGenerator` are
deprecated in favor of using the default `RandomBytesGenerator`.
@@ -582,7 +591,8 @@ versions leading up to this release.*
[ramsey/uuid-doctrine]: https://github.com/ramsey/uuid-doctrine
[ramsey/uuid-console]: https://github.com/ramsey/uuid-console
-[unreleased]: https://github.com/ramsey/uuid/compare/3.9.1...HEAD
+[unreleased]: https://github.com/ramsey/uuid/compare/3.9.2...HEAD
+[3.9.2]: https://github.com/ramsey/uuid/compare/3.9.1...3.9.2
[3.9.1]: https://github.com/ramsey/uuid/compare/3.9.0...3.9.1
[3.9.0]: https://github.com/ramsey/uuid/compare/3.8.0...3.9.0
[3.8.0]: https://github.com/ramsey/uuid/compare/3.7.3...3.8.0
diff --git a/vendor/ramsey/uuid/composer.json b/vendor/ramsey/uuid/composer.json
index 5319644fe..81da625ca 100644
--- a/vendor/ramsey/uuid/composer.json
+++ b/vendor/ramsey/uuid/composer.json
@@ -21,7 +21,7 @@
}
],
"require": {
- "php": "^5.4 | ^7",
+ "php": "^5.4 | ^7 | ^8",
"ext-json": "*",
"paragonie/random_compat": "^1 | ^2 | 9.99.99",
"symfony/polyfill-ctype": "^1.8"
@@ -30,13 +30,13 @@
"codeception/aspect-mock": "^1 | ^2",
"doctrine/annotations": "^1.2",
"goaop/framework": "1.0.0-alpha.2 | ^1 | ^2.1",
- "jakub-onderka/php-parallel-lint": "^0.9.0",
- "mockery/mockery": "^0.9.9",
+ "jakub-onderka/php-parallel-lint": "^1",
+ "mockery/mockery": "^0.9.11 | ^1",
"moontoast/math": "^1.1",
"paragonie/random-lib": "^2",
"php-mock/php-mock-phpunit": "^0.3 | ^1.1",
"phpunit/phpunit": "^4.8 | ^5.4 | ^6.5",
- "squizlabs/php_codesniffer": "^2.3"
+ "squizlabs/php_codesniffer": "^3.5"
},
"suggest": {
"ext-ctype": "Provides support for PHP Ctype functions",
@@ -76,17 +76,11 @@
"lint": "parallel-lint src tests",
"phpcs": "phpcs src tests --standard=psr2 -sp --colors",
"phpunit": "phpunit --verbose --colors=always",
- "phpunit-ci": "phpunit --verbose --coverage-clover build/logs/clover.xml",
"phpunit-coverage": "phpunit --verbose --colors=always --coverage-html build/coverage",
"test": [
"@lint",
"@phpcs",
"@phpunit"
- ],
- "test-ci": [
- "@lint",
- "@phpcs",
- "@phpunit-ci"
]
},
"support": {
diff --git a/vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php b/vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php
index e3c080199..57015133a 100644
--- a/vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php
+++ b/vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php
@@ -102,8 +102,11 @@ class SystemNodeProvider implements NodeProviderInterface
return false;
}
+ $macs = [];
array_walk($addressPaths, function ($addressPath) use (&$macs) {
- $macs[] = file_get_contents($addressPath);
+ if (is_readable($addressPath)) {
+ $macs[] = file_get_contents($addressPath);
+ }
});
$macs = array_map('trim', $macs);
diff --git a/vendor/snowplow/referer-parser/.gitignore b/vendor/snowplow/referer-parser/.gitignore
deleted file mode 100644
index ea8093a79..000000000
--- a/vendor/snowplow/referer-parser/.gitignore
+++ /dev/null
@@ -1,17 +0,0 @@
-/vendor/
-/composer.lock
-php/.idea
-
-# Ruby
-ruby/.idea/.name
-ruby/.idea/.rakeTasks
-ruby/.idea/encodings.xml
-ruby/.idea/misc.xml
-ruby/.idea/modules.xml
-ruby/.idea/ruby.iml
-ruby/.idea/scopes/scope_settings.xml
-ruby/.idea/vcs.xml
-ruby/.idea/workspace.xml
-
-# Vagrant
-.vagrant
diff --git a/vendor/snowplow/referer-parser/.travis.yml b/vendor/snowplow/referer-parser/.travis.yml
deleted file mode 100644
index 04c842ef8..000000000
--- a/vendor/snowplow/referer-parser/.travis.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-language: scala
-before_script: "cd java-scala"
-scala:
- - 2.9.1
-jdk:
- - oraclejdk7
- - openjdk6
- - openjdk7
diff --git a/vendor/snowplow/referer-parser/README.md b/vendor/snowplow/referer-parser/README.md
deleted file mode 100644
index 3cd568a1f..000000000
--- a/vendor/snowplow/referer-parser/README.md
+++ /dev/null
@@ -1,336 +0,0 @@
-# referer-parser
-
-Java/Scala: [](https://travis-ci.org/snowplow/referer-parser)
-
-referer-parser is a multi-language library for extracting marketing attribution data (such as search terms) from referer URLs, inspired by the [ua-parser] [ua-parser] project (an equivalent library for user agent parsing).
-
-referer-parser is a core component of [Snowplow] [snowplow], the open-source web-scale analytics platform powered by Hadoop and Redshift.
-
-_Note that we always use the original HTTP misspelling of 'referer' (and thus 'referal') in this project - never 'referrer'._
-
-## Maintainers
-
-* Java/Scala: [Snowplow Analytics Ltd] [snowplow-analytics]
-* Ruby: [Kelley Reynolds] [kreynolds] at Inside Systems, Inc
-* Python: [Don Spaulding] [donspaulding]
-* node.js (JavaScript): [Martin Katrenik] [mkatrenik]
-* .NET (C#): [Sepp Wijnands] [swijnands] at [iPerform Software] [iperform]
-* PHP: [Lars Strojny] [lstrojny]
-* Go: [Thomas Sileo] [tsileo]
-* `referers.yml`: [Snowplow Analytics] [snowplow-analytics]
-
-## Usage: Java
-
-The Java version of this library uses the updated API, and identifies search, social, webmail, internal and unknown referers:
-
-```java
-import com.snowplowanalytics.refererparser.Parser;
-
-...
-
-String refererUrl = "http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari";
-String pageUrl = "http:/www.psychicbazaar.com/shop"; // Our current URL
-
-Parser refererParser = new Parser();
-Referer r = refererParser.parse(refererUrl, pageUrl);
-
-System.out.println(r.medium); // => "search"
-System.out.println(r.source); // => "Google"
-System.out.println(r.term); // => "gateway oracle cards denise linn"
-```
-
-For more information, please see the Java/Scala [README] [java-scala-readme].
-
-## Usage: Scala
-
-The Scala version of this library uses the updated API, and identifies search, social, webmail, internal and unknown referers:
-
-```scala
-val refererUrl = "http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari"
-val pageUrl = "http:/www.psychicbazaar.com/shop" // Our current URL
-
-import com.snowplowanalytics.refererparser.scala.Parser
-for (r <- Parser.parse(refererUrl, pageUrl)) {
- println(r.medium) // => "search"
- for (s <- r.source) {
- println(s) // => "Google"
- }
- for (t <- r.term) {
- println(t) // => "gateway oracle cards denise linn"
- }
-}
-```
-
-You can also provide a list of domains which should be considered internal:
-
-```scala
-val refererUrl = "http://www.subdomain1.snowplowanalytics.com"
-val pageUrl = "http://www.snowplowanalytics.com"
-val internalDomains = List(
- "www.subdomain1.snowplowanalytics.com", "www.subdomain2.snowplowanalytics.com"
-)
-
-import com.snowplowanalytics.refererparser.scala.Parser
-
-for (r <- Parser.parse(refererUrl, pageUrl, internalDomains)) {
- println(r.medium) // => "internal"
- for (s <- r.source) {
- println(s) // => null
- }
- for (t <- r.term) {
- println(t) // => null
- }
-}
-```
-
-For more information, please see the Java/Scala [README] [java-scala-readme].
-
-## Usage: Ruby
-
-The Ruby version of this library uses the updated API:
-
-```ruby
-require 'referer-parser'
-
-parser = RefererParser::Parser.new
-
-parser.parse('http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari')
- # => {
- :known=>true,
- :uri=>"http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari",
- :source=>"Google",
- :medium=>"search",
- :term=>"gateway oracle cards denise linn"
- }
-```
-
-For more information, please see the Ruby [README] [ruby-readme].
-
-## Usage: Python
-
-Create a new instance of a Referer object by passing in the url you want to parse:
-
-```python
-from referer_parser import Referer
-
-referer_url = 'http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari'
-
-r = Referer(referer_url)
-```
-
-The `r` variable now holds a Referer instance. The important attributes are:
-
-```python
-print(r.known) # True
-print(r.referer) # 'Google'
-print(r.medium) # 'search'
-print(r.search_parameter) # 'q'
-print(r.search_term) # 'gateway oracle cards denise linn'
-print(r.uri) # ParseResult(scheme='http', netloc='www.google.com', path='/search', params='', query='q=gateway+oracle+cards+denise+linn&hl=en&client=safari', fragment='')
-```
-
-Optionally, pass in the current URL as well, to handle internal referers
-
-```python
-from referer_parser import Referer
-
-referer_url = 'http://www.snowplowanalytics.com/about/team'
-curr_url = 'http://www.snowplowanalytics.com/account/profile'
-
-r = Referer(referer_url, curr_url)
-```
-
-For more information, please see the Python [README] [python-readme].
-
-## Usage: node.js
-
-The node.js (JavaScript) version of this library uses a hybrid of the new and old API, and identifies search, social, webmail, internal and unknown referers:
-
-Create a new instance of a Referer object by passing in the url you want to parse:
-
-```js
-var Referer = require('referer-parser')
-
-referer_url = 'http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari'
-
-var r = new Referer(referer_url)
-```
-
-The `r` variable now holds a Referer instance.
-
-Optionally, pass in the current URL as well, to handle internal referers
-
-```js
-var Referer = require('referer-parser')
-
-var referer_url = 'http://www.snowplowanalytics.com/about/team'
-var current_url = 'http://www.snowplowanalytics.com/account/profile'
-
-var r = Referer(referer_url, current_url)
-```
-
-For more information, please see the node.js [README] [nodejs-readme].
-
-## Usage: .NET
-
-The .NET (C#) version of this library uses the updated API, and identifies search, social, webmail, internal and unknown referers:
-
-```C#
-using RefererParser;
-
-...
-
-string refererUrl = "http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari";
-string pageUrl = "http:/www.psychicbazaar.com/shop"; // Our current URL
-
-var referer = Parser.Parse(new Uri(refererUrl), pageUrl);
-
-Console.WriteLine(r.Medium); // => "Search"
-Console.WriteLine(r.Source); // => "Google"
-Console.WriteLine(r.Term); // => "gateway oracle cards denise linn"
-```
-
-For more information, please see the .NET [README] [dotnet-readme].
-
-## Usage: PHP
-
-The PHP version of this library uses the updated API, and identifies search, social, webmail, internal and unknown referers:
-
-```php
-use Snowplow\RefererParser\Parser;
-
-$parser = new Parser();
-$referer = $parser->parse(
- 'http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari',
- 'http:/www.psychicbazaar.com/shop'
-);
-
-if ($referer->isKnown()) {
- echo $referer->getMedium(); // "Search"
- echo $referer->getSource(); // "Google"
- echo $referer->getTerm(); // "gateway oracle cards denise linn"
-}
-```
-
-For more information, please see the PHP [README] [php-readme].
-
-## Usage: Go
-
-The Go version of this library uses the updated API:
-
-```go
-package main
-
-import (
- "log"
-
- "github.com/snowplow/referer-parser/go"
-)
-
-func main() {
- referer_url := "http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari"
- r := refererparser.Parse(referer_url)
-
- log.Printf("Known:%v", r.Known)
- log.Printf("Referer:%v", r.Referer)
- log.Printf("Medium:%v", r.Medium)
- log.Printf("Search parameter:%v", r.SearchParameter)
- log.Printf("Search term:%v", r.SearchTerm)
- log.Printf("Host:%v", r.URI)
-}
-
-```
-
-For more information, please see the Go [README] [go-readme]
-
-## referers.yml
-
-referer-parser identifies whether a URL is a known referer or not by checking it against the [`referers.yml`] [referers-yml] file; the intention is that this YAML file is reusable as-is by every language-specific implementation of referer-parser.
-
-The file is broken out into sections for the different mediums that we support:
-
-* `unknown` for when we know the source, but not the medium
-* `email` for webmail providers
-* `social` for social media services
-* `search` for search engines
-
-Then within each section, we list each known provider (aka `source`) by name, and then which domains each provider uses. For search engines, we also list the parameters used in the search engine URL to identify the search `term`. For example:
-
-```yaml
-Google: # Name of search engine referer
- parameters:
- - 'q' # First parameter used by Google
- - 'p' # Alternative parameter used by Google
- domains:
- - google.co.uk # One domain used by Google
- - google.com # Another domain used by Google
- - ...
-```
-
-The number of referers and the domains they use is constantly growing - we need to keep `referers.yml` up-to-date, and hope that the community will help!
-
-## Contributing
-
-We welcome contributions to referer-parser:
-
-1. **New search engines and other referers** - if you notice a search engine, social network or other site missing from `referers.yml`, please fork the repo, add the missing entry and submit a pull request
-2. **Ports of referer-parser to other languages** - we welcome ports of referer-parser to new programming languages (e.g. Lua, Go, Haskell, C)
-3. **Bug fixes, feature requests etc** - much appreciated!
-
-**Please sign the [Snowplow CLA] [cla] before making pull requests.**
-
-## Support
-
-General support for referer-parser is handled by the team at Snowplow Analytics Ltd.
-
-You can contact the Snowplow Analytics team through any of the [channels listed on their wiki] [talk-to-us].
-
-## Copyright and license
-
-`referers.yml` is based on [Piwik's] [piwik] [`SearchEngines.php`] [piwik-search-engines] and [`Socials.php`] [piwik-socials], copyright 2012 Matthieu Aubry and available under the [GNU General Public License v3] [gpl-license].
-
-The Ruby implementation is copyright 2014 Inside Systems, Inc and is available under the [Apache License, Version 2.0] [apache-license].
-
-The Java/Scala port is copyright 2012-2014 [Snowplow Analytics Ltd] [snowplow-analytics] and is available under the [Apache License, Version 2.0] [apache-license].
-
-The Python port is copyright 2012-2014 [Don Spaulding] [donspaulding] and is available under the [Apache License, Version 2.0] [apache-license].
-
-The node.js (JavaScript) port is copyright 2013-2014 [Martin Katrenik] [mkatrenik] and is available under the [Apache License, Version 2.0] [apache-license].
-
-The .NET (C#) port is copyright 2013-2014 [iPerform Software] [iperform] and is available under the [Apache License, Version 2.0] [apache-license].
-
-The PHP port is copyright 2013-2014 [Lars Strojny] [tsileo] and is available under the [MIT License] [mit-license].
-
-The Go port is copyright 2014 [Thomas Sileo] [lstrojny] and is available under the [MIT License] [mit-license].
-
-[ua-parser]: https://github.com/tobie/ua-parser
-
-[snowplow]: https://github.com/snowplow/snowplow
-[snowplow-analytics]: http://snowplowanalytics.com
-[donspaulding]: https://github.com/donspaulding
-[swijnands]: https://github.com/swijnands
-[mkatrenik]: https://github.com/mkatrenik
-[iperform]: http://www.iperform.nl/
-[lstrojny]: https://github.com/lstrojny
-[tsileo]: https://github.com/tsileo
-[kreynolds]: https://github.com/kreynolds
-
-[piwik]: http://piwik.org
-[piwik-search-engines]: https://github.com/piwik/piwik/blob/master/core/DataFiles/SearchEngines.php
-[piwik-socials]: https://github.com/piwik/piwik/blob/master/core/DataFiles/Socials.php
-
-[ruby-readme]: https://github.com/snowplow/referer-parser/blob/master/ruby/README.md
-[java-scala-readme]: https://github.com/snowplow/referer-parser/blob/master/java-scala/README.md
-[python-readme]: https://github.com/snowplow/referer-parser/blob/master/python/README.md
-[nodejs-readme]: https://github.com/snowplow/referer-parser/blob/master/nodejs/README.md
-[dotnet-readme]: https://github.com/snowplow/referer-parser/blob/master/dotnet/README.md
-[php-readme]: https://github.com/snowplow/referer-parser/blob/master/php/README.md
-[go-readme]: https://github.com/snowplow/referer-parser/blob/master/go/README.md
-[referers-yml]: https://github.com/snowplow/referer-parser/blob/master/resources/referers.yml
-
-[talk-to-us]: https://github.com/snowplow/snowplow/wiki/Talk-to-us
-
-[apache-license]: http://www.apache.org/licenses/LICENSE-2.0
-[gpl-license]: http://www.gnu.org/licenses/gpl-3.0.html
-[mit-license]: http://opensource.org/licenses/MIT
-[cla]: https://github.com/snowplow/snowplow/wiki/CLA
diff --git a/vendor/snowplow/referer-parser/Vagrantfile b/vendor/snowplow/referer-parser/Vagrantfile
deleted file mode 100644
index 1bfb812b5..000000000
--- a/vendor/snowplow/referer-parser/Vagrantfile
+++ /dev/null
@@ -1,19 +0,0 @@
-Vagrant.configure("2") do |config|
-
- config.vm.box = "ubuntu/trusty64"
- config.vm.hostname = "referer-parser"
- config.ssh.forward_agent = true
-
- config.vm.provider :virtualbox do |vb|
- vb.name = Dir.pwd().split("/")[-1] + "-" + Time.now.to_f.to_i.to_s
- vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
- vb.customize [ "guestproperty", "set", :id, "--timesync-threshold", 10000 ]
- # Scala is our most memory-hungry library
- vb.memory = 5120
- end
-
- config.vm.provision :shell do |sh|
- sh.path = "vagrant/up.bash"
- end
-
-end
diff --git a/vendor/snowplow/referer-parser/composer.json b/vendor/snowplow/referer-parser/composer.json
deleted file mode 100644
index 0c467ca4f..000000000
--- a/vendor/snowplow/referer-parser/composer.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "name": "snowplow/referer-parser",
- "description": "Snowplow Refer(r)er parser for PHP",
- "require-dev": {
- "phpunit/phpunit": "3.*",
- "symfony/yaml": "*"
- },
- "suggest": {
- "symfony/yaml": "Support for YAML configuration file"
- },
- "license": "MIT",
- "authors": [
- {
- "name": "Lars Strojny",
- "email": "lars@strojny.net"
- }
- ],
- "autoload": {
- "psr-0": {
- "Snowplow\\RefererParser": "php/src/"
- }
- }
-}
diff --git a/vendor/snowplow/referer-parser/dotnet/.nuget/NuGet.Config b/vendor/snowplow/referer-parser/dotnet/.nuget/NuGet.Config
deleted file mode 100644
index 67f8ea046..000000000
--- a/vendor/snowplow/referer-parser/dotnet/.nuget/NuGet.Config
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/dotnet/.nuget/NuGet.exe b/vendor/snowplow/referer-parser/dotnet/.nuget/NuGet.exe
deleted file mode 100644
index cb3ed0367..000000000
Binary files a/vendor/snowplow/referer-parser/dotnet/.nuget/NuGet.exe and /dev/null differ
diff --git a/vendor/snowplow/referer-parser/dotnet/.nuget/NuGet.targets b/vendor/snowplow/referer-parser/dotnet/.nuget/NuGet.targets
deleted file mode 100644
index 46a1b6ced..000000000
--- a/vendor/snowplow/referer-parser/dotnet/.nuget/NuGet.targets
+++ /dev/null
@@ -1,133 +0,0 @@
-
-
-
- $(MSBuildProjectDirectory)\..\
-
-
- false
-
-
- false
-
-
- true
-
-
- false
-
-
-
-
-
-
-
-
-
-
- $([System.IO.Path]::Combine($(SolutionDir), ".nuget"))
- $([System.IO.Path]::Combine($(ProjectDir), "packages.config"))
-
-
-
-
- $(SolutionDir).nuget
- packages.config
-
-
-
-
- $(NuGetToolsPath)\NuGet.exe
- @(PackageSource)
-
- "$(NuGetExePath)"
- mono --runtime=v4.0.30319 $(NuGetExePath)
-
- $(TargetDir.Trim('\\'))
-
- -RequireConsent
- -NonInteractive
-
-
- $(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir "$(SolutionDir) "
- $(NuGetCommand) pack "$(ProjectPath)" -Properties Configuration=$(Configuration) $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols
-
-
-
- RestorePackages;
- $(BuildDependsOn);
-
-
-
-
- $(BuildDependsOn);
- BuildPackage;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/dotnet/LICENSE-2.0.txt b/vendor/snowplow/referer-parser/dotnet/LICENSE-2.0.txt
deleted file mode 100644
index 7a4a3ea24..000000000
--- a/vendor/snowplow/referer-parser/dotnet/LICENSE-2.0.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/dotnet/README.md b/vendor/snowplow/referer-parser/dotnet/README.md
deleted file mode 100644
index 551c9f9ea..000000000
--- a/vendor/snowplow/referer-parser/dotnet/README.md
+++ /dev/null
@@ -1,62 +0,0 @@
-# referer-parser .NET library
-
-This is the .NET implementation of [referer-parser] [referer-parser], the library for extracting attribution data from referer _(sic)_ URLs.
-
-The implementation uses the shared 'database' of known referers found in [`referers.yml`] [referers-yml].
-
-The .NET version of referer-parser is maintained by [Sepp Wijnands] [swijnands] at [iPerform Software] [iperform].
-
-## C\#
-
-### Usage
-
-Use referer-parser in C# like this:
-
-```C#
-using RefererParser;
-
-...
-
-string refererUrl = "http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari";
-string pageUrl = "http:/www.psychicbazaar.com/shop"; // Our current URL
-
-var referer = Parser.Parse(new Uri(refererUrl), pageUrl);
-
-Console.WriteLine(r.Medium); // => "Search"
-Console.WriteLine(r.Source); // => "Google"
-Console.WriteLine(r.Term); // => "gateway oracle cards denise linn"
-```
-
-### Installation
-
-A NuGet Package is available, under package id RefererParser.
-
-## Contributing
-
-1. Fork it
-2. Create your feature branch (`git checkout -b my-new-feature`)
-3. Commit your changes (`git commit -am 'Add some feature'`)
-4. Push to the branch (`git push origin my-new-feature`)
-5. Create new Pull Request
-
-## Copyright and license
-
-The referer-parser .NET (C#) library is copyright 2013 [iPerform Software] [iperform].
-
-Licensed under the [Apache License, Version 2.0] [license] (the "License");
-you may not use this software except in compliance with the License.
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-[snowplow]: https://github.com/snowplow/snowplow
-
-[referer-parser]: https://github.com/snowplow/referer-parser
-[referers-yml]: https://github.com/snowplow/referer-parser/blob/master/referers.yml
-
-[license]: http://www.apache.org/licenses/LICENSE-2.0
-[iperform]: http://www.iperform.nl/
-[swijnands]: https://github.com/swijnands
diff --git a/vendor/snowplow/referer-parser/dotnet/RefererParser.Tests/ParserTests.cs b/vendor/snowplow/referer-parser/dotnet/RefererParser.Tests/ParserTests.cs
deleted file mode 100644
index bad38f95e..000000000
--- a/vendor/snowplow/referer-parser/dotnet/RefererParser.Tests/ParserTests.cs
+++ /dev/null
@@ -1,130 +0,0 @@
-using Newtonsoft.Json.Linq;
-using RefererParser;
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.IO;
-using System.Linq;
-using System.Text;
-using Xunit;
-
-namespace RefererParser.Tests
-{
- public class ParserTests
- {
- [Fact]
- public void LoadCatalog()
- {
- Assert.True(Referers.Catalog["test"] == null);
- }
-
- [Fact]
- public void TestReferers()
- {
- var set = from test in JArray.Parse(File.ReadAllText(@"referer-tests.json"))
- let testObj = ((JObject)test)
- select new {
- Name = testObj["spec"].ToString(),
- Uri = testObj["uri"].ToString(),
- Medium = (RefererMedium)Enum.Parse(typeof(RefererMedium), testObj["medium"].ToString(), true),
- Source = testObj["source"].ToString(),
- Term = testObj["term"].ToString(),
- Known = testObj["known"].ToString(),
- };
-
- foreach (var sample in set)
- {
- var result = Parser.Parse(new Uri(sample.Uri), "www.snowplowanalytics.com");
- Assert.NotNull(result);
- Assert.Equal(sample.Medium, result.Medium);
- Assert.Equal(sample.Source, result.Source ?? string.Empty);
- Assert.Equal(sample.Term, result.Term ?? string.Empty);
- }
- }
-
- [Fact]
- public void TestUnknownReferer()
- {
- var set = new[]
- {
- new
- {
- Name = "Unknown referer #1",
- Url = "http://www.behance.net/gallery/psychicbazaarcom/2243272",
- Source = string.Empty,
- },
- new
- {
- Name = "Unknown referer #2",
- Url = "http://www.wishwall.me/home",
- Source = string.Empty,
- },
- new
- {
- Name = "Unknown referer #3",
- Url = "http://www.spyfu.com/domain.aspx?d=3897225171967988459",
- Source = string.Empty,
- },
- new
- {
- Name = "Unknown referer #4",
- Url = "http://seaqueen.wordpress.com/",
- Source = string.Empty,
- },
- new
- {
- Name = "Non-search Yahoo! site",
- Url = "http://finance.yahoo.com",
- Source = "Yahoo!",
- },
- };
-
- foreach (var sample in set)
- {
- var result = Parser.Parse(new Uri(sample.Url), "www.snowplowanalytics.com");
- Assert.NotNull(result);
- Assert.Equal(sample.Source, result.Source ?? string.Empty);
- }
- }
-
-
- [Fact]
- public void TestFalsePositivies()
- {
- var set = new[]
- {
- new
- {
- Name = "Unknown Google service",
- Url = "http://xxx.google.com",
- Medium = RefererMedium.Search,
- Source = "Google",
- Term = string.Empty
- },
- new
- {
- Name = "Unknown Yahoo! service",
- Url = "http://yyy.yahoo.com",
- Medium = RefererMedium.Search,
- Source = "Yahoo!",
- Term = string.Empty
- },
- new
- {
- Name = "Non-search Google Drive link",
- Url = "http://www.google.com/url?q=http://www.whatismyreferer.com/&sa=D&usg=ALhdy2_qs3arPmg7E_e2aBkj6K0gHLa5rQ",
- Medium = RefererMedium.Search,
- Source = "Google",
- Term = "http://www.whatismyreferer.com/",
- },
- };
-
- foreach (var sample in set)
- {
- var result = Parser.Parse(new Uri(sample.Url), "www.snowplowanalytics.com");
- Assert.NotNull(result);
- Assert.Equal(sample.Source, result.Source ?? string.Empty);
- }
- }
- }
-}
diff --git a/vendor/snowplow/referer-parser/dotnet/RefererParser.Tests/Properties/AssemblyInfo.cs b/vendor/snowplow/referer-parser/dotnet/RefererParser.Tests/Properties/AssemblyInfo.cs
deleted file mode 100644
index f0eb413e2..000000000
--- a/vendor/snowplow/referer-parser/dotnet/RefererParser.Tests/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("RefererParser.Tests")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("RefererParser.Tests")]
-[assembly: AssemblyCopyright("Copyright © 2013")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("e1c431b9-7ca1-47bc-ad91-9f8f76710e6d")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/vendor/snowplow/referer-parser/dotnet/RefererParser.Tests/RefererParser.Tests.csproj b/vendor/snowplow/referer-parser/dotnet/RefererParser.Tests/RefererParser.Tests.csproj
deleted file mode 100644
index 00377d7f1..000000000
--- a/vendor/snowplow/referer-parser/dotnet/RefererParser.Tests/RefererParser.Tests.csproj
+++ /dev/null
@@ -1,75 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {518417C7-060B-4C04-8F1B-ECEC85D443F0}
- Library
- Properties
- RefererParser.Tests
- RefererParser.Tests
- v4.0
- 512
- ..\
- true
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
-
- False
- ..\packages\Newtonsoft.Json.5.0.8\lib\net40\Newtonsoft.Json.dll
-
-
-
-
-
-
-
-
-
- ..\packages\xunit.1.9.1\lib\net20\xunit.dll
-
-
-
-
-
-
-
-
- {e27751f2-dcfa-4c92-bd14-f8515862fcfa}
- RefererParser
-
-
-
-
-
- PreserveNewest
-
-
-
-
-
-
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/dotnet/RefererParser.Tests/packages.config b/vendor/snowplow/referer-parser/dotnet/RefererParser.Tests/packages.config
deleted file mode 100644
index b3097cc8a..000000000
--- a/vendor/snowplow/referer-parser/dotnet/RefererParser.Tests/packages.config
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/dotnet/RefererParser.Tests/referer-tests.json b/vendor/snowplow/referer-parser/dotnet/RefererParser.Tests/referer-tests.json
deleted file mode 100644
index e1c0e143a..000000000
--- a/vendor/snowplow/referer-parser/dotnet/RefererParser.Tests/referer-tests.json
+++ /dev/null
@@ -1,234 +0,0 @@
-[
- {
- "spec": "Google Images search",
- "uri": "http://www.google.fr/imgres?q=Ogham+the+celtic+oracle&hl=fr&safe=off&client=firefox-a&hs=ZDu&sa=X&rls=org.mozilla:fr-FR:unofficial&tbm=isch&prmd=imvnsa&tbnid=HUVaj-o88ZRdYM:&imgrefurl=http://www.psychicbazaar.com/oracles/101-ogham-the-celtic-oracle-set.html&docid=DY5_pPFMliYUQM&imgurl=http://mdm.pbzstatic.com/oracles/ogham-the-celtic-oracle-set/montage.png&w=734&h=250&ei=GPdWUIePCOqK0AWp3oCQBA&zoom=1&iact=hc&vpx=129&vpy=276&dur=827&hovh=131&hovw=385&tx=204&ty=71&sig=104115776612919232039&page=1&tbnh=69&tbnw=202&start=0&ndsp=26&ved=1t:429,r:13,s:0,i:114&biw=1272&bih=826",
- "medium": "search",
- "source": "Google Images",
- "term": "Ogham the celtic oracle",
- "known": true
- },
- {
- "spec": "Yahoo! Images search",
- "uri": "http://it.images.search.yahoo.com/images/view;_ylt=A0PDodgQmGBQpn4AWQgdDQx.;_ylu=X3oDMTBlMTQ4cGxyBHNlYwNzcgRzbGsDaW1n?back=http%3A%2F%2Fit.images.search.yahoo.com%2Fsearch%2Fimages%3Fp%3DEarth%2BMagic%2BOracle%2BCards%26fr%3Dmcafee%26fr2%3Dpiv-web%26tab%3Dorganic%26ri%3D5&w=1064&h=1551&imgurl=mdm.pbzstatic.com%2Foracles%2Fearth-magic-oracle-cards%2Fcard-1.png&rurl=http%3A%2F%2Fwww.psychicbazaar.com%2Foracles%2F143-earth-magic-oracle-cards.html&size=2.8+KB&name=Earth+Magic+Oracle+Cards+-+Psychic+Bazaar&p=Earth+Magic+Oracle+Cards&oid=f0a5ad5c4211efe1c07515f56cf5a78e&fr2=piv-web&fr=mcafee&tt=Earth%2BMagic%2BOracle%2BCards%2B-%2BPsychic%2BBazaar&b=0&ni=90&no=5&ts=&tab=organic&sigr=126n355ib&sigb=13hbudmkc&sigi=11ta8f0gd&.crumb=IZBOU1c0UHU",
- "medium": "search",
- "source": "Yahoo! Images",
- "term": "Earth Magic Oracle Cards",
- "known": true
- },
- {
- "spec": "Powered by Google",
- "uri": "http://isearch.avg.com/pages/images.aspx?q=tarot+card+change&sap=dsp&lang=en&mid=209215200c4147d1a9d6d1565005540b-b0d4f81a8999f5981f04537c5ec8468fd5234593&cid=%7B50F9298B-C111-4C7E-9740-363BF0015949%7D&v=12.1.0.21&ds=AVG&d=7%2F23%2F2012+10%3A31%3A08+PM&pr=fr&sba=06oENya4ZG1YS6vOLJwpLiFdjG91ICt2YE59W2p5ENc2c4w8KvJb5xbvjkj3ceMjnyTSpZq-e6pj7GQUylIQtuK4psJU60wZuI-8PbjX-OqtdX3eIcxbMoxg3qnIasP0ww2fuID1B-p2qJln8vBHxWztkpxeixjZPSppHnrb9fEcx62a9DOR0pZ-V-Kjhd-85bIL0QG5qi1OuA4M1eOP4i_NzJQVRXPQDmXb-CpIcruc2h5FE92Tc8QMUtNiTEWBbX-QiCoXlgbHLpJo5Jlq-zcOisOHNWU2RSHYJnK7IUe_SH6iQ.%2CYT0zO2s9MTA7aD1mNjZmZDBjMjVmZDAxMGU4&snd=hdr&tc=test1",
- "medium": "search",
- "source": "Google",
- "term": "tarot card change",
- "known": true
- },
- {
- "spec": "Google search #1",
- "uri": "http://www.google.com/search",
- "medium": "search",
- "source": "Google",
- "term": null,
- "known": true
- },
- {
- "spec": "Google search #2",
- "uri": "http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari",
- "medium": "search",
- "source": "Google",
- "term": "gateway oracle cards denise linn",
- "known": true
- },
- {
- "spec": "Yahoo! search",
- "uri": "http://es.search.yahoo.com/search;_ylt=A7x9QbwbZXxQ9EMAPCKT.Qt.?p=BIEDERMEIER+FORTUNE+TELLING+CARDS&ei=utf-8&type=685749&fr=chr-greentree_gc&xargs=0&pstart=1&b=11",
- "medium": "search",
- "source": "Yahoo!",
- "term": "BIEDERMEIER FORTUNE TELLING CARDS",
- "known": true
- },
- {
- "spec": "PriceRunner search",
- "uri": "http://www.pricerunner.co.uk/search?displayNoHitsMessage=1&q=wild+wisdom+of+the+faery+oracle",
- "medium": "search",
- "source": "PriceRunner",
- "term": "wild wisdom of the faery oracle",
- "known": true
- },
- {
- "spec": "Bing Images search",
- "uri": "http://www.bing.com/images/search?q=psychic+oracle+cards&view=detail&id=D268EDDEA8D3BF20AF887E62AF41E8518FE96F08",
- "medium": "search",
- "source": "Bing Images",
- "term": "psychic oracle cards",
- "known": true
- },
- {
- "spec": "IXquick search",
- "uri": "https://s3-us3.ixquick.com/do/search",
- "medium": "search",
- "source": "IXquick",
- "term": null,
- "known": true
- },
- {
- "spec": "AOL search",
- "uri": "http://aolsearch.aol.co.uk/aol/search?s_chn=hp&enabled_terms=&s_it=aoluk-homePage50&q=pendulums",
- "medium": "search",
- "source": "AOL",
- "term": "pendulums",
- "known": true
- },
- {
- "spec": "AOL search.com",
- "uri": "http://www.aolsearch.com/search?s_pt=hp&s_gl=NL&query=voorbeeld+cv+competenties&invocationType=tb50hpcnnbie7-nl-nl",
- "medium": "search",
- "source": "AOL",
- "term": "voorbeeld cv competenties",
- "known": true
- },
- {
- "spec": "Ask search",
- "uri": "http://uk.search-results.com/web?qsrc=1&o=1921&l=dis&q=pendulums&dm=ctry&atb=sysid%3D406%3Aappid%3D113%3Auid%3D8f40f651e7b608b5%3Auc%3D1346336505%3Aqu%3Dpendulums%3Asrc%3Dcrt%3Ao%3D1921&locale=en_GB",
- "medium": "search",
- "source": "Ask",
- "term": "pendulums",
- "known": true
- },
- {
- "spec": "Mail.ru search",
- "uri": "http://go.mail.ru/search?q=Gothic%20Tarot%20Cards&where=any&num=10&rch=e&sf=20",
- "medium": "search",
- "source": "Mail.ru",
- "term": "Gothic Tarot Cards",
- "known": true
- },
- {
- "spec": "Yandex search",
- "uri": "http://images.yandex.ru/yandsearch?text=Blue%20Angel%20Oracle%20Blue%20Angel%20Oracle&noreask=1&pos=16&rpt=simage&lr=45&img_url=http%3A%2F%2Fmdm.pbzstatic.com%2Foracles%2Fblue-angel-oracle%2Fbox-small.png",
- "medium": "search",
- "source": "Yandex Images",
- "term": "Blue Angel Oracle Blue Angel Oracle",
- "known": true
- },
- {
- "spec": "Ask toolbar search",
- "uri": "http://search.tb.ask.com/search/GGmain.jhtml?cb=AYY&pg=GGmain&p2=%5EAYY%5Exdm071%5EYYA%5Eid&n=77fdaa55&qid=c2678d9147654034bb8b16daa7bfb48c&ss=sub&st=hp&ptb=F9FC6C22-EAE6-4D1E-8126-A70119B6E02F&si=flvrunner&tpr=hst&searchfor=CARA+MEMASAK+CUMI+CUMI&ots=1219016089614",
- "medium": "search",
- "source": "Ask Toolbar",
- "term": "CARA MEMASAK CUMI CUMI",
- "known": true
- },
- {
- "spec": "Ask toolbar search #2",
- "uri": "http://search.tb.ask.com/search/GGmain.jhtml?&st=hp&p2=%5EZU%5Exdm458%5EYYA%5Eus&n=77fda1bd&ptb=F0B68CA5-4791-4376-BFCC-5F0100329FB6&si=CMKg9-nX07oCFSjZQgodcikACQ&tpr=hpsbsug&searchfor=test",
- "medium": "search",
- "source": "Ask Toolbar",
- "term": "test",
- "known": true
- },
- {
- "spec": "Voila search",
- "uri": "http://search.ke.voila.fr/?module=voila&bhv=web_fr&kw=test",
- "medium": "search",
- "source": "Voila",
- "term": "test",
- "known": true
- },
- {
- "spec": "Dale search",
- "uri": "http://www.dalesearch.com/?q=+lego.nl+%2Fclub&s=web&as=0&rlz=0&babsrc=HP_ss",
- "medium": "search",
- "source": "Dalesearch",
- "term": " lego.nl /club",
- "known": true
- },
- {
- "spec": "Twitter redirect",
- "uri": "http://t.co/chrgFZDb",
- "medium": "social",
- "source": "Twitter",
- "term": null,
- "known": true
- },
- {
- "spec": "Facebook social",
- "uri": "http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.psychicbazaar.com&h=yAQHZtXxS&s=1",
- "medium": "social",
- "source": "Facebook",
- "term": null,
- "known": true
- },
- {
- "spec": "Facebook mobile",
- "uri": "http://m.facebook.com/l.php?u=http%3A%2F%2Fwww.psychicbazaar.com%2Fblog%2F2012%2F09%2Fpsychic-bazaar-reviews-tarot-foundations-31-days-to-read-tarot-with-confidence%2F&h=kAQGXKbf9&s=1",
- "medium": "social",
- "source": "Facebook",
- "term": null,
- "known": true
- },
- {
- "spec": "Odnoklassniki",
- "uri": "http://www.odnoklassniki.ru/dk?cmd=logExternal&st._aid=Conversations_Openlink&st.name=externalLinkRedirect&st.link=http%3A%2F%2Fwww.psychicbazaar.com%2Foracles%2F187-blue-angel-oracle.html",
- "medium": "social",
- "source": "Odnoklassniki",
- "term": null,
- "known": true
- },
- {
- "spec": "Tumblr social #1",
- "uri": "http://www.tumblr.com/dashboard",
- "medium": "social",
- "source": "Tumblr",
- "term": null,
- "known": true
- },
- {
- "spec": "Tumblr w subdomain",
- "uri": "http://psychicbazaar.tumblr.com/",
- "medium": "social",
- "source": "Tumblr",
- "term": null,
- "known": true
- },
- {
- "spec": "Yahoo! Mail",
- "uri": "http://36ohk6dgmcd1n-c.c.yom.mail.yahoo.net/om/api/1.0/openmail.app.invoke/36ohk6dgmcd1n/11/1.0.35/us/en-US/view.html/0",
- "medium": "email",
- "source": "Yahoo! Mail",
- "term": null,
- "known": true
- },
- {
- "spec": "Outlook.com mail",
- "uri": "http://co106w.col106.mail.live.com/default.aspx?rru=inbox",
- "medium": "email",
- "source": "Outlook.com",
- "term": null,
- "known": true
- },
- {
- "spec": "Orange Webmail",
- "uri": "http://webmail1m.orange.fr/webmail/fr_FR/read.html?FOLDER=SF_INBOX&IDMSG=8594&check=&SORTBY=31",
- "medium": "email",
- "source": "Orange Webmail",
- "term": null,
- "known": true
- },
- {
- "spec": "Internal HTTP",
- "uri": "http://www.snowplowanalytics.com/about/team",
- "medium": "internal",
- "source": null,
- "term": null,
- "known": false
- },
- {
- "spec": "Internal HTTPS",
- "uri": "https://www.snowplowanalytics.com/account/profile",
- "medium": "internal",
- "source": null,
- "term": null,
- "known": false
- }
-]
diff --git a/vendor/snowplow/referer-parser/dotnet/RefererParser.nuspec b/vendor/snowplow/referer-parser/dotnet/RefererParser.nuspec
deleted file mode 100644
index 56ceb911f..000000000
--- a/vendor/snowplow/referer-parser/dotnet/RefererParser.nuspec
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
- RefererParser
- 1.0.0.2
- iPerform Software BV
- A .NET implementation of the Snowplow referer-parser project
- en-US
- New referers have been added and fixed problem with parsing of empty query paremeters on certain referers
- false
- https://github.com/snowplow/referer-parser/
- http://www.apache.org/licenses/LICENSE-2.0
- RefererParser ReferrerParser Referrer Referer Parser Snowplow
-
-
-
-
-
-
-
-
diff --git a/vendor/snowplow/referer-parser/dotnet/RefererParser.sln b/vendor/snowplow/referer-parser/dotnet/RefererParser.sln
deleted file mode 100644
index 7e535f7ed..000000000
--- a/vendor/snowplow/referer-parser/dotnet/RefererParser.sln
+++ /dev/null
@@ -1,33 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2012
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RefererParser", "RefererParser\RefererParser.csproj", "{E27751F2-DCFA-4C92-BD14-F8515862FCFA}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{BC20C50D-5130-4DCF-9601-EDCBA57CAA69}"
- ProjectSection(SolutionItems) = preProject
- .nuget\NuGet.Config = .nuget\NuGet.Config
- .nuget\NuGet.exe = .nuget\NuGet.exe
- .nuget\NuGet.targets = .nuget\NuGet.targets
- EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RefererParser.Tests", "RefererParser.Tests\RefererParser.Tests.csproj", "{518417C7-060B-4C04-8F1B-ECEC85D443F0}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {E27751F2-DCFA-4C92-BD14-F8515862FCFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E27751F2-DCFA-4C92-BD14-F8515862FCFA}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E27751F2-DCFA-4C92-BD14-F8515862FCFA}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E27751F2-DCFA-4C92-BD14-F8515862FCFA}.Release|Any CPU.Build.0 = Release|Any CPU
- {518417C7-060B-4C04-8F1B-ECEC85D443F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {518417C7-060B-4C04-8F1B-ECEC85D443F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {518417C7-060B-4C04-8F1B-ECEC85D443F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {518417C7-060B-4C04-8F1B-ECEC85D443F0}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/vendor/snowplow/referer-parser/dotnet/RefererParser/Parser.cs b/vendor/snowplow/referer-parser/dotnet/RefererParser/Parser.cs
deleted file mode 100644
index 81b909047..000000000
--- a/vendor/snowplow/referer-parser/dotnet/RefererParser/Parser.cs
+++ /dev/null
@@ -1,119 +0,0 @@
-using Newtonsoft.Json;
-using RefererParser;
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Linq;
-using System.Text;
-using System.Web;
-
-namespace RefererParser
-{
- ///
- /// Parse URL referers
- ///
- public static class Parser
- {
- ///
- /// Parse referer and return keyword information if available.
- ///
- /// Uri to parse
- /// (optional)Host name of website
- ///
- public static Referer Parse(Uri refererUri, string pageHost = "")
- {
- if (refererUri == null)
- {
- throw new NullReferenceException("No refererUri supplied!");
- }
-
- if (refererUri.Scheme.ToLower() != "http" && refererUri.Scheme.ToLower() != "https")
- {
- return null;
- }
- else
- {
- if (!string.IsNullOrWhiteSpace(pageHost) && string.Compare(pageHost, refererUri.Host) == 0)
- {
- return new Referer
- {
- Medium = RefererMedium.Internal
- };
- }
-
- var referer = LookupReferer(refererUri.Host, refererUri.AbsolutePath, true) ??
- LookupReferer(refererUri.Host, refererUri.AbsolutePath, false);
-
- if (referer == null || !referer.Any())
- {
- return new Referer
- {
- Medium = RefererMedium.Unknown
- };
- }
- else
- {
- var term = string.Empty;
- var first = referer
- .OrderBy(r => r.Medium)
- .First();
-
- if (first.Medium == RefererMedium.Search)
- {
- term = ExtractSearchTerm(refererUri, first.Parameters);
- }
-
- return new Referer
- {
- Medium = first.Medium,
- Source = first.Name,
- Term = term
- };
- }
- }
- }
-
- private static RefererDefinition[] LookupReferer(string refererHost, string refererPath, bool includePath)
- {
-
- // Check if domain + full path matches, e.g. apollo.tv/portal/search/
- var referer = includePath ? Referers.Catalog[refererHost + refererPath] : Referers.Catalog[refererHost];
-
- // Check if domain+one-level path matches, e.g. for orange.fr/webmail/fr_FR/read.html (in our YAML it's orange.fr/webmail)
- if (includePath && referer == null)
- {
- var pathElements = refererPath.Split('/');
- if (pathElements.Length > 1)
- {
- referer = Referers.Catalog[refererHost + "/" + pathElements[1]];
- }
- }
-
- if (referer == null)
- {
- int index = refererHost.IndexOf('.');
- if (index >= 0)
- {
- referer = LookupReferer(refererHost.Substring(index + 1), refererPath, includePath);
- }
- }
-
- return referer;
- }
-
- private static string ExtractSearchTerm(Uri refererUri, string[] possibleParameters)
- {
- var @params = HttpUtility.ParseQueryString(refererUri.Query);
-
- foreach (string key in @params.AllKeys.Where(k => !string.IsNullOrWhiteSpace(k)))
- {
- if (possibleParameters.Contains(key.ToLower()))
- {
- return @params[key];
- }
- }
-
- return null;
- }
- }
-}
diff --git a/vendor/snowplow/referer-parser/dotnet/RefererParser/Properties/AssemblyInfo.cs b/vendor/snowplow/referer-parser/dotnet/RefererParser/Properties/AssemblyInfo.cs
deleted file mode 100644
index 7fe7d748a..000000000
--- a/vendor/snowplow/referer-parser/dotnet/RefererParser/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("RefererParser")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("iPerform Software")]
-[assembly: AssemblyProduct("RefererParser")]
-[assembly: AssemblyCopyright("Copyright © 2013")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("cd4fe027-09f7-490c-9f30-4b57d5247b1e")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.2")]
-[assembly: AssemblyFileVersion("1.0.0.2")]
diff --git a/vendor/snowplow/referer-parser/dotnet/RefererParser/Referer.cs b/vendor/snowplow/referer-parser/dotnet/RefererParser/Referer.cs
deleted file mode 100644
index 1864b559a..000000000
--- a/vendor/snowplow/referer-parser/dotnet/RefererParser/Referer.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace RefererParser
-{
- ///
- /// Referer definition
- ///
- public class Referer
- {
- ///
- /// Referer medium
- ///
- public RefererMedium Medium
- {
- get;
- set;
- }
-
- ///
- /// Source of referer
- ///
- public string Source
- {
- get;
- set;
- }
-
- ///
- /// Search keywords if available
- ///
- public string Term
- {
- get;
- set;
- }
- }
-}
diff --git a/vendor/snowplow/referer-parser/dotnet/RefererParser/RefererDefinition.cs b/vendor/snowplow/referer-parser/dotnet/RefererParser/RefererDefinition.cs
deleted file mode 100644
index 302b8969e..000000000
--- a/vendor/snowplow/referer-parser/dotnet/RefererParser/RefererDefinition.cs
+++ /dev/null
@@ -1,49 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace RefererParser
-{
- ///
- /// Referer definition for a single referer.
- ///
- public class RefererDefinition
- {
- ///
- /// Medium of definition
- ///
- public RefererMedium Medium
- {
- get;
- set;
- }
-
- ///
- /// Name of referer
- ///
- public string Name
- {
- get;
- set;
- }
-
- ///
- /// Domains belonging to this referer
- ///
- public string[] Domains
- {
- get;
- set;
- }
-
- ///
- /// Search parameter names in referer request string
- ///
- public string[] Parameters
- {
- get;
- set;
- }
- }
-}
diff --git a/vendor/snowplow/referer-parser/dotnet/RefererParser/RefererMedium.cs b/vendor/snowplow/referer-parser/dotnet/RefererParser/RefererMedium.cs
deleted file mode 100644
index e4f57c099..000000000
--- a/vendor/snowplow/referer-parser/dotnet/RefererParser/RefererMedium.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace RefererParser
-{
- ///
- /// Referer medium
- ///
- public enum RefererMedium
- {
- // Order is important, most important medium's first
- Search = 0,
- Social,
- Email,
- Unknown,
- Internal
- }
-}
diff --git a/vendor/snowplow/referer-parser/dotnet/RefererParser/RefererParser.csproj b/vendor/snowplow/referer-parser/dotnet/RefererParser/RefererParser.csproj
deleted file mode 100644
index 341c66a08..000000000
--- a/vendor/snowplow/referer-parser/dotnet/RefererParser/RefererParser.csproj
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {E27751F2-DCFA-4C92-BD14-F8515862FCFA}
- Library
- Properties
- RefererParser
- RefererParser
- v4.0
- 512
- ..\
- true
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
- true
-
-
- strongname.snk
-
-
-
- ..\packages\Newtonsoft.Json.5.0.6\lib\net40\Newtonsoft.Json.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- True
- True
- Resources.resx
-
-
-
-
-
-
-
-
-
-
- ResXFileCodeGenerator
- Resources.Designer.cs
-
-
-
-
-
-
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/dotnet/RefererParser/Referers.cs b/vendor/snowplow/referer-parser/dotnet/RefererParser/Referers.cs
deleted file mode 100644
index 92d7b9317..000000000
--- a/vendor/snowplow/referer-parser/dotnet/RefererParser/Referers.cs
+++ /dev/null
@@ -1,90 +0,0 @@
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Linq;
-using System.Text;
-using System.Threading;
-
-namespace RefererParser
-{
- ///
- /// Referer definition catalog
- ///
- public class Referers
- {
- public static readonly Referers Catalog = new Referers();
- Lazy> _catalog;
-
- ///
- /// Look up a referer definition in the catalog
- ///
- /// Domain name of referer to look up.
- /// Referer definitions for the given domain or an empty array when no matching definitions are found.
- public RefererDefinition[] this[string domain]
- {
- get
- {
- var result = _catalog.Value[domain];
- return result.Any() ? result.ToArray() : null;
- }
- }
-
- ///
- /// Private constructor, so that only one catalog can exist.
- ///
- private Referers()
- {
- _catalog = new Lazy>(() => Initialize(), LazyThreadSafetyMode.PublicationOnly);
- }
-
- ///
- /// Initialize referer catalog.
- /// Load referer definitions from embedded referer resource file.
- ///
- ILookup Initialize()
- {
- // Parse referer json definition file
- var q = from category in JObject.Parse(Encoding.UTF8.GetString(Resources.referers)).Properties()
- from definition in ((JObject)category.Value).Properties()
- let domains = definition.Value["domains"] as JArray
- let parameters = definition.Value["parameters"] as JArray
- select new RefererDefinition
- {
- Medium = ParseMedium(category.Name),
- Name = definition.Name,
- Domains = domains != null ? domains.Values().ToArray() : new string[0],
- Parameters = parameters != null ? parameters.Values().ToArray() : new string[0],
- };
-
- // Flatten referer definition, list a definition per domain
- var allDomainsPerDefinition = from definition in q
- from domain in definition.Domains
- select new
- {
- Key = domain,
- Definition = definition
- };
-
- // Generate a dictionary mapping of domains (case-insensitive) => referer definitions
- return allDomainsPerDefinition.ToLookup(pair => pair.Key, pair => pair.Definition, StringComparer.OrdinalIgnoreCase);
- }
-
- ///
- /// Parse a referer medium/category type
- ///
- /// Name to parse
- /// A referer medium value
- RefererMedium ParseMedium(string name)
- {
- RefererMedium value;
- if (!Enum.TryParse(name, true, out value))
- {
- throw new ArgumentOutOfRangeException("name", "Unknown referer medium type: " + name);
- }
-
- return value;
- }
- }
-}
diff --git a/vendor/snowplow/referer-parser/dotnet/RefererParser/Resources.Designer.cs b/vendor/snowplow/referer-parser/dotnet/RefererParser/Resources.Designer.cs
deleted file mode 100644
index 0e0b95c56..000000000
--- a/vendor/snowplow/referer-parser/dotnet/RefererParser/Resources.Designer.cs
+++ /dev/null
@@ -1,73 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.18046
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace RefererParser {
- using System;
-
-
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resources {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources() {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("RefererParser.Resources", typeof(Resources).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Byte[].
- ///
- internal static byte[] referers {
- get {
- object obj = ResourceManager.GetObject("referers", resourceCulture);
- return ((byte[])(obj));
- }
- }
- }
-}
diff --git a/vendor/snowplow/referer-parser/dotnet/RefererParser/Resources.resx b/vendor/snowplow/referer-parser/dotnet/RefererParser/Resources.resx
deleted file mode 100644
index 8e8786827..000000000
--- a/vendor/snowplow/referer-parser/dotnet/RefererParser/Resources.resx
+++ /dev/null
@@ -1,124 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
-
- Resources\referers.json;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/dotnet/RefererParser/Resources/referers.json b/vendor/snowplow/referer-parser/dotnet/RefererParser/Resources/referers.json
deleted file mode 100644
index 460975ef2..000000000
--- a/vendor/snowplow/referer-parser/dotnet/RefererParser/Resources/referers.json
+++ /dev/null
@@ -1,4090 +0,0 @@
-{
- "unknown": {
- "Outbrain": {
- "domains": [
- "paid.outbrain.com"
- ]
- },
- "Google": {
- "domains": [
- "support.google.com",
- "developers.google.com",
- "maps.google.com",
- "accounts.google.com",
- "drive.google.com",
- "sites.google.com",
- "groups.google.com",
- "groups.google.co.uk",
- "news.google.co.uk"
- ]
- },
- "Taboola": {
- "domains": [
- "trc.taboola.com",
- "api.taboola.com"
- ]
- },
- "Yahoo!": {
- "domains": [
- "finance.yahoo.com",
- "news.yahoo.com",
- "eurosport.yahoo.com",
- "sports.yahoo.com",
- "astrology.yahoo.com",
- "travel.yahoo.com",
- "answers.yahoo.com",
- "screen.yahoo.com",
- "weather.yahoo.com",
- "messenger.yahoo.com",
- "games.yahoo.com",
- "shopping.yahoo.net",
- "movies.yahoo.com",
- "cars.yahoo.com",
- "lifestyle.yahoo.com",
- "omg.yahoo.com",
- "match.yahoo.net"
- ]
- }
- },
- "search": {
- "TalkTalk": {
- "domains": [
- "www.talktalk.co.uk"
- ],
- "parameters": [
- "query"
- ]
- },
- "1.cz": {
- "domains": [
- "1.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Softonic": {
- "domains": [
- "search.softonic.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "GAIS": {
- "domains": [
- "gais.cs.ccu.edu.tw"
- ],
- "parameters": [
- "q"
- ]
- },
- "Freecause": {
- "domains": [
- "search.freecause.com"
- ],
- "parameters": [
- "p"
- ]
- },
- "360.cn": {
- "domains": [
- "so.360.cn",
- "www.so.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "RPMFind": {
- "domains": [
- "rpmfind.net",
- "fr2.rpmfind.net"
- ],
- "parameters": [
- "query"
- ]
- },
- "Comcast": {
- "domains": [
- "serach.comcast.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Voila": {
- "domains": [
- "search.ke.voila.fr",
- "www.lemoteur.fr"
- ],
- "parameters": [
- "rdata",
- "kw"
- ]
- },
- "Nifty": {
- "domains": [
- "search.nifty.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Atlas": {
- "domains": [
- "searchatlas.centrum.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Lo.st": {
- "domains": [
- "lo.st"
- ],
- "parameters": [
- "x_query"
- ]
- },
- "DasTelefonbuch": {
- "domains": [
- "www1.dastelefonbuch.de"
- ],
- "parameters": [
- "kw"
- ]
- },
- "Fireball": {
- "domains": [
- "www.fireball.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "1und1": {
- "domains": [
- "search.1und1.de"
- ],
- "parameters": [
- "su"
- ]
- },
- "Virgilio": {
- "domains": [
- "ricerca.virgilio.it",
- "ricercaimmagini.virgilio.it",
- "ricercavideo.virgilio.it",
- "ricercanews.virgilio.it",
- "mobile.virgilio.it"
- ],
- "parameters": [
- "qs"
- ]
- },
- "Web.nl": {
- "domains": [
- "www.web.nl"
- ],
- "parameters": [
- "zoekwoord"
- ]
- },
- "Plazoo": {
- "domains": [
- "www.plazoo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Goyellow.de": {
- "domains": [
- "www.goyellow.de"
- ],
- "parameters": [
- "MDN"
- ]
- },
- "AOL": {
- "domains": [
- "search.aol.com",
- "search.aol.it",
- "aolsearch.aol.com",
- "aolsearch.com",
- "www.aolrecherche.aol.fr",
- "www.aolrecherches.aol.fr",
- "www.aolimages.aol.fr",
- "aim.search.aol.com",
- "www.recherche.aol.fr",
- "find.web.aol.com",
- "recherche.aol.ca",
- "aolsearch.aol.co.uk",
- "search.aol.co.uk",
- "aolrecherche.aol.fr",
- "sucheaol.aol.de",
- "suche.aol.de",
- "suche.aolsvc.de",
- "aolbusqueda.aol.com.mx",
- "alicesuche.aol.de",
- "alicesuchet.aol.de",
- "suchet2.aol.de",
- "search.hp.my.aol.com.au",
- "search.hp.my.aol.de",
- "search.hp.my.aol.it",
- "search-intl.netscape.com"
- ],
- "parameters": [
- "q",
- "query"
- ]
- },
- "Acoon": {
- "domains": [
- "www.acoon.de"
- ],
- "parameters": [
- "begriff"
- ]
- },
- "Free": {
- "domains": [
- "search.free.fr",
- "search1-2.free.fr",
- "search1-1.free.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "Apollo Latvia": {
- "domains": [
- "apollo.lv/portal/search/"
- ],
- "parameters": [
- "q"
- ]
- },
- "HighBeam": {
- "domains": [
- "www.highbeam.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "I-play": {
- "domains": [
- "start.iplay.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "FriendFeed": {
- "domains": [
- "friendfeed.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yasni": {
- "domains": [
- "www.yasni.de",
- "www.yasni.com",
- "www.yasni.co.uk",
- "www.yasni.ch",
- "www.yasni.at"
- ],
- "parameters": [
- "query"
- ]
- },
- "Gigablast": {
- "domains": [
- "www.gigablast.com",
- "dir.gigablast.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "arama": {
- "domains": [
- "arama.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Fixsuche": {
- "domains": [
- "www.fixsuche.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Apontador": {
- "domains": [
- "apontador.com.br",
- "www.apontador.com.br"
- ],
- "parameters": [
- "q"
- ]
- },
- "Search.com": {
- "domains": [
- "www.search.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Monstercrawler": {
- "domains": [
- "www.monstercrawler.com"
- ],
- "parameters": [
- "qry"
- ]
- },
- "Google Images": {
- "domains": [
- "google.ac/imgres",
- "google.ad/imgres",
- "google.ae/imgres",
- "google.am/imgres",
- "google.as/imgres",
- "google.at/imgres",
- "google.az/imgres",
- "google.ba/imgres",
- "google.be/imgres",
- "google.bf/imgres",
- "google.bg/imgres",
- "google.bi/imgres",
- "google.bj/imgres",
- "google.bs/imgres",
- "google.by/imgres",
- "google.ca/imgres",
- "google.cat/imgres",
- "google.cc/imgres",
- "google.cd/imgres",
- "google.cf/imgres",
- "google.cg/imgres",
- "google.ch/imgres",
- "google.ci/imgres",
- "google.cl/imgres",
- "google.cm/imgres",
- "google.cn/imgres",
- "google.co.bw/imgres",
- "google.co.ck/imgres",
- "google.co.cr/imgres",
- "google.co.id/imgres",
- "google.co.il/imgres",
- "google.co.in/imgres",
- "google.co.jp/imgres",
- "google.co.ke/imgres",
- "google.co.kr/imgres",
- "google.co.ls/imgres",
- "google.co.ma/imgres",
- "google.co.mz/imgres",
- "google.co.nz/imgres",
- "google.co.th/imgres",
- "google.co.tz/imgres",
- "google.co.ug/imgres",
- "google.co.uk/imgres",
- "google.co.uz/imgres",
- "google.co.ve/imgres",
- "google.co.vi/imgres",
- "google.co.za/imgres",
- "google.co.zm/imgres",
- "google.co.zw/imgres",
- "google.com/imgres",
- "google.com.af/imgres",
- "google.com.ag/imgres",
- "google.com.ai/imgres",
- "google.com.ar/imgres",
- "google.com.au/imgres",
- "google.com.bd/imgres",
- "google.com.bh/imgres",
- "google.com.bn/imgres",
- "google.com.bo/imgres",
- "google.com.br/imgres",
- "google.com.by/imgres",
- "google.com.bz/imgres",
- "google.com.co/imgres",
- "google.com.cu/imgres",
- "google.com.cy/imgres",
- "google.com.do/imgres",
- "google.com.ec/imgres",
- "google.com.eg/imgres",
- "google.com.et/imgres",
- "google.com.fj/imgres",
- "google.com.gh/imgres",
- "google.com.gi/imgres",
- "google.com.gt/imgres",
- "google.com.hk/imgres",
- "google.com.jm/imgres",
- "google.com.kh/imgres",
- "google.com.kw/imgres",
- "google.com.lb/imgres",
- "google.com.lc/imgres",
- "google.com.ly/imgres",
- "google.com.mt/imgres",
- "google.com.mx/imgres",
- "google.com.my/imgres",
- "google.com.na/imgres",
- "google.com.nf/imgres",
- "google.com.ng/imgres",
- "google.com.ni/imgres",
- "google.com.np/imgres",
- "google.com.om/imgres",
- "google.com.pa/imgres",
- "google.com.pe/imgres",
- "google.com.ph/imgres",
- "google.com.pk/imgres",
- "google.com.pr/imgres",
- "google.com.py/imgres",
- "google.com.qa/imgres",
- "google.com.sa/imgres",
- "google.com.sb/imgres",
- "google.com.sg/imgres",
- "google.com.sl/imgres",
- "google.com.sv/imgres",
- "google.com.tj/imgres",
- "google.com.tn/imgres",
- "google.com.tr/imgres",
- "google.com.tw/imgres",
- "google.com.ua/imgres",
- "google.com.uy/imgres",
- "google.com.vc/imgres",
- "google.com.vn/imgres",
- "google.cv/imgres",
- "google.cz/imgres",
- "google.de/imgres",
- "google.dj/imgres",
- "google.dk/imgres",
- "google.dm/imgres",
- "google.dz/imgres",
- "google.ee/imgres",
- "google.es/imgres",
- "google.fi/imgres",
- "google.fm/imgres",
- "google.fr/imgres",
- "google.ga/imgres",
- "google.gd/imgres",
- "google.ge/imgres",
- "google.gf/imgres",
- "google.gg/imgres",
- "google.gl/imgres",
- "google.gm/imgres",
- "google.gp/imgres",
- "google.gr/imgres",
- "google.gy/imgres",
- "google.hn/imgres",
- "google.hr/imgres",
- "google.ht/imgres",
- "google.hu/imgres",
- "google.ie/imgres",
- "google.im/imgres",
- "google.io/imgres",
- "google.iq/imgres",
- "google.is/imgres",
- "google.it/imgres",
- "google.it.ao/imgres",
- "google.je/imgres",
- "google.jo/imgres",
- "google.kg/imgres",
- "google.ki/imgres",
- "google.kz/imgres",
- "google.la/imgres",
- "google.li/imgres",
- "google.lk/imgres",
- "google.lt/imgres",
- "google.lu/imgres",
- "google.lv/imgres",
- "google.md/imgres",
- "google.me/imgres",
- "google.mg/imgres",
- "google.mk/imgres",
- "google.ml/imgres",
- "google.mn/imgres",
- "google.ms/imgres",
- "google.mu/imgres",
- "google.mv/imgres",
- "google.mw/imgres",
- "google.ne/imgres",
- "google.nl/imgres",
- "google.no/imgres",
- "google.nr/imgres",
- "google.nu/imgres",
- "google.pl/imgres",
- "google.pn/imgres",
- "google.ps/imgres",
- "google.pt/imgres",
- "google.ro/imgres",
- "google.rs/imgres",
- "google.ru/imgres",
- "google.rw/imgres",
- "google.sc/imgres",
- "google.se/imgres",
- "google.sh/imgres",
- "google.si/imgres",
- "google.sk/imgres",
- "google.sm/imgres",
- "google.sn/imgres",
- "google.so/imgres",
- "google.st/imgres",
- "google.td/imgres",
- "google.tg/imgres",
- "google.tk/imgres",
- "google.tl/imgres",
- "google.tm/imgres",
- "google.to/imgres",
- "google.tt/imgres",
- "google.us/imgres",
- "google.vg/imgres",
- "google.vu/imgres",
- "images.google.ws",
- "images.google.ac",
- "images.google.ad",
- "images.google.ae",
- "images.google.am",
- "images.google.as",
- "images.google.at",
- "images.google.az",
- "images.google.ba",
- "images.google.be",
- "images.google.bf",
- "images.google.bg",
- "images.google.bi",
- "images.google.bj",
- "images.google.bs",
- "images.google.by",
- "images.google.ca",
- "images.google.cat",
- "images.google.cc",
- "images.google.cd",
- "images.google.cf",
- "images.google.cg",
- "images.google.ch",
- "images.google.ci",
- "images.google.cl",
- "images.google.cm",
- "images.google.cn",
- "images.google.co.bw",
- "images.google.co.ck",
- "images.google.co.cr",
- "images.google.co.id",
- "images.google.co.il",
- "images.google.co.in",
- "images.google.co.jp",
- "images.google.co.ke",
- "images.google.co.kr",
- "images.google.co.ls",
- "images.google.co.ma",
- "images.google.co.mz",
- "images.google.co.nz",
- "images.google.co.th",
- "images.google.co.tz",
- "images.google.co.ug",
- "images.google.co.uk",
- "images.google.co.uz",
- "images.google.co.ve",
- "images.google.co.vi",
- "images.google.co.za",
- "images.google.co.zm",
- "images.google.co.zw",
- "images.google.com",
- "images.google.com.af",
- "images.google.com.ag",
- "images.google.com.ai",
- "images.google.com.ar",
- "images.google.com.au",
- "images.google.com.bd",
- "images.google.com.bh",
- "images.google.com.bn",
- "images.google.com.bo",
- "images.google.com.br",
- "images.google.com.by",
- "images.google.com.bz",
- "images.google.com.co",
- "images.google.com.cu",
- "images.google.com.cy",
- "images.google.com.do",
- "images.google.com.ec",
- "images.google.com.eg",
- "images.google.com.et",
- "images.google.com.fj",
- "images.google.com.gh",
- "images.google.com.gi",
- "images.google.com.gt",
- "images.google.com.hk",
- "images.google.com.jm",
- "images.google.com.kh",
- "images.google.com.kh",
- "images.google.com.kw",
- "images.google.com.lb",
- "images.google.com.lc",
- "images.google.com.ly",
- "images.google.com.mt",
- "images.google.com.mx",
- "images.google.com.my",
- "images.google.com.na",
- "images.google.com.nf",
- "images.google.com.ng",
- "images.google.com.ni",
- "images.google.com.np",
- "images.google.com.om",
- "images.google.com.pa",
- "images.google.com.pe",
- "images.google.com.ph",
- "images.google.com.pk",
- "images.google.com.pr",
- "images.google.com.py",
- "images.google.com.qa",
- "images.google.com.sa",
- "images.google.com.sb",
- "images.google.com.sg",
- "images.google.com.sl",
- "images.google.com.sv",
- "images.google.com.tj",
- "images.google.com.tn",
- "images.google.com.tr",
- "images.google.com.tw",
- "images.google.com.ua",
- "images.google.com.uy",
- "images.google.com.vc",
- "images.google.com.vn",
- "images.google.cv",
- "images.google.cz",
- "images.google.de",
- "images.google.dj",
- "images.google.dk",
- "images.google.dm",
- "images.google.dz",
- "images.google.ee",
- "images.google.es",
- "images.google.fi",
- "images.google.fm",
- "images.google.fr",
- "images.google.ga",
- "images.google.gd",
- "images.google.ge",
- "images.google.gf",
- "images.google.gg",
- "images.google.gl",
- "images.google.gm",
- "images.google.gp",
- "images.google.gr",
- "images.google.gy",
- "images.google.hn",
- "images.google.hr",
- "images.google.ht",
- "images.google.hu",
- "images.google.ie",
- "images.google.im",
- "images.google.io",
- "images.google.iq",
- "images.google.is",
- "images.google.it",
- "images.google.it.ao",
- "images.google.je",
- "images.google.jo",
- "images.google.kg",
- "images.google.ki",
- "images.google.kz",
- "images.google.la",
- "images.google.li",
- "images.google.lk",
- "images.google.lt",
- "images.google.lu",
- "images.google.lv",
- "images.google.md",
- "images.google.me",
- "images.google.mg",
- "images.google.mk",
- "images.google.ml",
- "images.google.mn",
- "images.google.ms",
- "images.google.mu",
- "images.google.mv",
- "images.google.mw",
- "images.google.ne",
- "images.google.nl",
- "images.google.no",
- "images.google.nr",
- "images.google.nu",
- "images.google.pl",
- "images.google.pn",
- "images.google.ps",
- "images.google.pt",
- "images.google.ro",
- "images.google.rs",
- "images.google.ru",
- "images.google.rw",
- "images.google.sc",
- "images.google.se",
- "images.google.sh",
- "images.google.si",
- "images.google.sk",
- "images.google.sm",
- "images.google.sn",
- "images.google.so",
- "images.google.st",
- "images.google.td",
- "images.google.tg",
- "images.google.tk",
- "images.google.tl",
- "images.google.tm",
- "images.google.to",
- "images.google.tt",
- "images.google.us",
- "images.google.vg",
- "images.google.vu",
- "images.google.ws"
- ],
- "parameters": [
- "q"
- ]
- },
- "ABCs\u00f8k": {
- "domains": [
- "abcsolk.no",
- "verden.abcsok.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Google Product Search": {
- "domains": [
- "google.ac/products",
- "google.ad/products",
- "google.ae/products",
- "google.am/products",
- "google.as/products",
- "google.at/products",
- "google.az/products",
- "google.ba/products",
- "google.be/products",
- "google.bf/products",
- "google.bg/products",
- "google.bi/products",
- "google.bj/products",
- "google.bs/products",
- "google.by/products",
- "google.ca/products",
- "google.cat/products",
- "google.cc/products",
- "google.cd/products",
- "google.cf/products",
- "google.cg/products",
- "google.ch/products",
- "google.ci/products",
- "google.cl/products",
- "google.cm/products",
- "google.cn/products",
- "google.co.bw/products",
- "google.co.ck/products",
- "google.co.cr/products",
- "google.co.id/products",
- "google.co.il/products",
- "google.co.in/products",
- "google.co.jp/products",
- "google.co.ke/products",
- "google.co.kr/products",
- "google.co.ls/products",
- "google.co.ma/products",
- "google.co.mz/products",
- "google.co.nz/products",
- "google.co.th/products",
- "google.co.tz/products",
- "google.co.ug/products",
- "google.co.uk/products",
- "google.co.uz/products",
- "google.co.ve/products",
- "google.co.vi/products",
- "google.co.za/products",
- "google.co.zm/products",
- "google.co.zw/products",
- "google.com/products",
- "google.com.af/products",
- "google.com.ag/products",
- "google.com.ai/products",
- "google.com.ar/products",
- "google.com.au/products",
- "google.com.bd/products",
- "google.com.bh/products",
- "google.com.bn/products",
- "google.com.bo/products",
- "google.com.br/products",
- "google.com.by/products",
- "google.com.bz/products",
- "google.com.co/products",
- "google.com.cu/products",
- "google.com.cy/products",
- "google.com.do/products",
- "google.com.ec/products",
- "google.com.eg/products",
- "google.com.et/products",
- "google.com.fj/products",
- "google.com.gh/products",
- "google.com.gi/products",
- "google.com.gt/products",
- "google.com.hk/products",
- "google.com.jm/products",
- "google.com.kh/products",
- "google.com.kh/products",
- "google.com.kw/products",
- "google.com.lb/products",
- "google.com.lc/products",
- "google.com.ly/products",
- "google.com.mt/products",
- "google.com.mx/products",
- "google.com.my/products",
- "google.com.na/products",
- "google.com.nf/products",
- "google.com.ng/products",
- "google.com.ni/products",
- "google.com.np/products",
- "google.com.om/products",
- "google.com.pa/products",
- "google.com.pe/products",
- "google.com.ph/products",
- "google.com.pk/products",
- "google.com.pr/products",
- "google.com.py/products",
- "google.com.qa/products",
- "google.com.sa/products",
- "google.com.sb/products",
- "google.com.sg/products",
- "google.com.sl/products",
- "google.com.sv/products",
- "google.com.tj/products",
- "google.com.tn/products",
- "google.com.tr/products",
- "google.com.tw/products",
- "google.com.ua/products",
- "google.com.uy/products",
- "google.com.vc/products",
- "google.com.vn/products",
- "google.cv/products",
- "google.cz/products",
- "google.de/products",
- "google.dj/products",
- "google.dk/products",
- "google.dm/products",
- "google.dz/products",
- "google.ee/products",
- "google.es/products",
- "google.fi/products",
- "google.fm/products",
- "google.fr/products",
- "google.ga/products",
- "google.gd/products",
- "google.ge/products",
- "google.gf/products",
- "google.gg/products",
- "google.gl/products",
- "google.gm/products",
- "google.gp/products",
- "google.gr/products",
- "google.gy/products",
- "google.hn/products",
- "google.hr/products",
- "google.ht/products",
- "google.hu/products",
- "google.ie/products",
- "google.im/products",
- "google.io/products",
- "google.iq/products",
- "google.is/products",
- "google.it/products",
- "google.it.ao/products",
- "google.je/products",
- "google.jo/products",
- "google.kg/products",
- "google.ki/products",
- "google.kz/products",
- "google.la/products",
- "google.li/products",
- "google.lk/products",
- "google.lt/products",
- "google.lu/products",
- "google.lv/products",
- "google.md/products",
- "google.me/products",
- "google.mg/products",
- "google.mk/products",
- "google.ml/products",
- "google.mn/products",
- "google.ms/products",
- "google.mu/products",
- "google.mv/products",
- "google.mw/products",
- "google.ne/products",
- "google.nl/products",
- "google.no/products",
- "google.nr/products",
- "google.nu/products",
- "google.pl/products",
- "google.pn/products",
- "google.ps/products",
- "google.pt/products",
- "google.ro/products",
- "google.rs/products",
- "google.ru/products",
- "google.rw/products",
- "google.sc/products",
- "google.se/products",
- "google.sh/products",
- "google.si/products",
- "google.sk/products",
- "google.sm/products",
- "google.sn/products",
- "google.so/products",
- "google.st/products",
- "google.td/products",
- "google.tg/products",
- "google.tk/products",
- "google.tl/products",
- "google.tm/products",
- "google.to/products",
- "google.tt/products",
- "google.us/products",
- "google.vg/products",
- "google.vu/products",
- "google.ws/products",
- "www.google.ac/products",
- "www.google.ad/products",
- "www.google.ae/products",
- "www.google.am/products",
- "www.google.as/products",
- "www.google.at/products",
- "www.google.az/products",
- "www.google.ba/products",
- "www.google.be/products",
- "www.google.bf/products",
- "www.google.bg/products",
- "www.google.bi/products",
- "www.google.bj/products",
- "www.google.bs/products",
- "www.google.by/products",
- "www.google.ca/products",
- "www.google.cat/products",
- "www.google.cc/products",
- "www.google.cd/products",
- "www.google.cf/products",
- "www.google.cg/products",
- "www.google.ch/products",
- "www.google.ci/products",
- "www.google.cl/products",
- "www.google.cm/products",
- "www.google.cn/products",
- "www.google.co.bw/products",
- "www.google.co.ck/products",
- "www.google.co.cr/products",
- "www.google.co.id/products",
- "www.google.co.il/products",
- "www.google.co.in/products",
- "www.google.co.jp/products",
- "www.google.co.ke/products",
- "www.google.co.kr/products",
- "www.google.co.ls/products",
- "www.google.co.ma/products",
- "www.google.co.mz/products",
- "www.google.co.nz/products",
- "www.google.co.th/products",
- "www.google.co.tz/products",
- "www.google.co.ug/products",
- "www.google.co.uk/products",
- "www.google.co.uz/products",
- "www.google.co.ve/products",
- "www.google.co.vi/products",
- "www.google.co.za/products",
- "www.google.co.zm/products",
- "www.google.co.zw/products",
- "www.google.com/products",
- "www.google.com.af/products",
- "www.google.com.ag/products",
- "www.google.com.ai/products",
- "www.google.com.ar/products",
- "www.google.com.au/products",
- "www.google.com.bd/products",
- "www.google.com.bh/products",
- "www.google.com.bn/products",
- "www.google.com.bo/products",
- "www.google.com.br/products",
- "www.google.com.by/products",
- "www.google.com.bz/products",
- "www.google.com.co/products",
- "www.google.com.cu/products",
- "www.google.com.cy/products",
- "www.google.com.do/products",
- "www.google.com.ec/products",
- "www.google.com.eg/products",
- "www.google.com.et/products",
- "www.google.com.fj/products",
- "www.google.com.gh/products",
- "www.google.com.gi/products",
- "www.google.com.gt/products",
- "www.google.com.hk/products",
- "www.google.com.jm/products",
- "www.google.com.kh/products",
- "www.google.com.kh/products",
- "www.google.com.kw/products",
- "www.google.com.lb/products",
- "www.google.com.lc/products",
- "www.google.com.ly/products",
- "www.google.com.mt/products",
- "www.google.com.mx/products",
- "www.google.com.my/products",
- "www.google.com.na/products",
- "www.google.com.nf/products",
- "www.google.com.ng/products",
- "www.google.com.ni/products",
- "www.google.com.np/products",
- "www.google.com.om/products",
- "www.google.com.pa/products",
- "www.google.com.pe/products",
- "www.google.com.ph/products",
- "www.google.com.pk/products",
- "www.google.com.pr/products",
- "www.google.com.py/products",
- "www.google.com.qa/products",
- "www.google.com.sa/products",
- "www.google.com.sb/products",
- "www.google.com.sg/products",
- "www.google.com.sl/products",
- "www.google.com.sv/products",
- "www.google.com.tj/products",
- "www.google.com.tn/products",
- "www.google.com.tr/products",
- "www.google.com.tw/products",
- "www.google.com.ua/products",
- "www.google.com.uy/products",
- "www.google.com.vc/products",
- "www.google.com.vn/products",
- "www.google.cv/products",
- "www.google.cz/products",
- "www.google.de/products",
- "www.google.dj/products",
- "www.google.dk/products",
- "www.google.dm/products",
- "www.google.dz/products",
- "www.google.ee/products",
- "www.google.es/products",
- "www.google.fi/products",
- "www.google.fm/products",
- "www.google.fr/products",
- "www.google.ga/products",
- "www.google.gd/products",
- "www.google.ge/products",
- "www.google.gf/products",
- "www.google.gg/products",
- "www.google.gl/products",
- "www.google.gm/products",
- "www.google.gp/products",
- "www.google.gr/products",
- "www.google.gy/products",
- "www.google.hn/products",
- "www.google.hr/products",
- "www.google.ht/products",
- "www.google.hu/products",
- "www.google.ie/products",
- "www.google.im/products",
- "www.google.io/products",
- "www.google.iq/products",
- "www.google.is/products",
- "www.google.it/products",
- "www.google.it.ao/products",
- "www.google.je/products",
- "www.google.jo/products",
- "www.google.kg/products",
- "www.google.ki/products",
- "www.google.kz/products",
- "www.google.la/products",
- "www.google.li/products",
- "www.google.lk/products",
- "www.google.lt/products",
- "www.google.lu/products",
- "www.google.lv/products",
- "www.google.md/products",
- "www.google.me/products",
- "www.google.mg/products",
- "www.google.mk/products",
- "www.google.ml/products",
- "www.google.mn/products",
- "www.google.ms/products",
- "www.google.mu/products",
- "www.google.mv/products",
- "www.google.mw/products",
- "www.google.ne/products",
- "www.google.nl/products",
- "www.google.no/products",
- "www.google.nr/products",
- "www.google.nu/products",
- "www.google.pl/products",
- "www.google.pn/products",
- "www.google.ps/products",
- "www.google.pt/products",
- "www.google.ro/products",
- "www.google.rs/products",
- "www.google.ru/products",
- "www.google.rw/products",
- "www.google.sc/products",
- "www.google.se/products",
- "www.google.sh/products",
- "www.google.si/products",
- "www.google.sk/products",
- "www.google.sm/products",
- "www.google.sn/products",
- "www.google.so/products",
- "www.google.st/products",
- "www.google.td/products",
- "www.google.tg/products",
- "www.google.tk/products",
- "www.google.tl/products",
- "www.google.tm/products",
- "www.google.to/products",
- "www.google.tt/products",
- "www.google.us/products",
- "www.google.vg/products",
- "www.google.vu/products",
- "www.google.ws/products"
- ],
- "parameters": [
- "q"
- ]
- },
- "DasOertliche": {
- "domains": [
- "www.dasoertliche.de"
- ],
- "parameters": [
- "kw"
- ]
- },
- "InfoSpace": {
- "domains": [
- "infospace.com",
- "dogpile.com",
- "www.dogpile.com",
- "metacrawler.com",
- "webfetch.com",
- "webcrawler.com",
- "search.kiwee.com",
- "isearch.babylon.com",
- "start.facemoods.com",
- "search.magnetic.com",
- "search.searchcompletion.com",
- "clusty.com"
- ],
- "parameters": [
- "q",
- "s"
- ]
- },
- "Weborama": {
- "domains": [
- "www.weborama.com"
- ],
- "parameters": [
- "QUERY"
- ]
- },
- "Bluewin": {
- "domains": [
- "search.bluewin.ch"
- ],
- "parameters": [
- "searchTerm"
- ]
- },
- "Neti": {
- "domains": [
- "www.neti.ee"
- ],
- "parameters": [
- "query"
- ]
- },
- "Winamp": {
- "domains": [
- "search.winamp.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Nigma": {
- "domains": [
- "nigma.ru"
- ],
- "parameters": [
- "s"
- ]
- },
- "Yahoo! Images": {
- "domains": [
- "image.yahoo.cn",
- "images.search.yahoo.com"
- ],
- "parameters": [
- "p",
- "q"
- ]
- },
- "Exalead": {
- "domains": [
- "www.exalead.fr",
- "www.exalead.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Teoma": {
- "domains": [
- "www.teoma.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Needtofind": {
- "domains": [
- "ko.search.need2find.com"
- ],
- "parameters": [
- "searchfor"
- ]
- },
- "Looksmart": {
- "domains": [
- "www.looksmart.com"
- ],
- "parameters": [
- "key"
- ]
- },
- "Wirtualna Polska": {
- "domains": [
- "szukaj.wp.pl"
- ],
- "parameters": [
- "szukaj"
- ]
- },
- "Toolbarhome": {
- "domains": [
- "www.toolbarhome.com",
- "vshare.toolbarhome.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Searchalot": {
- "domains": [
- "searchalot.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yandex": {
- "domains": [
- "yandex.ru",
- "yandex.ua",
- "yandex.com",
- "yandex.by",
- "www.yandex.ru",
- "www.yandex.ua",
- "www.yandex.com",
- "www.yandex.by"
- ],
- "parameters": [
- "text"
- ]
- },
- "canoe.ca": {
- "domains": [
- "web.canoe.ca"
- ],
- "parameters": [
- "q"
- ]
- },
- "Compuserve": {
- "domains": [
- "websearch.cs.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Blogdigger": {
- "domains": [
- "www.blogdigger.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Startpagina": {
- "domains": [
- "startgoogle.startpagina.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "eo": {
- "domains": [
- "eo.st"
- ],
- "parameters": [
- "x_query"
- ]
- },
- "Zhongsou": {
- "domains": [
- "p.zhongsou.com"
- ],
- "parameters": [
- "w"
- ]
- },
- "La Toile Du Quebec Via Google": {
- "domains": [
- "www.toile.com",
- "web.toile.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Paperball": {
- "domains": [
- "www.paperball.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Jungle Spider": {
- "domains": [
- "www.jungle-spider.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "PeoplePC": {
- "domains": [
- "search.peoplepc.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "MetaCrawler.de": {
- "domains": [
- "s1.metacrawler.de",
- "s2.metacrawler.de",
- "s3.metacrawler.de"
- ],
- "parameters": [
- "qry"
- ]
- },
- "Orange": {
- "domains": [
- "busca.orange.es",
- "search.orange.co.uk"
- ],
- "parameters": [
- "q"
- ]
- },
- "Gule Sider": {
- "domains": [
- "www.gulesider.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Francite": {
- "domains": [
- "recherche.francite.com"
- ],
- "parameters": [
- "name"
- ]
- },
- "Ask Toolbar": {
- "domains": [
- "search.tb.ask.com"
- ],
- "parameters": [
- "searchfor"
- ]
- },
- "Trusted-Search": {
- "domains": [
- "www.trusted--search.com"
- ],
- "parameters": [
- "w"
- ]
- },
- "goo": {
- "domains": [
- "search.goo.ne.jp",
- "ocnsearch.goo.ne.jp"
- ],
- "parameters": [
- "MT"
- ]
- },
- "Fast Browser Search": {
- "domains": [
- "www.fastbrowsersearch.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Blogpulse": {
- "domains": [
- "www.blogpulse.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Volny": {
- "domains": [
- "web.volny.cz"
- ],
- "parameters": [
- "search"
- ]
- },
- "Icerockeet": {
- "domains": [
- "blogs.icerocket.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Terra": {
- "domains": [
- "buscador.terra.es",
- "buscador.terra.cl",
- "buscador.terra.com.br"
- ],
- "parameters": [
- "query"
- ]
- },
- "Amazon": {
- "domains": [
- "amazon.com",
- "www.amazon.com"
- ],
- "parameters": [
- "keywords"
- ]
- },
- "Onet": {
- "domains": [
- "szukaj.onet.pl"
- ],
- "parameters": [
- "qt"
- ]
- },
- "Digg": {
- "domains": [
- "digg.com"
- ],
- "parameters": [
- "s"
- ]
- },
- "Abacho": {
- "domains": [
- "www.abacho.de",
- "www.abacho.com",
- "www.abacho.co.uk",
- "www.se.abacho.com",
- "www.tr.abacho.com",
- "www.abacho.at",
- "www.abacho.fr",
- "www.abacho.es",
- "www.abacho.ch",
- "www.abacho.it"
- ],
- "parameters": [
- "q"
- ]
- },
- "maailm": {
- "domains": [
- "www.maailm.com"
- ],
- "parameters": [
- "tekst"
- ]
- },
- "Flix": {
- "domains": [
- "www.flix.de"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Suchnase": {
- "domains": [
- "www.suchnase.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Freenet": {
- "domains": [
- "suche.freenet.de"
- ],
- "parameters": [
- "query",
- "Keywords"
- ]
- },
- "Poisk.ru": {
- "domains": [
- "www.plazoo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Sharelook": {
- "domains": [
- "www.sharelook.fr"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Najdi": {
- "domains": [
- "www.najdi.si"
- ],
- "parameters": [
- "q"
- ]
- },
- "Picsearch": {
- "domains": [
- "www.picsearch.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Mail.ru": {
- "domains": [
- "go.mail.ru"
- ],
- "parameters": [
- "q"
- ]
- },
- "Alexa": {
- "domains": [
- "alexa.com",
- "search.toolbars.alexa.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Metager": {
- "domains": [
- "meta.rrzn.uni-hannover.de",
- "www.metager.de"
- ],
- "parameters": [
- "eingabe"
- ]
- },
- "Technorati": {
- "domains": [
- "technorati.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Globososo": {
- "domains": [
- "searches.globososo.com",
- "search.globososo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "WWW": {
- "domains": [
- "search.www.ee"
- ],
- "parameters": [
- "query"
- ]
- },
- "Trouvez.com": {
- "domains": [
- "www.trouvez.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "IXquick": {
- "domains": [
- "ixquick.com",
- "www.eu.ixquick.com",
- "ixquick.de",
- "www.ixquick.de",
- "us.ixquick.com",
- "s1.us.ixquick.com",
- "s2.us.ixquick.com",
- "s3.us.ixquick.com",
- "s4.us.ixquick.com",
- "s5.us.ixquick.com",
- "eu.ixquick.com",
- "s8-eu.ixquick.com",
- "s1-eu.ixquick.de"
- ],
- "parameters": [
- "query"
- ]
- },
- "Naver Images": {
- "domains": [
- "image.search.naver.com",
- "imagesearch.naver.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Zapmeta": {
- "domains": [
- "www.zapmeta.com",
- "www.zapmeta.nl",
- "www.zapmeta.de",
- "uk.zapmeta.com"
- ],
- "parameters": [
- "q",
- "query"
- ]
- },
- "Yippy": {
- "domains": [
- "search.yippy.com"
- ],
- "parameters": [
- "q",
- "query"
- ]
- },
- "Gomeo": {
- "domains": [
- "www.gomeo.com"
- ],
- "parameters": [
- "Keywords"
- ]
- },
- "Walhello": {
- "domains": [
- "www.walhello.info",
- "www.walhello.com",
- "www.walhello.de",
- "www.walhello.nl"
- ],
- "parameters": [
- "key"
- ]
- },
- "Meta": {
- "domains": [
- "meta.ua"
- ],
- "parameters": [
- "q"
- ]
- },
- "Skynet": {
- "domains": [
- "www.skynet.be"
- ],
- "parameters": [
- "q"
- ]
- },
- "Searchy": {
- "domains": [
- "www.searchy.co.uk"
- ],
- "parameters": [
- "q"
- ]
- },
- "Findwide": {
- "domains": [
- "search.findwide.com"
- ],
- "parameters": [
- "k"
- ]
- },
- "WebSearch": {
- "domains": [
- "www.websearch.com"
- ],
- "parameters": [
- "qkw",
- "q"
- ]
- },
- "Rambler": {
- "domains": [
- "nova.rambler.ru"
- ],
- "parameters": [
- "query",
- "words"
- ]
- },
- "Latne": {
- "domains": [
- "www.latne.lv"
- ],
- "parameters": [
- "q"
- ]
- },
- "MySearch": {
- "domains": [
- "www.mysearch.com",
- "ms114.mysearch.com",
- "ms146.mysearch.com",
- "kf.mysearch.myway.com",
- "ki.mysearch.myway.com",
- "search.myway.com",
- "search.mywebsearch.com"
- ],
- "parameters": [
- "searchfor",
- "searchFor"
- ]
- },
- "Cuil": {
- "domains": [
- "www.cuil.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Tixuma": {
- "domains": [
- "www.tixuma.de"
- ],
- "parameters": [
- "sc"
- ]
- },
- "Sapo": {
- "domains": [
- "pesquisa.sapo.pt"
- ],
- "parameters": [
- "q"
- ]
- },
- "Gnadenmeer": {
- "domains": [
- "www.gnadenmeer.de"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Arcor": {
- "domains": [
- "www.arcor.de"
- ],
- "parameters": [
- "Keywords"
- ]
- },
- "Naver": {
- "domains": [
- "search.naver.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Zoeken": {
- "domains": [
- "www.zoeken.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Startsiden": {
- "domains": [
- "www.startsiden.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yam": {
- "domains": [
- "search.yam.com"
- ],
- "parameters": [
- "k"
- ]
- },
- "Eniro": {
- "domains": [
- "www.eniro.se"
- ],
- "parameters": [
- "q",
- "search_word"
- ]
- },
- "APOLL07": {
- "domains": [
- "apollo7.de"
- ],
- "parameters": [
- "query"
- ]
- },
- "Biglobe": {
- "domains": [
- "cgi.search.biglobe.ne.jp"
- ],
- "parameters": [
- "q"
- ]
- },
- "Mozbot": {
- "domains": [
- "www.mozbot.fr",
- "www.mozbot.co.uk",
- "www.mozbot.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "ICQ": {
- "domains": [
- "www.icq.com",
- "search.icq.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Baidu": {
- "domains": [
- "www.baidu.com",
- "www1.baidu.com",
- "zhidao.baidu.com",
- "tieba.baidu.com",
- "news.baidu.com",
- "web.gougou.com"
- ],
- "parameters": [
- "wd",
- "word",
- "kw",
- "k"
- ]
- },
- "Conduit": {
- "domains": [
- "search.conduit.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Vindex": {
- "domains": [
- "www.vindex.nl",
- "search.vindex.nl"
- ],
- "parameters": [
- "search_for"
- ]
- },
- "Babylon": {
- "domains": [
- "search.babylon.com",
- "searchassist.babylon.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "TrovaRapido": {
- "domains": [
- "www.trovarapido.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Suchmaschine.com": {
- "domains": [
- "www.suchmaschine.com"
- ],
- "parameters": [
- "suchstr"
- ]
- },
- "Lycos": {
- "domains": [
- "search.lycos.com",
- "www.lycos.com",
- "lycos.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Vinden": {
- "domains": [
- "www.vinden.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Altavista": {
- "domains": [
- "www.altavista.com",
- "search.altavista.com",
- "listings.altavista.com",
- "altavista.de",
- "altavista.fr",
- "be-nl.altavista.com",
- "be-fr.altavista.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "dmoz": {
- "domains": [
- "dmoz.org",
- "editors.dmoz.org"
- ],
- "parameters": [
- "q"
- ]
- },
- "Ecosia": {
- "domains": [
- "ecosia.org"
- ],
- "parameters": [
- "q"
- ]
- },
- "Maxwebsearch": {
- "domains": [
- "maxwebsearch.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Euroseek": {
- "domains": [
- "www.euroseek.com"
- ],
- "parameters": [
- "string"
- ]
- },
- "Bing": {
- "domains": [
- "bing.com",
- "www.bing.com",
- "msnbc.msn.com",
- "dizionario.it.msn.com",
- "cc.bingj.com",
- "m.bing.com"
- ],
- "parameters": [
- "q",
- "Q"
- ]
- },
- "X-recherche": {
- "domains": [
- "www.x-recherche.com"
- ],
- "parameters": [
- "MOTS"
- ]
- },
- "Yandex Images": {
- "domains": [
- "images.yandex.ru",
- "images.yandex.ua",
- "images.yandex.com"
- ],
- "parameters": [
- "text"
- ]
- },
- "GMX": {
- "domains": [
- "suche.gmx.net"
- ],
- "parameters": [
- "su"
- ]
- },
- "Daemon search": {
- "domains": [
- "daemon-search.com",
- "my.daemon-search.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Jungle Key": {
- "domains": [
- "junglekey.com",
- "junglekey.fr"
- ],
- "parameters": [
- "query"
- ]
- },
- "Firstfind": {
- "domains": [
- "www.firstsfind.com"
- ],
- "parameters": [
- "qry"
- ]
- },
- "Crawler": {
- "domains": [
- "www.crawler.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Holmes": {
- "domains": [
- "holmes.ge"
- ],
- "parameters": [
- "q"
- ]
- },
- "Charter": {
- "domains": [
- "www.charter.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Ilse": {
- "domains": [
- "www.ilse.nl"
- ],
- "parameters": [
- "search_for"
- ]
- },
- "earthlink": {
- "domains": [
- "search.earthlink.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Qualigo": {
- "domains": [
- "www.qualigo.at",
- "www.qualigo.ch",
- "www.qualigo.de",
- "www.qualigo.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "El Mundo": {
- "domains": [
- "ariadna.elmundo.es"
- ],
- "parameters": [
- "q"
- ]
- },
- "Metager2": {
- "domains": [
- "metager2.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Forestle": {
- "domains": [
- "forestle.org",
- "www.forestle.org",
- "forestle.mobi"
- ],
- "parameters": [
- "q"
- ]
- },
- "Search.ch": {
- "domains": [
- "www.search.ch"
- ],
- "parameters": [
- "q"
- ]
- },
- "Meinestadt": {
- "domains": [
- "www.meinestadt.de"
- ],
- "parameters": [
- "words"
- ]
- },
- "Freshweather": {
- "domains": [
- "www.fresh-weather.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "AllTheWeb": {
- "domains": [
- "www.alltheweb.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Snapdo": {
- "domains": [
- "search.snapdo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Zoek": {
- "domains": [
- "www3.zoek.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Daum": {
- "domains": [
- "search.daum.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Marktplaats": {
- "domains": [
- "www.marktplaats.nl"
- ],
- "parameters": [
- "query"
- ]
- },
- "suche.info": {
- "domains": [
- "suche.info"
- ],
- "parameters": [
- "q"
- ]
- },
- "Google News": {
- "domains": [
- "news.google.ac",
- "news.google.ad",
- "news.google.ae",
- "news.google.am",
- "news.google.as",
- "news.google.at",
- "news.google.az",
- "news.google.ba",
- "news.google.be",
- "news.google.bf",
- "news.google.bg",
- "news.google.bi",
- "news.google.bj",
- "news.google.bs",
- "news.google.by",
- "news.google.ca",
- "news.google.cat",
- "news.google.cc",
- "news.google.cd",
- "news.google.cf",
- "news.google.cg",
- "news.google.ch",
- "news.google.ci",
- "news.google.cl",
- "news.google.cm",
- "news.google.cn",
- "news.google.co.bw",
- "news.google.co.ck",
- "news.google.co.cr",
- "news.google.co.id",
- "news.google.co.il",
- "news.google.co.in",
- "news.google.co.jp",
- "news.google.co.ke",
- "news.google.co.kr",
- "news.google.co.ls",
- "news.google.co.ma",
- "news.google.co.mz",
- "news.google.co.nz",
- "news.google.co.th",
- "news.google.co.tz",
- "news.google.co.ug",
- "news.google.co.uk",
- "news.google.co.uz",
- "news.google.co.ve",
- "news.google.co.vi",
- "news.google.co.za",
- "news.google.co.zm",
- "news.google.co.zw",
- "news.google.com",
- "news.google.com.af",
- "news.google.com.ag",
- "news.google.com.ai",
- "news.google.com.ar",
- "news.google.com.au",
- "news.google.com.bd",
- "news.google.com.bh",
- "news.google.com.bn",
- "news.google.com.bo",
- "news.google.com.br",
- "news.google.com.by",
- "news.google.com.bz",
- "news.google.com.co",
- "news.google.com.cu",
- "news.google.com.cy",
- "news.google.com.do",
- "news.google.com.ec",
- "news.google.com.eg",
- "news.google.com.et",
- "news.google.com.fj",
- "news.google.com.gh",
- "news.google.com.gi",
- "news.google.com.gt",
- "news.google.com.hk",
- "news.google.com.jm",
- "news.google.com.kh",
- "news.google.com.kh",
- "news.google.com.kw",
- "news.google.com.lb",
- "news.google.com.lc",
- "news.google.com.ly",
- "news.google.com.mt",
- "news.google.com.mx",
- "news.google.com.my",
- "news.google.com.na",
- "news.google.com.nf",
- "news.google.com.ng",
- "news.google.com.ni",
- "news.google.com.np",
- "news.google.com.om",
- "news.google.com.pa",
- "news.google.com.pe",
- "news.google.com.ph",
- "news.google.com.pk",
- "news.google.com.pr",
- "news.google.com.py",
- "news.google.com.qa",
- "news.google.com.sa",
- "news.google.com.sb",
- "news.google.com.sg",
- "news.google.com.sl",
- "news.google.com.sv",
- "news.google.com.tj",
- "news.google.com.tn",
- "news.google.com.tr",
- "news.google.com.tw",
- "news.google.com.ua",
- "news.google.com.uy",
- "news.google.com.vc",
- "news.google.com.vn",
- "news.google.cv",
- "news.google.cz",
- "news.google.de",
- "news.google.dj",
- "news.google.dk",
- "news.google.dm",
- "news.google.dz",
- "news.google.ee",
- "news.google.es",
- "news.google.fi",
- "news.google.fm",
- "news.google.fr",
- "news.google.ga",
- "news.google.gd",
- "news.google.ge",
- "news.google.gf",
- "news.google.gg",
- "news.google.gl",
- "news.google.gm",
- "news.google.gp",
- "news.google.gr",
- "news.google.gy",
- "news.google.hn",
- "news.google.hr",
- "news.google.ht",
- "news.google.hu",
- "news.google.ie",
- "news.google.im",
- "news.google.io",
- "news.google.iq",
- "news.google.is",
- "news.google.it",
- "news.google.it.ao",
- "news.google.je",
- "news.google.jo",
- "news.google.kg",
- "news.google.ki",
- "news.google.kz",
- "news.google.la",
- "news.google.li",
- "news.google.lk",
- "news.google.lt",
- "news.google.lu",
- "news.google.lv",
- "news.google.md",
- "news.google.me",
- "news.google.mg",
- "news.google.mk",
- "news.google.ml",
- "news.google.mn",
- "news.google.ms",
- "news.google.mu",
- "news.google.mv",
- "news.google.mw",
- "news.google.ne",
- "news.google.nl",
- "news.google.no",
- "news.google.nr",
- "news.google.nu",
- "news.google.pl",
- "news.google.pn",
- "news.google.ps",
- "news.google.pt",
- "news.google.ro",
- "news.google.rs",
- "news.google.ru",
- "news.google.rw",
- "news.google.sc",
- "news.google.se",
- "news.google.sh",
- "news.google.si",
- "news.google.sk",
- "news.google.sm",
- "news.google.sn",
- "news.google.so",
- "news.google.st",
- "news.google.td",
- "news.google.tg",
- "news.google.tk",
- "news.google.tl",
- "news.google.tm",
- "news.google.to",
- "news.google.tt",
- "news.google.us",
- "news.google.vg",
- "news.google.vu",
- "news.google.ws"
- ],
- "parameters": [
- "q"
- ]
- },
- "Zoohoo": {
- "domains": [
- "zoohoo.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Seznam": {
- "domains": [
- "search.seznam.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Online.no": {
- "domains": [
- "online.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Eurip": {
- "domains": [
- "www.eurip.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "all.by": {
- "domains": [
- "all.by"
- ],
- "parameters": [
- "query"
- ]
- },
- "Road Runner Search": {
- "domains": [
- "search.rr.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Opplysningen 1881": {
- "domains": [
- "www.1881.no"
- ],
- "parameters": [
- "Query"
- ]
- },
- "YouGoo": {
- "domains": [
- "www.yougoo.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "Bing Images": {
- "domains": [
- "bing.com/images/search",
- "www.bing.com/images/search"
- ],
- "parameters": [
- "q",
- "Q"
- ]
- },
- "Geona": {
- "domains": [
- "geona.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Nate": {
- "domains": [
- "search.nate.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "DuckDuckGo": {
- "domains": [
- "duckduckgo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Hotbot": {
- "domains": [
- "www.hotbot.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Kvasir": {
- "domains": [
- "www.kvasir.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Austronaut": {
- "domains": [
- "www2.austronaut.at",
- "www1.astronaut.at"
- ],
- "parameters": [
- "q"
- ]
- },
- "Excite": {
- "domains": [
- "search.excite.it",
- "search.excite.fr",
- "search.excite.de",
- "search.excite.co.uk",
- "serach.excite.es",
- "search.excite.nl",
- "msxml.excite.com",
- "www.excite.co.jp"
- ],
- "parameters": [
- "q",
- "search"
- ]
- },
- "qip": {
- "domains": [
- "search.qip.ru"
- ],
- "parameters": [
- "query"
- ]
- },
- "Certified-Toolbar": {
- "domains": [
- "search.certified-toolbar.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yahoo!": {
- "domains": [
- "search.yahoo.com",
- "yahoo.com",
- "ar.search.yahoo.com",
- "ar.yahoo.com",
- "au.search.yahoo.com",
- "au.yahoo.com",
- "br.search.yahoo.com",
- "br.yahoo.com",
- "cade.searchde.yahoo.com",
- "cade.yahoo.com",
- "chinese.searchinese.yahoo.com",
- "chinese.yahoo.com",
- "cn.search.yahoo.com",
- "cn.yahoo.com",
- "de.search.yahoo.com",
- "de.yahoo.com",
- "dk.search.yahoo.com",
- "dk.yahoo.com",
- "es.search.yahoo.com",
- "es.yahoo.com",
- "espanol.searchpanol.yahoo.com",
- "espanol.searchpanol.yahoo.com",
- "espanol.yahoo.com",
- "espanol.yahoo.com",
- "fr.search.yahoo.com",
- "fr.yahoo.com",
- "ie.search.yahoo.com",
- "ie.yahoo.com",
- "it.search.yahoo.com",
- "it.yahoo.com",
- "kr.search.yahoo.com",
- "kr.yahoo.com",
- "mx.search.yahoo.com",
- "mx.yahoo.com",
- "no.search.yahoo.com",
- "no.yahoo.com",
- "nz.search.yahoo.com",
- "nz.yahoo.com",
- "one.cn.yahoo.com",
- "one.searchn.yahoo.com",
- "qc.search.yahoo.com",
- "qc.search.yahoo.com",
- "qc.search.yahoo.com",
- "qc.yahoo.com",
- "qc.yahoo.com",
- "se.search.yahoo.com",
- "se.search.yahoo.com",
- "se.yahoo.com",
- "search.searcharch.yahoo.com",
- "search.yahoo.com",
- "uk.search.yahoo.com",
- "uk.yahoo.com",
- "www.yahoo.co.jp",
- "search.yahoo.co.jp",
- "www.cercato.it",
- "search.offerbox.com",
- "ys.mirostart.com"
- ],
- "parameters": [
- "p",
- "q"
- ]
- },
- "URL.ORGanizier": {
- "domains": [
- "www.url.org"
- ],
- "parameters": [
- "q"
- ]
- },
- "Witch": {
- "domains": [
- "www.witch.de"
- ],
- "parameters": [
- "search"
- ]
- },
- "Mister Wong": {
- "domains": [
- "www.mister-wong.com",
- "www.mister-wong.de"
- ],
- "parameters": [
- "Keywords"
- ]
- },
- "Aport": {
- "domains": [
- "sm.aport.ru"
- ],
- "parameters": [
- "r"
- ]
- },
- "Web.de": {
- "domains": [
- "suche.web.de"
- ],
- "parameters": [
- "su"
- ]
- },
- "Ask": {
- "domains": [
- "ask.com",
- "www.ask.com",
- "web.ask.com",
- "int.ask.com",
- "mws.ask.com",
- "uk.ask.com",
- "images.ask.com",
- "ask.reference.com",
- "www.askkids.com",
- "iwon.ask.com",
- "www.ask.co.uk",
- "www.qbyrd.com",
- "search-results.com",
- "uk.search-results.com",
- "www.search-results.com",
- "int.search-results.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Centrum": {
- "domains": [
- "serach.centrum.cz",
- "morfeo.centrum.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Everyclick": {
- "domains": [
- "www.everyclick.com"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Google Video": {
- "domains": [
- "video.google.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Delfi": {
- "domains": [
- "otsing.delfi.ee"
- ],
- "parameters": [
- "q"
- ]
- },
- "blekko": {
- "domains": [
- "blekko.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Jyxo": {
- "domains": [
- "jyxo.1188.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Kataweb": {
- "domains": [
- "www.kataweb.it"
- ],
- "parameters": [
- "q"
- ]
- },
- "uol.com.br": {
- "domains": [
- "busca.uol.com.br"
- ],
- "parameters": [
- "q"
- ]
- },
- "Arianna": {
- "domains": [
- "arianna.libero.it",
- "www.arianna.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Mamma": {
- "domains": [
- "www.mamma.com",
- "mamma75.mamma.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Yatedo": {
- "domains": [
- "www.yatedo.com",
- "www.yatedo.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "Twingly": {
- "domains": [
- "www.twingly.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Delfi latvia": {
- "domains": [
- "smart.delfi.lv"
- ],
- "parameters": [
- "q"
- ]
- },
- "PriceRunner": {
- "domains": [
- "www.pricerunner.co.uk"
- ],
- "parameters": [
- "q"
- ]
- },
- "Rakuten": {
- "domains": [
- "websearch.rakuten.co.jp"
- ],
- "parameters": [
- "qt"
- ]
- },
- "Google": {
- "domains": [
- "www.google.com",
- "www.google.ac",
- "www.google.ad",
- "www.google.com.af",
- "www.google.com.ag",
- "www.google.com.ai",
- "www.google.am",
- "www.google.it.ao",
- "www.google.com.ar",
- "www.google.as",
- "www.google.at",
- "www.google.com.au",
- "www.google.az",
- "www.google.ba",
- "www.google.com.bd",
- "www.google.be",
- "www.google.bf",
- "www.google.bg",
- "www.google.com.bh",
- "www.google.bi",
- "www.google.bj",
- "www.google.com.bn",
- "www.google.com.bo",
- "www.google.com.br",
- "www.google.bs",
- "www.google.co.bw",
- "www.google.com.by",
- "www.google.by",
- "www.google.com.bz",
- "www.google.ca",
- "www.google.com.kh",
- "www.google.cc",
- "www.google.cd",
- "www.google.cf",
- "www.google.cat",
- "www.google.cg",
- "www.google.ch",
- "www.google.ci",
- "www.google.co.ck",
- "www.google.cl",
- "www.google.cm",
- "www.google.cn",
- "www.google.com.co",
- "www.google.co.cr",
- "www.google.com.cu",
- "www.google.cv",
- "www.google.com.cy",
- "www.google.cz",
- "www.google.de",
- "www.google.dj",
- "www.google.dk",
- "www.google.dm",
- "www.google.com.do",
- "www.google.dz",
- "www.google.com.ec",
- "www.google.ee",
- "www.google.com.eg",
- "www.google.es",
- "www.google.com.et",
- "www.google.fi",
- "www.google.com.fj",
- "www.google.fm",
- "www.google.fr",
- "www.google.ga",
- "www.google.gd",
- "www.google.ge",
- "www.google.gf",
- "www.google.gg",
- "www.google.com.gh",
- "www.google.com.gi",
- "www.google.gl",
- "www.google.gm",
- "www.google.gp",
- "www.google.gr",
- "www.google.com.gt",
- "www.google.gy",
- "www.google.com.hk",
- "www.google.hn",
- "www.google.hr",
- "www.google.ht",
- "www.google.hu",
- "www.google.co.id",
- "www.google.iq",
- "www.google.ie",
- "www.google.co.il",
- "www.google.im",
- "www.google.co.in",
- "www.google.io",
- "www.google.is",
- "www.google.it",
- "www.google.je",
- "www.google.com.jm",
- "www.google.jo",
- "www.google.co.jp",
- "www.google.co.ke",
- "www.google.com.kh",
- "www.google.ki",
- "www.google.kg",
- "www.google.co.kr",
- "www.google.com.kw",
- "www.google.kz",
- "www.google.la",
- "www.google.com.lb",
- "www.google.com.lc",
- "www.google.li",
- "www.google.lk",
- "www.google.co.ls",
- "www.google.lt",
- "www.google.lu",
- "www.google.lv",
- "www.google.com.ly",
- "www.google.co.ma",
- "www.google.md",
- "www.google.me",
- "www.google.mg",
- "www.google.mk",
- "www.google.ml",
- "www.google.mn",
- "www.google.ms",
- "www.google.com.mt",
- "www.google.mu",
- "www.google.mv",
- "www.google.mw",
- "www.google.com.mx",
- "www.google.com.my",
- "www.google.co.mz",
- "www.google.com.na",
- "www.google.ne",
- "www.google.com.nf",
- "www.google.com.ng",
- "www.google.com.ni",
- "www.google.nl",
- "www.google.no",
- "www.google.com.np",
- "www.google.nr",
- "www.google.nu",
- "www.google.co.nz",
- "www.google.com.om",
- "www.google.com.pa",
- "www.google.com.pe",
- "www.google.com.ph",
- "www.google.com.pk",
- "www.google.pl",
- "www.google.pn",
- "www.google.com.pr",
- "www.google.ps",
- "www.google.pt",
- "www.google.com.py",
- "www.google.com.qa",
- "www.google.ro",
- "www.google.rs",
- "www.google.ru",
- "www.google.rw",
- "www.google.com.sa",
- "www.google.com.sb",
- "www.google.sc",
- "www.google.se",
- "www.google.com.sg",
- "www.google.sh",
- "www.google.si",
- "www.google.sk",
- "www.google.com.sl",
- "www.google.sn",
- "www.google.sm",
- "www.google.so",
- "www.google.st",
- "www.google.com.sv",
- "www.google.td",
- "www.google.tg",
- "www.google.co.th",
- "www.google.com.tj",
- "www.google.tk",
- "www.google.tl",
- "www.google.tm",
- "www.google.to",
- "www.google.com.tn",
- "www.google.com.tr",
- "www.google.tt",
- "www.google.com.tw",
- "www.google.co.tz",
- "www.google.com.ua",
- "www.google.co.ug",
- "www.google.ae",
- "www.google.co.uk",
- "www.google.us",
- "www.google.com.uy",
- "www.google.co.uz",
- "www.google.com.vc",
- "www.google.co.ve",
- "www.google.vg",
- "www.google.co.vi",
- "www.google.com.vn",
- "www.google.vu",
- "www.google.ws",
- "www.google.co.za",
- "www.google.co.zm",
- "www.google.co.zw",
- "google.com",
- "google.ac",
- "google.ad",
- "google.com.af",
- "google.com.ag",
- "google.com.ai",
- "google.am",
- "google.it.ao",
- "google.com.ar",
- "google.as",
- "google.at",
- "google.com.au",
- "google.az",
- "google.ba",
- "google.com.bd",
- "google.be",
- "google.bf",
- "google.bg",
- "google.com.bh",
- "google.bi",
- "google.bj",
- "google.com.bn",
- "google.com.bo",
- "google.com.br",
- "google.bs",
- "google.co.bw",
- "google.com.by",
- "google.by",
- "google.com.bz",
- "google.ca",
- "google.com.kh",
- "google.cc",
- "google.cd",
- "google.cf",
- "google.cat",
- "google.cg",
- "google.ch",
- "google.ci",
- "google.co.ck",
- "google.cl",
- "google.cm",
- "google.cn",
- "google.com.co",
- "google.co.cr",
- "google.com.cu",
- "google.cv",
- "google.com.cy",
- "google.cz",
- "google.de",
- "google.dj",
- "google.dk",
- "google.dm",
- "google.com.do",
- "google.dz",
- "google.com.ec",
- "google.ee",
- "google.com.eg",
- "google.es",
- "google.com.et",
- "google.fi",
- "google.com.fj",
- "google.fm",
- "google.fr",
- "google.ga",
- "google.gd",
- "google.ge",
- "google.gf",
- "google.gg",
- "google.com.gh",
- "google.com.gi",
- "google.gl",
- "google.gm",
- "google.gp",
- "google.gr",
- "google.com.gt",
- "google.gy",
- "google.com.hk",
- "google.hn",
- "google.hr",
- "google.ht",
- "google.hu",
- "google.co.id",
- "google.iq",
- "google.ie",
- "google.co.il",
- "google.im",
- "google.co.in",
- "google.io",
- "google.is",
- "google.it",
- "google.je",
- "google.com.jm",
- "google.jo",
- "google.co.jp",
- "google.co.ke",
- "google.com.kh",
- "google.ki",
- "google.kg",
- "google.co.kr",
- "google.com.kw",
- "google.kz",
- "google.la",
- "google.com.lb",
- "google.com.lc",
- "google.li",
- "google.lk",
- "google.co.ls",
- "google.lt",
- "google.lu",
- "google.lv",
- "google.com.ly",
- "google.co.ma",
- "google.md",
- "google.me",
- "google.mg",
- "google.mk",
- "google.ml",
- "google.mn",
- "google.ms",
- "google.com.mt",
- "google.mu",
- "google.mv",
- "google.mw",
- "google.com.mx",
- "google.com.my",
- "google.co.mz",
- "google.com.na",
- "google.ne",
- "google.com.nf",
- "google.com.ng",
- "google.com.ni",
- "google.nl",
- "google.no",
- "google.com.np",
- "google.nr",
- "google.nu",
- "google.co.nz",
- "google.com.om",
- "google.com.pa",
- "google.com.pe",
- "google.com.ph",
- "google.com.pk",
- "google.pl",
- "google.pn",
- "google.com.pr",
- "google.ps",
- "google.pt",
- "google.com.py",
- "google.com.qa",
- "google.ro",
- "google.rs",
- "google.ru",
- "google.rw",
- "google.com.sa",
- "google.com.sb",
- "google.sc",
- "google.se",
- "google.com.sg",
- "google.sh",
- "google.si",
- "google.sk",
- "google.com.sl",
- "google.sn",
- "google.sm",
- "google.so",
- "google.st",
- "google.com.sv",
- "google.td",
- "google.tg",
- "google.co.th",
- "google.com.tj",
- "google.tk",
- "google.tl",
- "google.tm",
- "google.to",
- "google.com.tn",
- "google.com.tr",
- "google.tt",
- "google.com.tw",
- "google.co.tz",
- "google.com.ua",
- "google.co.ug",
- "google.ae",
- "google.co.uk",
- "google.us",
- "google.com.uy",
- "google.co.uz",
- "google.com.vc",
- "google.co.ve",
- "google.vg",
- "google.co.vi",
- "google.com.vn",
- "google.vu",
- "google.ws",
- "google.co.za",
- "google.co.zm",
- "google.co.zw",
- "search.avg.com",
- "isearch.avg.com",
- "www.cnn.com",
- "darkoogle.com",
- "search.darkoogle.com",
- "search.foxtab.com",
- "www.gooofullsearch.com",
- "search.hiyo.com",
- "search.incredimail.com",
- "search1.incredimail.com",
- "search2.incredimail.com",
- "search3.incredimail.com",
- "search4.incredimail.com",
- "search.incredibar.com",
- "search.sweetim.com",
- "www.fastweb.it",
- "search.juno.com",
- "find.tdc.dk",
- "searchresults.verizon.com",
- "search.walla.co.il",
- "search.alot.com",
- "www.googleearth.de",
- "www.googleearth.fr",
- "webcache.googleusercontent.com",
- "encrypted.google.com",
- "googlesyndicatedsearch.com"
- ],
- "parameters": [
- "q",
- "query",
- "Keywords"
- ]
- },
- "Google Blogsearch": {
- "domains": [
- "blogsearch.google.ac",
- "blogsearch.google.ad",
- "blogsearch.google.ae",
- "blogsearch.google.am",
- "blogsearch.google.as",
- "blogsearch.google.at",
- "blogsearch.google.az",
- "blogsearch.google.ba",
- "blogsearch.google.be",
- "blogsearch.google.bf",
- "blogsearch.google.bg",
- "blogsearch.google.bi",
- "blogsearch.google.bj",
- "blogsearch.google.bs",
- "blogsearch.google.by",
- "blogsearch.google.ca",
- "blogsearch.google.cat",
- "blogsearch.google.cc",
- "blogsearch.google.cd",
- "blogsearch.google.cf",
- "blogsearch.google.cg",
- "blogsearch.google.ch",
- "blogsearch.google.ci",
- "blogsearch.google.cl",
- "blogsearch.google.cm",
- "blogsearch.google.cn",
- "blogsearch.google.co.bw",
- "blogsearch.google.co.ck",
- "blogsearch.google.co.cr",
- "blogsearch.google.co.id",
- "blogsearch.google.co.il",
- "blogsearch.google.co.in",
- "blogsearch.google.co.jp",
- "blogsearch.google.co.ke",
- "blogsearch.google.co.kr",
- "blogsearch.google.co.ls",
- "blogsearch.google.co.ma",
- "blogsearch.google.co.mz",
- "blogsearch.google.co.nz",
- "blogsearch.google.co.th",
- "blogsearch.google.co.tz",
- "blogsearch.google.co.ug",
- "blogsearch.google.co.uk",
- "blogsearch.google.co.uz",
- "blogsearch.google.co.ve",
- "blogsearch.google.co.vi",
- "blogsearch.google.co.za",
- "blogsearch.google.co.zm",
- "blogsearch.google.co.zw",
- "blogsearch.google.com",
- "blogsearch.google.com.af",
- "blogsearch.google.com.ag",
- "blogsearch.google.com.ai",
- "blogsearch.google.com.ar",
- "blogsearch.google.com.au",
- "blogsearch.google.com.bd",
- "blogsearch.google.com.bh",
- "blogsearch.google.com.bn",
- "blogsearch.google.com.bo",
- "blogsearch.google.com.br",
- "blogsearch.google.com.by",
- "blogsearch.google.com.bz",
- "blogsearch.google.com.co",
- "blogsearch.google.com.cu",
- "blogsearch.google.com.cy",
- "blogsearch.google.com.do",
- "blogsearch.google.com.ec",
- "blogsearch.google.com.eg",
- "blogsearch.google.com.et",
- "blogsearch.google.com.fj",
- "blogsearch.google.com.gh",
- "blogsearch.google.com.gi",
- "blogsearch.google.com.gt",
- "blogsearch.google.com.hk",
- "blogsearch.google.com.jm",
- "blogsearch.google.com.kh",
- "blogsearch.google.com.kh",
- "blogsearch.google.com.kw",
- "blogsearch.google.com.lb",
- "blogsearch.google.com.lc",
- "blogsearch.google.com.ly",
- "blogsearch.google.com.mt",
- "blogsearch.google.com.mx",
- "blogsearch.google.com.my",
- "blogsearch.google.com.na",
- "blogsearch.google.com.nf",
- "blogsearch.google.com.ng",
- "blogsearch.google.com.ni",
- "blogsearch.google.com.np",
- "blogsearch.google.com.om",
- "blogsearch.google.com.pa",
- "blogsearch.google.com.pe",
- "blogsearch.google.com.ph",
- "blogsearch.google.com.pk",
- "blogsearch.google.com.pr",
- "blogsearch.google.com.py",
- "blogsearch.google.com.qa",
- "blogsearch.google.com.sa",
- "blogsearch.google.com.sb",
- "blogsearch.google.com.sg",
- "blogsearch.google.com.sl",
- "blogsearch.google.com.sv",
- "blogsearch.google.com.tj",
- "blogsearch.google.com.tn",
- "blogsearch.google.com.tr",
- "blogsearch.google.com.tw",
- "blogsearch.google.com.ua",
- "blogsearch.google.com.uy",
- "blogsearch.google.com.vc",
- "blogsearch.google.com.vn",
- "blogsearch.google.cv",
- "blogsearch.google.cz",
- "blogsearch.google.de",
- "blogsearch.google.dj",
- "blogsearch.google.dk",
- "blogsearch.google.dm",
- "blogsearch.google.dz",
- "blogsearch.google.ee",
- "blogsearch.google.es",
- "blogsearch.google.fi",
- "blogsearch.google.fm",
- "blogsearch.google.fr",
- "blogsearch.google.ga",
- "blogsearch.google.gd",
- "blogsearch.google.ge",
- "blogsearch.google.gf",
- "blogsearch.google.gg",
- "blogsearch.google.gl",
- "blogsearch.google.gm",
- "blogsearch.google.gp",
- "blogsearch.google.gr",
- "blogsearch.google.gy",
- "blogsearch.google.hn",
- "blogsearch.google.hr",
- "blogsearch.google.ht",
- "blogsearch.google.hu",
- "blogsearch.google.ie",
- "blogsearch.google.im",
- "blogsearch.google.io",
- "blogsearch.google.iq",
- "blogsearch.google.is",
- "blogsearch.google.it",
- "blogsearch.google.it.ao",
- "blogsearch.google.je",
- "blogsearch.google.jo",
- "blogsearch.google.kg",
- "blogsearch.google.ki",
- "blogsearch.google.kz",
- "blogsearch.google.la",
- "blogsearch.google.li",
- "blogsearch.google.lk",
- "blogsearch.google.lt",
- "blogsearch.google.lu",
- "blogsearch.google.lv",
- "blogsearch.google.md",
- "blogsearch.google.me",
- "blogsearch.google.mg",
- "blogsearch.google.mk",
- "blogsearch.google.ml",
- "blogsearch.google.mn",
- "blogsearch.google.ms",
- "blogsearch.google.mu",
- "blogsearch.google.mv",
- "blogsearch.google.mw",
- "blogsearch.google.ne",
- "blogsearch.google.nl",
- "blogsearch.google.no",
- "blogsearch.google.nr",
- "blogsearch.google.nu",
- "blogsearch.google.pl",
- "blogsearch.google.pn",
- "blogsearch.google.ps",
- "blogsearch.google.pt",
- "blogsearch.google.ro",
- "blogsearch.google.rs",
- "blogsearch.google.ru",
- "blogsearch.google.rw",
- "blogsearch.google.sc",
- "blogsearch.google.se",
- "blogsearch.google.sh",
- "blogsearch.google.si",
- "blogsearch.google.sk",
- "blogsearch.google.sm",
- "blogsearch.google.sn",
- "blogsearch.google.so",
- "blogsearch.google.st",
- "blogsearch.google.td",
- "blogsearch.google.tg",
- "blogsearch.google.tk",
- "blogsearch.google.tl",
- "blogsearch.google.tm",
- "blogsearch.google.to",
- "blogsearch.google.tt",
- "blogsearch.google.us",
- "blogsearch.google.vg",
- "blogsearch.google.vu",
- "blogsearch.google.ws"
- ],
- "parameters": [
- "q"
- ]
- },
- "Hooseek.com": {
- "domains": [
- "www.hooseek.com"
- ],
- "parameters": [
- "recherche"
- ]
- },
- "Dalesearch": {
- "domains": [
- "www.dalesearch.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Alice Adsl": {
- "domains": [
- "rechercher.aliceadsl.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "T-Online": {
- "domains": [
- "suche.t-online.de",
- "brisbane.t-online.de",
- "navigationshilfe.t-online.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "soso.com": {
- "domains": [
- "www.soso.com"
- ],
- "parameters": [
- "w"
- ]
- },
- "Sogou": {
- "domains": [
- "www.sougou.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Hit-Parade": {
- "domains": [
- "req.-hit-parade.com",
- "class.hit-parade.com",
- "www.hit-parade.com"
- ],
- "parameters": [
- "p7"
- ]
- },
- "SearchCanvas": {
- "domains": [
- "www.searchcanvas.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Interia": {
- "domains": [
- "www.google.interia.pl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Genieo": {
- "domains": [
- "search.genieo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Tiscali": {
- "domains": [
- "search.tiscali.it",
- "search-dyn.tiscali.it",
- "hledani.tiscali.cz"
- ],
- "parameters": [
- "q",
- "key"
- ]
- },
- "Clix": {
- "domains": [
- "pesquisa.clix.pt"
- ],
- "parameters": [
- "question"
- ]
- }
- },
- "email": {
- "Bigpond": {
- "domains": [
- "webmail.bigpond.com",
- "webmail2.bigpond.com"
- ]
- },
- "Naver Mail": {
- "domains": [
- "mail.naver.com"
- ]
- },
- "Optus Zoo": {
- "domains": [
- "webmail.optuszoo.com.au"
- ]
- },
- "Seznam Mail": {
- "domains": [
- "email.seznam.cz"
- ]
- },
- "126 Mail": {
- "domains": [
- "mail.126.com"
- ]
- },
- "Outlook.com": {
- "domains": [
- "mail.live.com"
- ]
- },
- "AOL Mail": {
- "domains": [
- "mail.aol.com"
- ]
- },
- "Daum Mail": {
- "domains": [
- "mail2.daum.net"
- ]
- },
- "Yahoo! Mail": {
- "domains": [
- "mail.yahoo.net",
- "mail.yahoo.com",
- "mail.yahoo.co.uk",
- "mail.yahoo.co.jp"
- ]
- },
- "163 Mail": {
- "domains": [
- "mail.163.com"
- ]
- },
- "Orange Webmail": {
- "domains": [
- "orange.fr/webmail"
- ]
- },
- "QQ Mail": {
- "domains": [
- "mail.qq.com"
- ]
- },
- "Mynet Mail": {
- "domains": [
- "mail.mynet.com"
- ]
- },
- "Gmail": {
- "domains": [
- "mail.google.com"
- ]
- }
- },
- "social": {
- "hi5": {
- "domains": [
- "hi5.com"
- ]
- },
- "Friendster": {
- "domains": [
- "friendster.com"
- ]
- },
- "Weibo": {
- "domains": [
- "weibo.com",
- "t.cn"
- ]
- },
- "Xanga": {
- "domains": [
- "xanga.com"
- ]
- },
- "Myspace": {
- "domains": [
- "myspace.com"
- ]
- },
- "Buzznet": {
- "domains": [
- "wayn.com"
- ]
- },
- "MyLife": {
- "domains": [
- "mylife.ru"
- ]
- },
- "Flickr": {
- "domains": [
- "flickr.com"
- ]
- },
- "Sonico.com": {
- "domains": [
- "sonico.com"
- ]
- },
- "Odnoklassniki": {
- "domains": [
- "odnoklassniki.ru"
- ]
- },
- "GitHub": {
- "domains": [
- "github.com"
- ]
- },
- "Classmates": {
- "domains": [
- "classmates.com"
- ]
- },
- "Friends Reunited": {
- "domains": [
- "friendsreunited.com"
- ]
- },
- "Renren": {
- "domains": [
- "renren.com"
- ]
- },
- "Quora": {
- "domains": [
- "quora.com"
- ]
- },
- "Gaia Online": {
- "domains": [
- "gaiaonline.com"
- ]
- },
- "Netlog": {
- "domains": [
- "netlog.com"
- ]
- },
- "Orkut": {
- "domains": [
- "orkut.com"
- ]
- },
- "MyHeritage": {
- "domains": [
- "myheritage.com"
- ]
- },
- "Multiply": {
- "domains": [
- "multiply.com"
- ]
- },
- "myYearbook": {
- "domains": [
- "myyearbook.com"
- ]
- },
- "WeeWorld": {
- "domains": [
- "weeworld.com"
- ]
- },
- "Vimeo": {
- "domains": [
- "vimeo.com"
- ]
- },
- "Eksi Sozluk": {
- "domains": [
- "Sozluk.com",
- "sourtimes.org"
- ]
- },
- "Geni": {
- "domains": [
- "geni.com"
- ]
- },
- "Uludag Sozluk": {
- "domains": [
- "uludagsozluk.com",
- "ulusozluk.com"
- ]
- },
- "SourceForge": {
- "domains": [
- "sourceforge.net"
- ]
- },
- "Plaxo": {
- "domains": [
- "plaxo.com"
- ]
- },
- "Taringa!": {
- "domains": [
- "taringa.net"
- ]
- },
- "Tagged": {
- "domains": [
- "login.tagged.com"
- ]
- },
- "XING": {
- "domains": [
- "xing.com"
- ]
- },
- "Instagram": {
- "domains": [
- "instagram.com"
- ]
- },
- "Vkontakte": {
- "domains": [
- "vk.com",
- "vkontakte.ru"
- ]
- },
- "Twitter": {
- "domains": [
- "twitter.com",
- "t.co"
- ]
- },
- "vKruguDruzei.ru": {
- "domains": [
- "vkrugudruzei.ru"
- ]
- },
- "Donanimhaber": {
- "domains": [
- "donanimhaber.com"
- ]
- },
- "WAYN": {
- "domains": [
- "wayn.com"
- ]
- },
- "Tuenti": {
- "domains": [
- "tuenti.com"
- ]
- },
- "Mail.ru": {
- "domains": [
- "my.mail.ru"
- ]
- },
- "Badoo": {
- "domains": [
- "badoo.com"
- ]
- },
- "Instela": {
- "domains": [
- "instela.com"
- ]
- },
- "Habbo": {
- "domains": [
- "habbo.com"
- ]
- },
- "Pinterest": {
- "domains": [
- "pinterest.com"
- ]
- },
- "LinkedIn": {
- "domains": [
- "linkedin.com",
- "lnkd.in"
- ]
- },
- "Foursquare": {
- "domains": [
- "foursquare.com"
- ]
- },
- "Flixster": {
- "domains": [
- "flixster.com"
- ]
- },
- "Windows Live Spaces": {
- "domains": [
- "login.live.com"
- ]
- },
- "BlackPlanet": {
- "domains": [
- "blackplanet.com"
- ]
- },
- "Cyworld": {
- "domains": [
- "global.cyworld.com"
- ]
- },
- "Pocket": {
- "domains": [
- "itusozluk.com"
- ],
- "ITU Sozluk": null
- },
- "Skyrock": {
- "domains": [
- "skyrock.com"
- ]
- },
- "Facebook": {
- "domains": [
- "facebook.com",
- "fb.me",
- "m.facebook.com",
- "l.facebook.com",
- "lm.facebook.com"
- ]
- },
- "Disqus": {
- "domains": [
- "redirect.disqus.com",
- "disq.us",
- "disqus.com"
- ]
- },
- "StudiVZ": {
- "domains": [
- "studivz.net"
- ]
- },
- "Fotolog": {
- "domains": [
- "fotolog.com"
- ]
- },
- "Google+": {
- "domains": [
- "url.google.com",
- "plus.google.com"
- ]
- },
- "Nasza-klasa.pl": {
- "domains": [
- "nk.pl"
- ]
- },
- "Qzone": {
- "domains": [
- "qzone.qq.com"
- ]
- },
- "Douban": {
- "domains": [
- "douban.com"
- ]
- },
- "Bebo": {
- "domains": [
- "bebo.com"
- ]
- },
- "Youtube": {
- "domains": [
- "youtube.com",
- "youtu.be"
- ]
- },
- "Reddit": {
- "domains": [
- "reddit.com"
- ]
- },
- "Identi.ca": {
- "domains": [
- "identi.ca"
- ]
- },
- "StackOverflow": {
- "domains": [
- "stackoverflow.com"
- ]
- },
- "Mixi": {
- "domains": [
- "mixi.jp"
- ]
- },
- "StumbleUpon": {
- "domains": [
- "stumbleupon.com"
- ]
- },
- "Inci Sozluk": {
- "domains": [
- "inci.sozlukspot.com",
- "incisozluk.com",
- "incisozluk.cc"
- ]
- },
- "Viadeo": {
- "domains": [
- "viadeo.com"
- ]
- },
- "Last.fm": {
- "domains": [
- "lastfm.ru"
- ]
- },
- "LiveJournal": {
- "domains": [
- "livejournal.ru"
- ]
- },
- "Tumblr": {
- "domains": [
- "tumblr.com"
- ]
- },
- "Hacker News": {
- "domains": [
- "news.ycombinator.com"
- ]
- },
- "Hocam.com": {
- "domains": [
- "hocam.com"
- ]
- },
- "Delicious": {
- "domains": [
- "delicious.com"
- ]
- },
- "Hyves": {
- "domains": [
- "hyves.nl"
- ]
- },
- "Paper.li": {
- "domains": [
- "paper.li"
- ]
- },
- "MoiKrug.ru": {
- "domains": [
- "moikrug.ru"
- ]
- }
- }
-}
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/dotnet/RefererParser/Resources/referers.yml b/vendor/snowplow/referer-parser/dotnet/RefererParser/Resources/referers.yml
deleted file mode 100644
index e1ecf54f7..000000000
--- a/vendor/snowplow/referer-parser/dotnet/RefererParser/Resources/referers.yml
+++ /dev/null
@@ -1,3621 +0,0 @@
-# #######################################################################################################
-#
-# ALL SUPPORTED REFERERS
-#
-# Broken down into:
-#
-# 1. Medium-unknown providers
-# 2. Email providers
-# 3. Social providers
-# 4. Search providers
-
-
-# #######################################################################################################
-#
-# MEDIUM-UNKNOWN PROVIDERS
-#
-# We know the source, but not the medium.
-# This section is useful for reducing false positives in the other sections
-
-unknown:
-
- Google:
- domains:
- - support.google.com
- - developers.google.com
- - maps.google.com
- - accounts.google.com
- - drive.google.com
- - sites.google.com
- - groups.google.com
- - groups.google.co.uk
- - news.google.co.uk
-
- Yahoo!:
- domains:
- - finance.yahoo.com
- - news.yahoo.com
- - eurosport.yahoo.com
- - sports.yahoo.com
- - astrology.yahoo.com
- - travel.yahoo.com
- - answers.yahoo.com
- - screen.yahoo.com
- - weather.yahoo.com
- - messenger.yahoo.com
- - games.yahoo.com
- - shopping.yahoo.net
- - movies.yahoo.com
- - cars.yahoo.com
- - lifestyle.yahoo.com
- - omg.yahoo.com
- - match.yahoo.net
-
- Taboola:
- domains:
- - trc.taboola.com
- - api.taboola.com
-
- Outbrain:
- domains:
- - paid.outbrain.com
-
-
-# #######################################################################################################
-#
-# EMAIL PROVIDERS
-
-email:
-
- 126 Mail:
- domains:
- - mail.126.com
-
- 163 Mail:
- domains:
- - mail.163.com
-
- AOL Mail:
- domains:
- - mail.aol.com
-
- Bigpond:
- domains:
- - webmail.bigpond.com
- - webmail2.bigpond.com
-
- Daum Mail:
- domains:
- - mail2.daum.net
-
- Gmail:
- domains:
- - mail.google.com
-
- Naver Mail:
- domains:
- - mail.naver.com
-
- Optus Zoo:
- domains:
- - webmail.optuszoo.com.au
-
- Orange Webmail:
- domains:
- - orange.fr/webmail
-
- Outlook.com:
- domains:
- - mail.live.com
-
- QQ Mail:
- domains:
- - mail.qq.com
-
- Seznam Mail:
- domains:
- - email.seznam.cz
-
- Yahoo! Mail:
- domains:
- - mail.yahoo.net
- - mail.yahoo.com
- - mail.yahoo.co.uk
- - mail.yahoo.co.jp
-
- Mynet Mail:
- domains:
- - mail.mynet.com
-
-
-# #######################################################################################################
-#
-# SOCIAL PROVIDERS
-
-social:
-
- Facebook:
- domains:
- - facebook.com
- - fb.me
- - m.facebook.com
- - l.facebook.com
- - lm.facebook.com
-
- Qzone:
- domains:
- - qzone.qq.com
-
- Habbo:
- domains:
- - habbo.com
-
- Twitter:
- domains:
- - twitter.com
- - t.co
-
- Instagram:
- domains:
- - instagram.com
-
- Youtube:
- domains:
- - youtube.com
- - youtu.be
-
- Vimeo:
- domains:
- - vimeo.com
-
- Renren:
- domains:
- - renren.com
-
- Windows Live Spaces:
- domains:
- - login.live.com
-
- LinkedIn:
- domains:
- - linkedin.com
- - lnkd.in
-
- Bebo:
- domains:
- - bebo.com
-
- Vkontakte:
- domains:
- - vk.com
- - vkontakte.ru
-
- Tagged:
- domains:
- - login.tagged.com
-
- Orkut:
- domains:
- - orkut.com
-
- Myspace:
- domains:
- - myspace.com
-
- Friendster:
- domains:
- - friendster.com
-
- Badoo:
- domains:
- - badoo.com
-
- hi5:
- domains:
- - hi5.com
-
- Netlog:
- domains:
- - netlog.com
-
- Flixster:
- domains:
- - flixster.com
-
- MyLife:
- domains:
- - mylife.ru
-
- Paper.li:
- domains:
- - paper.li
-
- Classmates:
- domains:
- - classmates.com
-
- GitHub:
- domains:
- - github.com
-
- Google+:
- domains:
- - url.google.com
- - plus.google.com
-
- Douban:
- domains:
- - douban.com
-
- Odnoklassniki:
- domains:
- - odnoklassniki.ru
-
- Viadeo:
- domains:
- - viadeo.com
-
- Flickr:
- domains:
- - flickr.com
-
- WeeWorld:
- domains:
- - weeworld.com
-
- Last.fm:
- domains:
- - lastfm.ru
-
- MyHeritage:
- domains:
- - myheritage.com
-
- Xanga:
- domains:
- - xanga.com
-
- Mixi:
- domains:
- - mixi.jp
-
- Cyworld:
- domains:
- - global.cyworld.com
-
- Gaia Online:
- domains:
- - gaiaonline.com
-
- Skyrock:
- domains:
- - skyrock.com
-
- BlackPlanet:
- domains:
- - blackplanet.com
-
- myYearbook:
- domains:
- - myyearbook.com
-
- Fotolog:
- domains:
- - fotolog.com
-
- Friends Reunited:
- domains:
- - friendsreunited.com
-
- LiveJournal:
- domains:
- - livejournal.ru
-
- StudiVZ:
- domains:
- - studivz.net
-
- StackOverflow:
- domains:
- - stackoverflow.com
-
- Sonico.com:
- domains:
- - sonico.com
-
- Pinterest:
- domains:
- - pinterest.com
-
- Plaxo:
- domains:
- - plaxo.com
-
- Geni:
- domains:
- - geni.com
-
- Tuenti:
- domains:
- - tuenti.com
-
- XING:
- domains:
- - xing.com
-
- Taringa!:
- domains:
- - taringa.net
-
- Tumblr:
- domains:
- - tumblr.com
-
- Nasza-klasa.pl:
- domains:
- - nk.pl
-
- StumbleUpon:
- domains:
- - stumbleupon.com
-
- SourceForge:
- domains:
- - sourceforge.net
-
- Hyves:
- domains:
- - hyves.nl
-
- WAYN:
- domains:
- - wayn.com
-
- Buzznet:
- domains:
- - wayn.com
-
- Multiply:
- domains:
- - multiply.com
-
- Foursquare:
- domains:
- - foursquare.com
-
- vKruguDruzei.ru:
- domains:
- - vkrugudruzei.ru
-
- Mail.ru:
- domains:
- - my.mail.ru
-
- MoiKrug.ru:
- domains:
- - moikrug.ru
-
- Reddit:
- domains:
- - reddit.com
-
- Hacker News:
- domains:
- - news.ycombinator.com
-
- Identi.ca:
- domains:
- - identi.ca
-
- Weibo:
- domains:
- - weibo.com
- - t.cn
-
- Delicious:
- domains:
- - delicious.com
-
- Pocket:
- domains:
- - getpocket.com
-
- ITU Sozluk:
- domains:
- - itusozluk.com
-
- Instela:
- domains:
- - instela.com
-
- Eksi Sozluk:
- domains:
- - Sozluk.com
- - sourtimes.org
-
- Uludag Sozluk:
- domains:
- - uludagsozluk.com
- - ulusozluk.com
-
- Inci Sozluk:
- domains:
- - inci.sozlukspot.com
- - incisozluk.com
- - incisozluk.cc
-
- Hocam.com:
- domains:
- - hocam.com
-
- Donanimhaber:
- domains:
- - donanimhaber.com
-
- Disqus:
- domains:
- - redirect.disqus.com
- - disq.us
- - disqus.com
-
- Quora:
- domains:
- - quora.com
-
-# #######################################################################################################
-#
-# SEARCH PROVIDERS
-
-search:
-
- 1.cz:
- parameters:
- - q
- domains:
- - 1.cz
-
- # 123people TODO
-
- 1und1:
- parameters:
- - su
- domains:
- - search.1und1.de
-
- 360.cn:
- parameters:
- - q
- domains:
- - so.360.cn
- - www.so.com
-
- Abacho:
- parameters:
- - q
- domains:
- - www.abacho.de
- - www.abacho.com
- - www.abacho.co.uk
- - www.se.abacho.com
- - www.tr.abacho.com
- - www.abacho.at
- - www.abacho.fr
- - www.abacho.es
- - www.abacho.ch
- - www.abacho.it
-
- ABCsøk:
- parameters:
- - q
- domains:
- - abcsolk.no
- - verden.abcsok.no
-
- Acoon:
- parameters:
- - begriff
- domains:
- - www.acoon.de
-
- Alexa:
- parameters:
- - q
- domains:
- - alexa.com
- - search.toolbars.alexa.com
-
- Alice Adsl:
- parameters:
- - q
- domains:
- - rechercher.aliceadsl.fr
-
- AllTheWeb:
- parameters:
- - q
- domains:
- - www.alltheweb.com
-
- all.by:
- parameters:
- - query
- domains:
- - all.by
-
- Altavista:
- parameters:
- - q
- domains:
- - www.altavista.com
- - search.altavista.com
- - listings.altavista.com
- - altavista.de
- - altavista.fr
- - be-nl.altavista.com
- - be-fr.altavista.com
-
- Amazon:
- parameters:
- - keywords
- domains:
- - amazon.com
- - www.amazon.com
-
- AOL:
- parameters:
- - q
- - query
- domains:
- - search.aol.com
- - search.aol.it
- - aolsearch.aol.com
- - aolsearch.com
- - www.aolrecherche.aol.fr
- - www.aolrecherches.aol.fr
- - www.aolimages.aol.fr
- - aim.search.aol.com
- - www.recherche.aol.fr
- - find.web.aol.com
- - recherche.aol.ca
- - aolsearch.aol.co.uk
- - search.aol.co.uk
- - aolrecherche.aol.fr
- - sucheaol.aol.de
- - suche.aol.de
- - suche.aolsvc.de
- - aolbusqueda.aol.com.mx
- - alicesuche.aol.de
- - alicesuchet.aol.de
- - suchet2.aol.de
- - search.hp.my.aol.com.au
- - search.hp.my.aol.de
- - search.hp.my.aol.it
- - search-intl.netscape.com
-
- Apollo Latvia:
- parameters:
- - q
- domains:
- - apollo.lv/portal/search/
-
- APOLL07:
- parameters:
- - query
- domains:
- - apollo7.de
-
- Apontador:
- parameters:
- - q
- domains:
- - apontador.com.br
- - www.apontador.com.br
-
- Aport:
- parameters:
- - r
- domains:
- - sm.aport.ru
-
- arama:
- parameters:
- - q
- domains:
- - arama.com
-
- Arcor:
- parameters:
- - Keywords
- domains:
- - www.arcor.de
-
- Arianna:
- parameters:
- - query
- domains:
- - arianna.libero.it
- - www.arianna.com
-
- Ask:
- parameters:
- - q
- domains:
- - ask.com
- - www.ask.com
- - web.ask.com
- - int.ask.com
- - mws.ask.com
- - uk.ask.com
- - images.ask.com
- - ask.reference.com
- - www.askkids.com
- - iwon.ask.com
- - www.ask.co.uk
- - www.qbyrd.com
- - search-results.com
- - uk.search-results.com
- - www.search-results.com
- - int.search-results.com
-
- Ask Toolbar:
- parameters:
- - searchfor
- domains:
- - search.tb.ask.com
-
- Atlas:
- parameters:
- - q
- domains:
- - searchatlas.centrum.cz
-
- Austronaut:
- parameters:
- - q
- domains:
- - www2.austronaut.at
- - www1.astronaut.at
-
- Babylon:
- parameters:
- - q
- domains:
- - search.babylon.com
- - searchassist.babylon.com
-
- Baidu:
- parameters:
- - wd
- - word
- - kw
- - k
- domains:
- - www.baidu.com
- - www1.baidu.com
- - zhidao.baidu.com
- - tieba.baidu.com
- - news.baidu.com
- - web.gougou.com
-
- Biglobe:
- parameters:
- - q
- domains:
- - cgi.search.biglobe.ne.jp
-
- Bing:
- parameters:
- - q
- - Q
- domains:
- - bing.com
- - www.bing.com
- - msnbc.msn.com
- - dizionario.it.msn.com
- - cc.bingj.com
- - m.bing.com
-
- Bing Images:
- parameters:
- - q
- - Q
- domains:
- - bing.com/images/search
- - www.bing.com/images/search
-
- blekko:
- parameters:
- - q
- domains:
- - blekko.com
-
- Blogdigger:
- parameters:
- - q
- domains:
- - www.blogdigger.com
-
- Blogpulse:
- parameters:
- - query
- domains:
- - www.blogpulse.com
-
- Bluewin:
- parameters:
- - searchTerm
- domains:
- - search.bluewin.ch
-
- canoe.ca:
- parameters:
- - q
- domains:
- - web.canoe.ca
-
- Centrum:
- parameters:
- - q
- domains:
- - serach.centrum.cz
- - morfeo.centrum.cz
-
- Certified-Toolbar:
- parameters:
- - q
- domains:
- - search.certified-toolbar.com
-
- Charter:
- parameters:
- - q
- domains:
- - www.charter.net
-
- Clix:
- parameters:
- - question
- domains:
- - pesquisa.clix.pt
-
- Comcast:
- parameters:
- - q
- domains:
- - search.comcast.net
-
- Conduit:
- parameters:
- - q
- domains:
- - search.conduit.com
-
- Comcast:
- parameters:
- - q
- domains:
- - serach.comcast.net
-
- Crawler:
- parameters:
- - q
- domains:
- - www.crawler.com
-
- Compuserve:
- parameters:
- - query
- domains:
- - websearch.cs.com
-
- Cuil:
- parameters:
- - q
- domains:
- - www.cuil.com
-
- Daemon search:
- parameters:
- - q
- domains:
- - daemon-search.com
- - my.daemon-search.com
-
- Dalesearch:
- parameters:
- - q
- domains:
- - www.dalesearch.com
-
- DasOertliche:
- parameters:
- - kw
- domains:
- - www.dasoertliche.de
-
- DasTelefonbuch:
- parameters:
- - kw
- domains:
- - www1.dastelefonbuch.de
-
- Daum:
- parameters:
- - q
- domains:
- - search.daum.net
-
- Delfi latvia:
- parameters:
- - q
- domains:
- - smart.delfi.lv
-
- Delfi:
- parameters:
- - q
- domains:
- - otsing.delfi.ee
-
- Digg:
- parameters:
- - s
- domains:
- - digg.com
-
- dmoz:
- parameters:
- - q
- domains:
- - dmoz.org
- - editors.dmoz.org
-
- DuckDuckGo:
- parameters:
- - q
- domains:
- - duckduckgo.com
-
- earthlink:
- parameters:
- - q
- domains:
- - search.earthlink.net
-
- Ecosia:
- parameters:
- - q
- domains:
- - ecosia.org
-
- Eniro:
- parameters:
- - q
- - search_word
- domains:
- - www.eniro.se
-
- Eurip:
- parameters:
- - q
- domains:
- - www.eurip.com
-
- Euroseek:
- parameters:
- - string
- domains:
- - www.euroseek.com
-
- Everyclick:
- parameters:
- - keyword
- domains:
- - www.everyclick.com
-
- Excite:
- parameters:
- - q
- - search
- domains:
- - search.excite.it
- - search.excite.fr
- - search.excite.de
- - search.excite.co.uk
- - serach.excite.es
- - search.excite.nl
- - msxml.excite.com
- - www.excite.co.jp
-
- Exalead:
- parameters:
- - q
- domains:
- - www.exalead.fr
- - www.exalead.com
-
- eo:
- parameters:
- - x_query
- domains:
- - eo.st
-
- Fast Browser Search:
- parameters:
- - q
- domains:
- - www.fastbrowsersearch.com
-
- Francite:
- parameters:
- - name
- domains:
- - recherche.francite.com
-
- Findwide:
- parameters:
- - k
- domains:
- - search.findwide.com
-
- Fireball:
- parameters:
- - q
- domains:
- - www.fireball.de
-
- Firstfind:
- parameters:
- - qry
- domains:
- - www.firstsfind.com
-
- Fixsuche:
- parameters:
- - q
- domains:
- - www.fixsuche.de
-
- Flix:
- parameters:
- - keyword
- domains:
- - www.flix.de
-
- Forestle:
- parameters:
- - q
- domains:
- - forestle.org
- - www.forestle.org
- - forestle.mobi
-
- Free:
- parameters:
- - q
- domains:
- - search.free.fr
- - search1-2.free.fr
- - search1-1.free.fr
-
- Freecause:
- parameters:
- - p
- domains:
- - search.freecause.com
-
- Freenet:
- parameters:
- - query
- - Keywords
- domains:
- - suche.freenet.de
-
- Freshweather:
- parameters:
- - q
- domains:
- - www.fresh-weather.com
-
- FriendFeed:
- parameters:
- - q
- domains:
- - friendfeed.com
-
- GAIS:
- parameters:
- - q
- domains:
- - gais.cs.ccu.edu.tw
-
- Geona:
- parameters:
- - q
- domains:
- - geona.net
-
- Genieo:
- parameters:
- - q
- domains:
- - search.genieo.com
-
- Gigablast:
- parameters:
- - q
- domains:
- - www.gigablast.com
- - dir.gigablast.com
-
- Globososo:
- parameters:
- - q
- domains:
- - searches.globososo.com
- - search.globososo.com
-
- GMX:
- parameters:
- - su
- domains:
- - suche.gmx.net
-
- Gnadenmeer:
- parameters:
- - keyword
- domains:
- - www.gnadenmeer.de
-
- Gomeo:
- parameters:
- - Keywords
- domains:
- - www.gomeo.com
-
- goo:
- parameters:
- - MT
- domains:
- - search.goo.ne.jp
- - ocnsearch.goo.ne.jp
-
- Google:
- parameters:
- - q
- - query # For www.cnn.com (powered by Google)
- - Keywords # For gooofullsearch.com (powered by Google)
- domains:
- - www.google.com
- - www.google.ac
- - www.google.ad
- - www.google.com.af
- - www.google.com.ag
- - www.google.com.ai
- - www.google.am
- - www.google.it.ao
- - www.google.com.ar
- - www.google.as
- - www.google.at
- - www.google.com.au
- - www.google.az
- - www.google.ba
- - www.google.com.bd
- - www.google.be
- - www.google.bf
- - www.google.bg
- - www.google.com.bh
- - www.google.bi
- - www.google.bj
- - www.google.com.bn
- - www.google.com.bo
- - www.google.com.br
- - www.google.bs
- - www.google.co.bw
- - www.google.com.by
- - www.google.by
- - www.google.com.bz
- - www.google.ca
- - www.google.com.kh
- - www.google.cc
- - www.google.cd
- - www.google.cf
- - www.google.cat
- - www.google.cg
- - www.google.ch
- - www.google.ci
- - www.google.co.ck
- - www.google.cl
- - www.google.cm
- - www.google.cn
- - www.google.com.co
- - www.google.co.cr
- - www.google.com.cu
- - www.google.cv
- - www.google.com.cy
- - www.google.cz
- - www.google.de
- - www.google.dj
- - www.google.dk
- - www.google.dm
- - www.google.com.do
- - www.google.dz
- - www.google.com.ec
- - www.google.ee
- - www.google.com.eg
- - www.google.es
- - www.google.com.et
- - www.google.fi
- - www.google.com.fj
- - www.google.fm
- - www.google.fr
- - www.google.ga
- - www.google.gd
- - www.google.ge
- - www.google.gf
- - www.google.gg
- - www.google.com.gh
- - www.google.com.gi
- - www.google.gl
- - www.google.gm
- - www.google.gp
- - www.google.gr
- - www.google.com.gt
- - www.google.gy
- - www.google.com.hk
- - www.google.hn
- - www.google.hr
- - www.google.ht
- - www.google.hu
- - www.google.co.id
- - www.google.iq
- - www.google.ie
- - www.google.co.il
- - www.google.im
- - www.google.co.in
- - www.google.io
- - www.google.is
- - www.google.it
- - www.google.je
- - www.google.com.jm
- - www.google.jo
- - www.google.co.jp
- - www.google.co.ke
- - www.google.com.kh
- - www.google.ki
- - www.google.kg
- - www.google.co.kr
- - www.google.com.kw
- - www.google.kz
- - www.google.la
- - www.google.com.lb
- - www.google.com.lc
- - www.google.li
- - www.google.lk
- - www.google.co.ls
- - www.google.lt
- - www.google.lu
- - www.google.lv
- - www.google.com.ly
- - www.google.co.ma
- - www.google.md
- - www.google.me
- - www.google.mg
- - www.google.mk
- - www.google.ml
- - www.google.mn
- - www.google.ms
- - www.google.com.mt
- - www.google.mu
- - www.google.mv
- - www.google.mw
- - www.google.com.mx
- - www.google.com.my
- - www.google.co.mz
- - www.google.com.na
- - www.google.ne
- - www.google.com.nf
- - www.google.com.ng
- - www.google.com.ni
- - www.google.nl
- - www.google.no
- - www.google.com.np
- - www.google.nr
- - www.google.nu
- - www.google.co.nz
- - www.google.com.om
- - www.google.com.pa
- - www.google.com.pe
- - www.google.com.ph
- - www.google.com.pk
- - www.google.pl
- - www.google.pn
- - www.google.com.pr
- - www.google.ps
- - www.google.pt
- - www.google.com.py
- - www.google.com.qa
- - www.google.ro
- - www.google.rs
- - www.google.ru
- - www.google.rw
- - www.google.com.sa
- - www.google.com.sb
- - www.google.sc
- - www.google.se
- - www.google.com.sg
- - www.google.sh
- - www.google.si
- - www.google.sk
- - www.google.com.sl
- - www.google.sn
- - www.google.sm
- - www.google.so
- - www.google.st
- - www.google.com.sv
- - www.google.td
- - www.google.tg
- - www.google.co.th
- - www.google.com.tj
- - www.google.tk
- - www.google.tl
- - www.google.tm
- - www.google.to
- - www.google.com.tn
- - www.google.com.tr
- - www.google.tt
- - www.google.com.tw
- - www.google.co.tz
- - www.google.com.ua
- - www.google.co.ug
- - www.google.ae
- - www.google.co.uk
- - www.google.us
- - www.google.com.uy
- - www.google.co.uz
- - www.google.com.vc
- - www.google.co.ve
- - www.google.vg
- - www.google.co.vi
- - www.google.com.vn
- - www.google.vu
- - www.google.ws
- - www.google.co.za
- - www.google.co.zm
- - www.google.co.zw
- - google.com
- - google.ac
- - google.ad
- - google.com.af
- - google.com.ag
- - google.com.ai
- - google.am
- - google.it.ao
- - google.com.ar
- - google.as
- - google.at
- - google.com.au
- - google.az
- - google.ba
- - google.com.bd
- - google.be
- - google.bf
- - google.bg
- - google.com.bh
- - google.bi
- - google.bj
- - google.com.bn
- - google.com.bo
- - google.com.br
- - google.bs
- - google.co.bw
- - google.com.by
- - google.by
- - google.com.bz
- - google.ca
- - google.com.kh
- - google.cc
- - google.cd
- - google.cf
- - google.cat
- - google.cg
- - google.ch
- - google.ci
- - google.co.ck
- - google.cl
- - google.cm
- - google.cn
- - google.com.co
- - google.co.cr
- - google.com.cu
- - google.cv
- - google.com.cy
- - google.cz
- - google.de
- - google.dj
- - google.dk
- - google.dm
- - google.com.do
- - google.dz
- - google.com.ec
- - google.ee
- - google.com.eg
- - google.es
- - google.com.et
- - google.fi
- - google.com.fj
- - google.fm
- - google.fr
- - google.ga
- - google.gd
- - google.ge
- - google.gf
- - google.gg
- - google.com.gh
- - google.com.gi
- - google.gl
- - google.gm
- - google.gp
- - google.gr
- - google.com.gt
- - google.gy
- - google.com.hk
- - google.hn
- - google.hr
- - google.ht
- - google.hu
- - google.co.id
- - google.iq
- - google.ie
- - google.co.il
- - google.im
- - google.co.in
- - google.io
- - google.is
- - google.it
- - google.je
- - google.com.jm
- - google.jo
- - google.co.jp
- - google.co.ke
- - google.com.kh
- - google.ki
- - google.kg
- - google.co.kr
- - google.com.kw
- - google.kz
- - google.la
- - google.com.lb
- - google.com.lc
- - google.li
- - google.lk
- - google.co.ls
- - google.lt
- - google.lu
- - google.lv
- - google.com.ly
- - google.co.ma
- - google.md
- - google.me
- - google.mg
- - google.mk
- - google.ml
- - google.mn
- - google.ms
- - google.com.mt
- - google.mu
- - google.mv
- - google.mw
- - google.com.mx
- - google.com.my
- - google.co.mz
- - google.com.na
- - google.ne
- - google.com.nf
- - google.com.ng
- - google.com.ni
- - google.nl
- - google.no
- - google.com.np
- - google.nr
- - google.nu
- - google.co.nz
- - google.com.om
- - google.com.pa
- - google.com.pe
- - google.com.ph
- - google.com.pk
- - google.pl
- - google.pn
- - google.com.pr
- - google.ps
- - google.pt
- - google.com.py
- - google.com.qa
- - google.ro
- - google.rs
- - google.ru
- - google.rw
- - google.com.sa
- - google.com.sb
- - google.sc
- - google.se
- - google.com.sg
- - google.sh
- - google.si
- - google.sk
- - google.com.sl
- - google.sn
- - google.sm
- - google.so
- - google.st
- - google.com.sv
- - google.td
- - google.tg
- - google.co.th
- - google.com.tj
- - google.tk
- - google.tl
- - google.tm
- - google.to
- - google.com.tn
- - google.com.tr
- - google.tt
- - google.com.tw
- - google.co.tz
- - google.com.ua
- - google.co.ug
- - google.ae
- - google.co.uk
- - google.us
- - google.com.uy
- - google.co.uz
- - google.com.vc
- - google.co.ve
- - google.vg
- - google.co.vi
- - google.com.vn
- - google.vu
- - google.ws
- - google.co.za
- - google.co.zm
- - google.co.zw
- # powered by Google
- - search.avg.com
- - isearch.avg.com
- - www.cnn.com
- - darkoogle.com
- - search.darkoogle.com
- - search.foxtab.com
- - www.gooofullsearch.com
- - search.hiyo.com
- - search.incredimail.com
- - search1.incredimail.com
- - search2.incredimail.com
- - search3.incredimail.com
- - search4.incredimail.com
- - search.incredibar.com
- - search.sweetim.com
- - www.fastweb.it
- - search.juno.com
- - find.tdc.dk
- - searchresults.verizon.com
- - search.walla.co.il
- - search.alot.com
- # Google Earch
- - www.googleearth.de
- - www.googleearth.fr
- # Google Cache
- - webcache.googleusercontent.com
- # Google SSL
- - encrypted.google.com
- # Syndicated search
- - googlesyndicatedsearch.com
-
- Google Blogsearch:
- parameters:
- - q
- domains:
- - blogsearch.google.ac
- - blogsearch.google.ad
- - blogsearch.google.ae
- - blogsearch.google.am
- - blogsearch.google.as
- - blogsearch.google.at
- - blogsearch.google.az
- - blogsearch.google.ba
- - blogsearch.google.be
- - blogsearch.google.bf
- - blogsearch.google.bg
- - blogsearch.google.bi
- - blogsearch.google.bj
- - blogsearch.google.bs
- - blogsearch.google.by
- - blogsearch.google.ca
- - blogsearch.google.cat
- - blogsearch.google.cc
- - blogsearch.google.cd
- - blogsearch.google.cf
- - blogsearch.google.cg
- - blogsearch.google.ch
- - blogsearch.google.ci
- - blogsearch.google.cl
- - blogsearch.google.cm
- - blogsearch.google.cn
- - blogsearch.google.co.bw
- - blogsearch.google.co.ck
- - blogsearch.google.co.cr
- - blogsearch.google.co.id
- - blogsearch.google.co.il
- - blogsearch.google.co.in
- - blogsearch.google.co.jp
- - blogsearch.google.co.ke
- - blogsearch.google.co.kr
- - blogsearch.google.co.ls
- - blogsearch.google.co.ma
- - blogsearch.google.co.mz
- - blogsearch.google.co.nz
- - blogsearch.google.co.th
- - blogsearch.google.co.tz
- - blogsearch.google.co.ug
- - blogsearch.google.co.uk
- - blogsearch.google.co.uz
- - blogsearch.google.co.ve
- - blogsearch.google.co.vi
- - blogsearch.google.co.za
- - blogsearch.google.co.zm
- - blogsearch.google.co.zw
- - blogsearch.google.com
- - blogsearch.google.com.af
- - blogsearch.google.com.ag
- - blogsearch.google.com.ai
- - blogsearch.google.com.ar
- - blogsearch.google.com.au
- - blogsearch.google.com.bd
- - blogsearch.google.com.bh
- - blogsearch.google.com.bn
- - blogsearch.google.com.bo
- - blogsearch.google.com.br
- - blogsearch.google.com.by
- - blogsearch.google.com.bz
- - blogsearch.google.com.co
- - blogsearch.google.com.cu
- - blogsearch.google.com.cy
- - blogsearch.google.com.do
- - blogsearch.google.com.ec
- - blogsearch.google.com.eg
- - blogsearch.google.com.et
- - blogsearch.google.com.fj
- - blogsearch.google.com.gh
- - blogsearch.google.com.gi
- - blogsearch.google.com.gt
- - blogsearch.google.com.hk
- - blogsearch.google.com.jm
- - blogsearch.google.com.kh
- - blogsearch.google.com.kh
- - blogsearch.google.com.kw
- - blogsearch.google.com.lb
- - blogsearch.google.com.lc
- - blogsearch.google.com.ly
- - blogsearch.google.com.mt
- - blogsearch.google.com.mx
- - blogsearch.google.com.my
- - blogsearch.google.com.na
- - blogsearch.google.com.nf
- - blogsearch.google.com.ng
- - blogsearch.google.com.ni
- - blogsearch.google.com.np
- - blogsearch.google.com.om
- - blogsearch.google.com.pa
- - blogsearch.google.com.pe
- - blogsearch.google.com.ph
- - blogsearch.google.com.pk
- - blogsearch.google.com.pr
- - blogsearch.google.com.py
- - blogsearch.google.com.qa
- - blogsearch.google.com.sa
- - blogsearch.google.com.sb
- - blogsearch.google.com.sg
- - blogsearch.google.com.sl
- - blogsearch.google.com.sv
- - blogsearch.google.com.tj
- - blogsearch.google.com.tn
- - blogsearch.google.com.tr
- - blogsearch.google.com.tw
- - blogsearch.google.com.ua
- - blogsearch.google.com.uy
- - blogsearch.google.com.vc
- - blogsearch.google.com.vn
- - blogsearch.google.cv
- - blogsearch.google.cz
- - blogsearch.google.de
- - blogsearch.google.dj
- - blogsearch.google.dk
- - blogsearch.google.dm
- - blogsearch.google.dz
- - blogsearch.google.ee
- - blogsearch.google.es
- - blogsearch.google.fi
- - blogsearch.google.fm
- - blogsearch.google.fr
- - blogsearch.google.ga
- - blogsearch.google.gd
- - blogsearch.google.ge
- - blogsearch.google.gf
- - blogsearch.google.gg
- - blogsearch.google.gl
- - blogsearch.google.gm
- - blogsearch.google.gp
- - blogsearch.google.gr
- - blogsearch.google.gy
- - blogsearch.google.hn
- - blogsearch.google.hr
- - blogsearch.google.ht
- - blogsearch.google.hu
- - blogsearch.google.ie
- - blogsearch.google.im
- - blogsearch.google.io
- - blogsearch.google.iq
- - blogsearch.google.is
- - blogsearch.google.it
- - blogsearch.google.it.ao
- - blogsearch.google.je
- - blogsearch.google.jo
- - blogsearch.google.kg
- - blogsearch.google.ki
- - blogsearch.google.kz
- - blogsearch.google.la
- - blogsearch.google.li
- - blogsearch.google.lk
- - blogsearch.google.lt
- - blogsearch.google.lu
- - blogsearch.google.lv
- - blogsearch.google.md
- - blogsearch.google.me
- - blogsearch.google.mg
- - blogsearch.google.mk
- - blogsearch.google.ml
- - blogsearch.google.mn
- - blogsearch.google.ms
- - blogsearch.google.mu
- - blogsearch.google.mv
- - blogsearch.google.mw
- - blogsearch.google.ne
- - blogsearch.google.nl
- - blogsearch.google.no
- - blogsearch.google.nr
- - blogsearch.google.nu
- - blogsearch.google.pl
- - blogsearch.google.pn
- - blogsearch.google.ps
- - blogsearch.google.pt
- - blogsearch.google.ro
- - blogsearch.google.rs
- - blogsearch.google.ru
- - blogsearch.google.rw
- - blogsearch.google.sc
- - blogsearch.google.se
- - blogsearch.google.sh
- - blogsearch.google.si
- - blogsearch.google.sk
- - blogsearch.google.sm
- - blogsearch.google.sn
- - blogsearch.google.so
- - blogsearch.google.st
- - blogsearch.google.td
- - blogsearch.google.tg
- - blogsearch.google.tk
- - blogsearch.google.tl
- - blogsearch.google.tm
- - blogsearch.google.to
- - blogsearch.google.tt
- - blogsearch.google.us
- - blogsearch.google.vg
- - blogsearch.google.vu
- - blogsearch.google.ws
-
- Google Images:
- parameters:
- - q
- domains:
- - google.ac/imgres
- - google.ad/imgres
- - google.ae/imgres
- - google.am/imgres
- - google.as/imgres
- - google.at/imgres
- - google.az/imgres
- - google.ba/imgres
- - google.be/imgres
- - google.bf/imgres
- - google.bg/imgres
- - google.bi/imgres
- - google.bj/imgres
- - google.bs/imgres
- - google.by/imgres
- - google.ca/imgres
- - google.cat/imgres
- - google.cc/imgres
- - google.cd/imgres
- - google.cf/imgres
- - google.cg/imgres
- - google.ch/imgres
- - google.ci/imgres
- - google.cl/imgres
- - google.cm/imgres
- - google.cn/imgres
- - google.co.bw/imgres
- - google.co.ck/imgres
- - google.co.cr/imgres
- - google.co.id/imgres
- - google.co.il/imgres
- - google.co.in/imgres
- - google.co.jp/imgres
- - google.co.ke/imgres
- - google.co.kr/imgres
- - google.co.ls/imgres
- - google.co.ma/imgres
- - google.co.mz/imgres
- - google.co.nz/imgres
- - google.co.th/imgres
- - google.co.tz/imgres
- - google.co.ug/imgres
- - google.co.uk/imgres
- - google.co.uz/imgres
- - google.co.ve/imgres
- - google.co.vi/imgres
- - google.co.za/imgres
- - google.co.zm/imgres
- - google.co.zw/imgres
- - google.com/imgres
- - google.com.af/imgres
- - google.com.ag/imgres
- - google.com.ai/imgres
- - google.com.ar/imgres
- - google.com.au/imgres
- - google.com.bd/imgres
- - google.com.bh/imgres
- - google.com.bn/imgres
- - google.com.bo/imgres
- - google.com.br/imgres
- - google.com.by/imgres
- - google.com.bz/imgres
- - google.com.co/imgres
- - google.com.cu/imgres
- - google.com.cy/imgres
- - google.com.do/imgres
- - google.com.ec/imgres
- - google.com.eg/imgres
- - google.com.et/imgres
- - google.com.fj/imgres
- - google.com.gh/imgres
- - google.com.gi/imgres
- - google.com.gt/imgres
- - google.com.hk/imgres
- - google.com.jm/imgres
- - google.com.kh/imgres
- - google.com.kw/imgres
- - google.com.lb/imgres
- - google.com.lc/imgres
- - google.com.ly/imgres
- - google.com.mt/imgres
- - google.com.mx/imgres
- - google.com.my/imgres
- - google.com.na/imgres
- - google.com.nf/imgres
- - google.com.ng/imgres
- - google.com.ni/imgres
- - google.com.np/imgres
- - google.com.om/imgres
- - google.com.pa/imgres
- - google.com.pe/imgres
- - google.com.ph/imgres
- - google.com.pk/imgres
- - google.com.pr/imgres
- - google.com.py/imgres
- - google.com.qa/imgres
- - google.com.sa/imgres
- - google.com.sb/imgres
- - google.com.sg/imgres
- - google.com.sl/imgres
- - google.com.sv/imgres
- - google.com.tj/imgres
- - google.com.tn/imgres
- - google.com.tr/imgres
- - google.com.tw/imgres
- - google.com.ua/imgres
- - google.com.uy/imgres
- - google.com.vc/imgres
- - google.com.vn/imgres
- - google.cv/imgres
- - google.cz/imgres
- - google.de/imgres
- - google.dj/imgres
- - google.dk/imgres
- - google.dm/imgres
- - google.dz/imgres
- - google.ee/imgres
- - google.es/imgres
- - google.fi/imgres
- - google.fm/imgres
- - google.fr/imgres
- - google.ga/imgres
- - google.gd/imgres
- - google.ge/imgres
- - google.gf/imgres
- - google.gg/imgres
- - google.gl/imgres
- - google.gm/imgres
- - google.gp/imgres
- - google.gr/imgres
- - google.gy/imgres
- - google.hn/imgres
- - google.hr/imgres
- - google.ht/imgres
- - google.hu/imgres
- - google.ie/imgres
- - google.im/imgres
- - google.io/imgres
- - google.iq/imgres
- - google.is/imgres
- - google.it/imgres
- - google.it.ao/imgres
- - google.je/imgres
- - google.jo/imgres
- - google.kg/imgres
- - google.ki/imgres
- - google.kz/imgres
- - google.la/imgres
- - google.li/imgres
- - google.lk/imgres
- - google.lt/imgres
- - google.lu/imgres
- - google.lv/imgres
- - google.md/imgres
- - google.me/imgres
- - google.mg/imgres
- - google.mk/imgres
- - google.ml/imgres
- - google.mn/imgres
- - google.ms/imgres
- - google.mu/imgres
- - google.mv/imgres
- - google.mw/imgres
- - google.ne/imgres
- - google.nl/imgres
- - google.no/imgres
- - google.nr/imgres
- - google.nu/imgres
- - google.pl/imgres
- - google.pn/imgres
- - google.ps/imgres
- - google.pt/imgres
- - google.ro/imgres
- - google.rs/imgres
- - google.ru/imgres
- - google.rw/imgres
- - google.sc/imgres
- - google.se/imgres
- - google.sh/imgres
- - google.si/imgres
- - google.sk/imgres
- - google.sm/imgres
- - google.sn/imgres
- - google.so/imgres
- - google.st/imgres
- - google.td/imgres
- - google.tg/imgres
- - google.tk/imgres
- - google.tl/imgres
- - google.tm/imgres
- - google.to/imgres
- - google.tt/imgres
- - google.us/imgres
- - google.vg/imgres
- - google.vu/imgres
- - images.google.ws
- - images.google.ac
- - images.google.ad
- - images.google.ae
- - images.google.am
- - images.google.as
- - images.google.at
- - images.google.az
- - images.google.ba
- - images.google.be
- - images.google.bf
- - images.google.bg
- - images.google.bi
- - images.google.bj
- - images.google.bs
- - images.google.by
- - images.google.ca
- - images.google.cat
- - images.google.cc
- - images.google.cd
- - images.google.cf
- - images.google.cg
- - images.google.ch
- - images.google.ci
- - images.google.cl
- - images.google.cm
- - images.google.cn
- - images.google.co.bw
- - images.google.co.ck
- - images.google.co.cr
- - images.google.co.id
- - images.google.co.il
- - images.google.co.in
- - images.google.co.jp
- - images.google.co.ke
- - images.google.co.kr
- - images.google.co.ls
- - images.google.co.ma
- - images.google.co.mz
- - images.google.co.nz
- - images.google.co.th
- - images.google.co.tz
- - images.google.co.ug
- - images.google.co.uk
- - images.google.co.uz
- - images.google.co.ve
- - images.google.co.vi
- - images.google.co.za
- - images.google.co.zm
- - images.google.co.zw
- - images.google.com
- - images.google.com.af
- - images.google.com.ag
- - images.google.com.ai
- - images.google.com.ar
- - images.google.com.au
- - images.google.com.bd
- - images.google.com.bh
- - images.google.com.bn
- - images.google.com.bo
- - images.google.com.br
- - images.google.com.by
- - images.google.com.bz
- - images.google.com.co
- - images.google.com.cu
- - images.google.com.cy
- - images.google.com.do
- - images.google.com.ec
- - images.google.com.eg
- - images.google.com.et
- - images.google.com.fj
- - images.google.com.gh
- - images.google.com.gi
- - images.google.com.gt
- - images.google.com.hk
- - images.google.com.jm
- - images.google.com.kh
- - images.google.com.kh
- - images.google.com.kw
- - images.google.com.lb
- - images.google.com.lc
- - images.google.com.ly
- - images.google.com.mt
- - images.google.com.mx
- - images.google.com.my
- - images.google.com.na
- - images.google.com.nf
- - images.google.com.ng
- - images.google.com.ni
- - images.google.com.np
- - images.google.com.om
- - images.google.com.pa
- - images.google.com.pe
- - images.google.com.ph
- - images.google.com.pk
- - images.google.com.pr
- - images.google.com.py
- - images.google.com.qa
- - images.google.com.sa
- - images.google.com.sb
- - images.google.com.sg
- - images.google.com.sl
- - images.google.com.sv
- - images.google.com.tj
- - images.google.com.tn
- - images.google.com.tr
- - images.google.com.tw
- - images.google.com.ua
- - images.google.com.uy
- - images.google.com.vc
- - images.google.com.vn
- - images.google.cv
- - images.google.cz
- - images.google.de
- - images.google.dj
- - images.google.dk
- - images.google.dm
- - images.google.dz
- - images.google.ee
- - images.google.es
- - images.google.fi
- - images.google.fm
- - images.google.fr
- - images.google.ga
- - images.google.gd
- - images.google.ge
- - images.google.gf
- - images.google.gg
- - images.google.gl
- - images.google.gm
- - images.google.gp
- - images.google.gr
- - images.google.gy
- - images.google.hn
- - images.google.hr
- - images.google.ht
- - images.google.hu
- - images.google.ie
- - images.google.im
- - images.google.io
- - images.google.iq
- - images.google.is
- - images.google.it
- - images.google.it.ao
- - images.google.je
- - images.google.jo
- - images.google.kg
- - images.google.ki
- - images.google.kz
- - images.google.la
- - images.google.li
- - images.google.lk
- - images.google.lt
- - images.google.lu
- - images.google.lv
- - images.google.md
- - images.google.me
- - images.google.mg
- - images.google.mk
- - images.google.ml
- - images.google.mn
- - images.google.ms
- - images.google.mu
- - images.google.mv
- - images.google.mw
- - images.google.ne
- - images.google.nl
- - images.google.no
- - images.google.nr
- - images.google.nu
- - images.google.pl
- - images.google.pn
- - images.google.ps
- - images.google.pt
- - images.google.ro
- - images.google.rs
- - images.google.ru
- - images.google.rw
- - images.google.sc
- - images.google.se
- - images.google.sh
- - images.google.si
- - images.google.sk
- - images.google.sm
- - images.google.sn
- - images.google.so
- - images.google.st
- - images.google.td
- - images.google.tg
- - images.google.tk
- - images.google.tl
- - images.google.tm
- - images.google.to
- - images.google.tt
- - images.google.us
- - images.google.vg
- - images.google.vu
- - images.google.ws
-
- Google News:
- parameters:
- - q
- domains:
- - news.google.ac
- - news.google.ad
- - news.google.ae
- - news.google.am
- - news.google.as
- - news.google.at
- - news.google.az
- - news.google.ba
- - news.google.be
- - news.google.bf
- - news.google.bg
- - news.google.bi
- - news.google.bj
- - news.google.bs
- - news.google.by
- - news.google.ca
- - news.google.cat
- - news.google.cc
- - news.google.cd
- - news.google.cf
- - news.google.cg
- - news.google.ch
- - news.google.ci
- - news.google.cl
- - news.google.cm
- - news.google.cn
- - news.google.co.bw
- - news.google.co.ck
- - news.google.co.cr
- - news.google.co.id
- - news.google.co.il
- - news.google.co.in
- - news.google.co.jp
- - news.google.co.ke
- - news.google.co.kr
- - news.google.co.ls
- - news.google.co.ma
- - news.google.co.mz
- - news.google.co.nz
- - news.google.co.th
- - news.google.co.tz
- - news.google.co.ug
- - news.google.co.uk
- - news.google.co.uz
- - news.google.co.ve
- - news.google.co.vi
- - news.google.co.za
- - news.google.co.zm
- - news.google.co.zw
- - news.google.com
- - news.google.com.af
- - news.google.com.ag
- - news.google.com.ai
- - news.google.com.ar
- - news.google.com.au
- - news.google.com.bd
- - news.google.com.bh
- - news.google.com.bn
- - news.google.com.bo
- - news.google.com.br
- - news.google.com.by
- - news.google.com.bz
- - news.google.com.co
- - news.google.com.cu
- - news.google.com.cy
- - news.google.com.do
- - news.google.com.ec
- - news.google.com.eg
- - news.google.com.et
- - news.google.com.fj
- - news.google.com.gh
- - news.google.com.gi
- - news.google.com.gt
- - news.google.com.hk
- - news.google.com.jm
- - news.google.com.kh
- - news.google.com.kh
- - news.google.com.kw
- - news.google.com.lb
- - news.google.com.lc
- - news.google.com.ly
- - news.google.com.mt
- - news.google.com.mx
- - news.google.com.my
- - news.google.com.na
- - news.google.com.nf
- - news.google.com.ng
- - news.google.com.ni
- - news.google.com.np
- - news.google.com.om
- - news.google.com.pa
- - news.google.com.pe
- - news.google.com.ph
- - news.google.com.pk
- - news.google.com.pr
- - news.google.com.py
- - news.google.com.qa
- - news.google.com.sa
- - news.google.com.sb
- - news.google.com.sg
- - news.google.com.sl
- - news.google.com.sv
- - news.google.com.tj
- - news.google.com.tn
- - news.google.com.tr
- - news.google.com.tw
- - news.google.com.ua
- - news.google.com.uy
- - news.google.com.vc
- - news.google.com.vn
- - news.google.cv
- - news.google.cz
- - news.google.de
- - news.google.dj
- - news.google.dk
- - news.google.dm
- - news.google.dz
- - news.google.ee
- - news.google.es
- - news.google.fi
- - news.google.fm
- - news.google.fr
- - news.google.ga
- - news.google.gd
- - news.google.ge
- - news.google.gf
- - news.google.gg
- - news.google.gl
- - news.google.gm
- - news.google.gp
- - news.google.gr
- - news.google.gy
- - news.google.hn
- - news.google.hr
- - news.google.ht
- - news.google.hu
- - news.google.ie
- - news.google.im
- - news.google.io
- - news.google.iq
- - news.google.is
- - news.google.it
- - news.google.it.ao
- - news.google.je
- - news.google.jo
- - news.google.kg
- - news.google.ki
- - news.google.kz
- - news.google.la
- - news.google.li
- - news.google.lk
- - news.google.lt
- - news.google.lu
- - news.google.lv
- - news.google.md
- - news.google.me
- - news.google.mg
- - news.google.mk
- - news.google.ml
- - news.google.mn
- - news.google.ms
- - news.google.mu
- - news.google.mv
- - news.google.mw
- - news.google.ne
- - news.google.nl
- - news.google.no
- - news.google.nr
- - news.google.nu
- - news.google.pl
- - news.google.pn
- - news.google.ps
- - news.google.pt
- - news.google.ro
- - news.google.rs
- - news.google.ru
- - news.google.rw
- - news.google.sc
- - news.google.se
- - news.google.sh
- - news.google.si
- - news.google.sk
- - news.google.sm
- - news.google.sn
- - news.google.so
- - news.google.st
- - news.google.td
- - news.google.tg
- - news.google.tk
- - news.google.tl
- - news.google.tm
- - news.google.to
- - news.google.tt
- - news.google.us
- - news.google.vg
- - news.google.vu
- - news.google.ws
-
- Google Product Search:
- parameters:
- - q
- domains:
- - google.ac/products
- - google.ad/products
- - google.ae/products
- - google.am/products
- - google.as/products
- - google.at/products
- - google.az/products
- - google.ba/products
- - google.be/products
- - google.bf/products
- - google.bg/products
- - google.bi/products
- - google.bj/products
- - google.bs/products
- - google.by/products
- - google.ca/products
- - google.cat/products
- - google.cc/products
- - google.cd/products
- - google.cf/products
- - google.cg/products
- - google.ch/products
- - google.ci/products
- - google.cl/products
- - google.cm/products
- - google.cn/products
- - google.co.bw/products
- - google.co.ck/products
- - google.co.cr/products
- - google.co.id/products
- - google.co.il/products
- - google.co.in/products
- - google.co.jp/products
- - google.co.ke/products
- - google.co.kr/products
- - google.co.ls/products
- - google.co.ma/products
- - google.co.mz/products
- - google.co.nz/products
- - google.co.th/products
- - google.co.tz/products
- - google.co.ug/products
- - google.co.uk/products
- - google.co.uz/products
- - google.co.ve/products
- - google.co.vi/products
- - google.co.za/products
- - google.co.zm/products
- - google.co.zw/products
- - google.com/products
- - google.com.af/products
- - google.com.ag/products
- - google.com.ai/products
- - google.com.ar/products
- - google.com.au/products
- - google.com.bd/products
- - google.com.bh/products
- - google.com.bn/products
- - google.com.bo/products
- - google.com.br/products
- - google.com.by/products
- - google.com.bz/products
- - google.com.co/products
- - google.com.cu/products
- - google.com.cy/products
- - google.com.do/products
- - google.com.ec/products
- - google.com.eg/products
- - google.com.et/products
- - google.com.fj/products
- - google.com.gh/products
- - google.com.gi/products
- - google.com.gt/products
- - google.com.hk/products
- - google.com.jm/products
- - google.com.kh/products
- - google.com.kh/products
- - google.com.kw/products
- - google.com.lb/products
- - google.com.lc/products
- - google.com.ly/products
- - google.com.mt/products
- - google.com.mx/products
- - google.com.my/products
- - google.com.na/products
- - google.com.nf/products
- - google.com.ng/products
- - google.com.ni/products
- - google.com.np/products
- - google.com.om/products
- - google.com.pa/products
- - google.com.pe/products
- - google.com.ph/products
- - google.com.pk/products
- - google.com.pr/products
- - google.com.py/products
- - google.com.qa/products
- - google.com.sa/products
- - google.com.sb/products
- - google.com.sg/products
- - google.com.sl/products
- - google.com.sv/products
- - google.com.tj/products
- - google.com.tn/products
- - google.com.tr/products
- - google.com.tw/products
- - google.com.ua/products
- - google.com.uy/products
- - google.com.vc/products
- - google.com.vn/products
- - google.cv/products
- - google.cz/products
- - google.de/products
- - google.dj/products
- - google.dk/products
- - google.dm/products
- - google.dz/products
- - google.ee/products
- - google.es/products
- - google.fi/products
- - google.fm/products
- - google.fr/products
- - google.ga/products
- - google.gd/products
- - google.ge/products
- - google.gf/products
- - google.gg/products
- - google.gl/products
- - google.gm/products
- - google.gp/products
- - google.gr/products
- - google.gy/products
- - google.hn/products
- - google.hr/products
- - google.ht/products
- - google.hu/products
- - google.ie/products
- - google.im/products
- - google.io/products
- - google.iq/products
- - google.is/products
- - google.it/products
- - google.it.ao/products
- - google.je/products
- - google.jo/products
- - google.kg/products
- - google.ki/products
- - google.kz/products
- - google.la/products
- - google.li/products
- - google.lk/products
- - google.lt/products
- - google.lu/products
- - google.lv/products
- - google.md/products
- - google.me/products
- - google.mg/products
- - google.mk/products
- - google.ml/products
- - google.mn/products
- - google.ms/products
- - google.mu/products
- - google.mv/products
- - google.mw/products
- - google.ne/products
- - google.nl/products
- - google.no/products
- - google.nr/products
- - google.nu/products
- - google.pl/products
- - google.pn/products
- - google.ps/products
- - google.pt/products
- - google.ro/products
- - google.rs/products
- - google.ru/products
- - google.rw/products
- - google.sc/products
- - google.se/products
- - google.sh/products
- - google.si/products
- - google.sk/products
- - google.sm/products
- - google.sn/products
- - google.so/products
- - google.st/products
- - google.td/products
- - google.tg/products
- - google.tk/products
- - google.tl/products
- - google.tm/products
- - google.to/products
- - google.tt/products
- - google.us/products
- - google.vg/products
- - google.vu/products
- - google.ws/products
- - www.google.ac/products
- - www.google.ad/products
- - www.google.ae/products
- - www.google.am/products
- - www.google.as/products
- - www.google.at/products
- - www.google.az/products
- - www.google.ba/products
- - www.google.be/products
- - www.google.bf/products
- - www.google.bg/products
- - www.google.bi/products
- - www.google.bj/products
- - www.google.bs/products
- - www.google.by/products
- - www.google.ca/products
- - www.google.cat/products
- - www.google.cc/products
- - www.google.cd/products
- - www.google.cf/products
- - www.google.cg/products
- - www.google.ch/products
- - www.google.ci/products
- - www.google.cl/products
- - www.google.cm/products
- - www.google.cn/products
- - www.google.co.bw/products
- - www.google.co.ck/products
- - www.google.co.cr/products
- - www.google.co.id/products
- - www.google.co.il/products
- - www.google.co.in/products
- - www.google.co.jp/products
- - www.google.co.ke/products
- - www.google.co.kr/products
- - www.google.co.ls/products
- - www.google.co.ma/products
- - www.google.co.mz/products
- - www.google.co.nz/products
- - www.google.co.th/products
- - www.google.co.tz/products
- - www.google.co.ug/products
- - www.google.co.uk/products
- - www.google.co.uz/products
- - www.google.co.ve/products
- - www.google.co.vi/products
- - www.google.co.za/products
- - www.google.co.zm/products
- - www.google.co.zw/products
- - www.google.com/products
- - www.google.com.af/products
- - www.google.com.ag/products
- - www.google.com.ai/products
- - www.google.com.ar/products
- - www.google.com.au/products
- - www.google.com.bd/products
- - www.google.com.bh/products
- - www.google.com.bn/products
- - www.google.com.bo/products
- - www.google.com.br/products
- - www.google.com.by/products
- - www.google.com.bz/products
- - www.google.com.co/products
- - www.google.com.cu/products
- - www.google.com.cy/products
- - www.google.com.do/products
- - www.google.com.ec/products
- - www.google.com.eg/products
- - www.google.com.et/products
- - www.google.com.fj/products
- - www.google.com.gh/products
- - www.google.com.gi/products
- - www.google.com.gt/products
- - www.google.com.hk/products
- - www.google.com.jm/products
- - www.google.com.kh/products
- - www.google.com.kh/products
- - www.google.com.kw/products
- - www.google.com.lb/products
- - www.google.com.lc/products
- - www.google.com.ly/products
- - www.google.com.mt/products
- - www.google.com.mx/products
- - www.google.com.my/products
- - www.google.com.na/products
- - www.google.com.nf/products
- - www.google.com.ng/products
- - www.google.com.ni/products
- - www.google.com.np/products
- - www.google.com.om/products
- - www.google.com.pa/products
- - www.google.com.pe/products
- - www.google.com.ph/products
- - www.google.com.pk/products
- - www.google.com.pr/products
- - www.google.com.py/products
- - www.google.com.qa/products
- - www.google.com.sa/products
- - www.google.com.sb/products
- - www.google.com.sg/products
- - www.google.com.sl/products
- - www.google.com.sv/products
- - www.google.com.tj/products
- - www.google.com.tn/products
- - www.google.com.tr/products
- - www.google.com.tw/products
- - www.google.com.ua/products
- - www.google.com.uy/products
- - www.google.com.vc/products
- - www.google.com.vn/products
- - www.google.cv/products
- - www.google.cz/products
- - www.google.de/products
- - www.google.dj/products
- - www.google.dk/products
- - www.google.dm/products
- - www.google.dz/products
- - www.google.ee/products
- - www.google.es/products
- - www.google.fi/products
- - www.google.fm/products
- - www.google.fr/products
- - www.google.ga/products
- - www.google.gd/products
- - www.google.ge/products
- - www.google.gf/products
- - www.google.gg/products
- - www.google.gl/products
- - www.google.gm/products
- - www.google.gp/products
- - www.google.gr/products
- - www.google.gy/products
- - www.google.hn/products
- - www.google.hr/products
- - www.google.ht/products
- - www.google.hu/products
- - www.google.ie/products
- - www.google.im/products
- - www.google.io/products
- - www.google.iq/products
- - www.google.is/products
- - www.google.it/products
- - www.google.it.ao/products
- - www.google.je/products
- - www.google.jo/products
- - www.google.kg/products
- - www.google.ki/products
- - www.google.kz/products
- - www.google.la/products
- - www.google.li/products
- - www.google.lk/products
- - www.google.lt/products
- - www.google.lu/products
- - www.google.lv/products
- - www.google.md/products
- - www.google.me/products
- - www.google.mg/products
- - www.google.mk/products
- - www.google.ml/products
- - www.google.mn/products
- - www.google.ms/products
- - www.google.mu/products
- - www.google.mv/products
- - www.google.mw/products
- - www.google.ne/products
- - www.google.nl/products
- - www.google.no/products
- - www.google.nr/products
- - www.google.nu/products
- - www.google.pl/products
- - www.google.pn/products
- - www.google.ps/products
- - www.google.pt/products
- - www.google.ro/products
- - www.google.rs/products
- - www.google.ru/products
- - www.google.rw/products
- - www.google.sc/products
- - www.google.se/products
- - www.google.sh/products
- - www.google.si/products
- - www.google.sk/products
- - www.google.sm/products
- - www.google.sn/products
- - www.google.so/products
- - www.google.st/products
- - www.google.td/products
- - www.google.tg/products
- - www.google.tk/products
- - www.google.tl/products
- - www.google.tm/products
- - www.google.to/products
- - www.google.tt/products
- - www.google.us/products
- - www.google.vg/products
- - www.google.vu/products
- - www.google.ws/products
-
- Google Video:
- parameters:
- - q
- domains:
- - video.google.com
-
- Goyellow.de:
- parameters:
- - MDN
- domains:
- - www.goyellow.de
-
- Gule Sider:
- parameters:
- - q
- domains:
- - www.gulesider.no
-
- HighBeam:
- parameters:
- - q
- domains:
- - www.highbeam.com
-
- Hit-Parade:
- parameters:
- - p7
- domains:
- - req.-hit-parade.com
- - class.hit-parade.com
- - www.hit-parade.com
-
- Holmes:
- parameters:
- - q
- domains:
- - holmes.ge
-
- Hooseek.com:
- parameters:
- - recherche
- domains:
- - www.hooseek.com
-
- Hotbot:
- parameters:
- - query
- domains:
- - www.hotbot.com
-
- Icerockeet:
- parameters:
- - q
- domains:
- - blogs.icerocket.com
-
- ICQ:
- parameters:
- - q
- domains:
- - www.icq.com
- - search.icq.com
-
- Ilse:
- parameters:
- - search_for
- domains:
- - www.ilse.nl
-
- InfoSpace:
- parameters:
- - q
- - s
- domains:
- - infospace.com
- - dogpile.com
- - www.dogpile.com
- - metacrawler.com
- - webfetch.com
- - webcrawler.com
- - search.kiwee.com
- # powered by InfoSpace
- - isearch.babylon.com
- - start.facemoods.com
- - search.magnetic.com
- - search.searchcompletion.com
- - clusty.com
-
- Interia:
- parameters:
- - q
- domains:
- - www.google.interia.pl
-
- I-play:
- parameters:
- - q
- domains:
- - start.iplay.com
-
- IXquick:
- parameters:
- - query
- domains:
- - ixquick.com
- - www.eu.ixquick.com
- - ixquick.de
- - www.ixquick.de
- - us.ixquick.com
- - s1.us.ixquick.com
- - s2.us.ixquick.com
- - s3.us.ixquick.com
- - s4.us.ixquick.com
- - s5.us.ixquick.com
- - eu.ixquick.com
- - s8-eu.ixquick.com
- - s1-eu.ixquick.de
-
- Jyxo:
- parameters:
- - q
- domains:
- - jyxo.1188.cz
-
- Jungle Spider:
- parameters:
- - q
- domains:
- - www.jungle-spider.de
-
- Jungle Key:
- parameters:
- - query
- domains:
- - junglekey.com
- - junglekey.fr
-
- Kataweb:
- parameters:
- - q
- domains:
- - www.kataweb.it
-
- Kvasir:
- parameters:
- - q
- domains:
- - www.kvasir.no
-
- Latne:
- parameters:
- - q
- domains:
- - www.latne.lv
-
- La Toile Du Quebec Via Google:
- parameters:
- - q
- domains:
- - www.toile.com
- - web.toile.com
-
- Looksmart:
- parameters:
- - key
- domains:
- - www.looksmart.com
-
- Lo.st:
- parameters:
- - x_query
- domains:
- - lo.st
-
- Lycos:
- parameters:
- - query
- domains:
- - search.lycos.com
- - www.lycos.com
- - lycos.com
-
- maailm:
- parameters:
- - tekst
- domains:
- - www.maailm.com
-
- Mail.ru:
- parameters:
- - q
- domains:
- - go.mail.ru
-
- Mamma:
- parameters:
- - query
- domains:
- - www.mamma.com
- - mamma75.mamma.com
-
- Marktplaats:
- parameters:
- - query
- domains:
- - www.marktplaats.nl
-
- Maxwebsearch:
- parameters:
- - query
- domains:
- - maxwebsearch.com
-
- Meta:
- parameters:
- - q
- domains:
- - meta.ua
-
- MetaCrawler.de:
- parameters:
- - qry
- domains:
- - s1.metacrawler.de
- - s2.metacrawler.de
- - s3.metacrawler.de
-
- Metager:
- parameters:
- - eingabe
- domains:
- - meta.rrzn.uni-hannover.de
- - www.metager.de
-
- Metager2:
- parameters:
- - q
- domains:
- - metager2.de
-
- Meinestadt:
- parameters:
- - words
- domains:
- - www.meinestadt.de
-
- Mister Wong:
- parameters:
- - Keywords
- domains:
- - www.mister-wong.com
- - www.mister-wong.de
-
- Monstercrawler:
- parameters:
- - qry
- domains:
- - www.monstercrawler.com
-
- Mozbot:
- parameters:
- - q
- domains:
- - www.mozbot.fr
- - www.mozbot.co.uk
- - www.mozbot.com
-
- El Mundo:
- parameters:
- - q
- domains:
- - ariadna.elmundo.es
-
- MySearch:
- parameters:
- - searchfor
- - searchFor
- domains:
- - www.mysearch.com
- - ms114.mysearch.com
- - ms146.mysearch.com
- - kf.mysearch.myway.com
- - ki.mysearch.myway.com
- - search.myway.com
- - search.mywebsearch.com
-
- Najdi:
- parameters:
- - q
- domains:
- - www.najdi.si
-
- Nate:
- parameters:
- - q
- domains:
- - search.nate.com
-
- Naver:
- parameters:
- - query
- domains:
- - search.naver.com
-
- Naver Images:
- parameters:
- - query
- domains:
- - image.search.naver.com
- - imagesearch.naver.com
-
- Needtofind:
- parameters:
- - searchfor
- domains:
- - ko.search.need2find.com
-
- Neti:
- parameters:
- - query
- domains:
- - www.neti.ee
-
- Nifty:
- parameters:
- - q
- domains:
- - search.nifty.com
-
- Nigma:
- parameters:
- - s
- domains:
- - nigma.ru
-
- Onet:
- parameters:
- - qt
- domains:
- - szukaj.onet.pl
-
- Online.no:
- parameters:
- - q
- domains:
- - online.no
-
- Opplysningen 1881:
- parameters:
- - Query
- domains:
- - www.1881.no
-
- Orange:
- parameters:
- - q
- domains:
- - busca.orange.es
- - search.orange.co.uk
-
- Paperball:
- parameters:
- - q
- domains:
- - www.paperball.de
-
- PeoplePC:
- parameters:
- - q
- domains:
- - search.peoplepc.com
-
- Picsearch:
- parameters:
- - q
- domains:
- - www.picsearch.com
-
- Plazoo:
- parameters:
- - q
- domains:
- - www.plazoo.com
-
- Poisk.ru:
- parameters:
- - q
- domains:
- - www.plazoo.com
-
- PriceRunner:
- parameters:
- - q
- domains:
- - www.pricerunner.co.uk
-
- qip:
- parameters:
- - query
- domains:
- - search.qip.ru
-
- Qualigo:
- parameters:
- - q
- domains:
- - www.qualigo.at
- - www.qualigo.ch
- - www.qualigo.de
- - www.qualigo.nl
-
- Rakuten:
- parameters:
- - qt
- domains:
- - websearch.rakuten.co.jp
-
- Rambler:
- parameters:
- - query
- - words
- domains:
- - nova.rambler.ru
-
- RPMFind:
- parameters:
- - query
- domains:
- - rpmfind.net
- - fr2.rpmfind.net
-
- Road Runner Search:
- parameters:
- - q
- domains:
- - search.rr.com
-
- Sapo:
- parameters:
- - q
- domains:
- - pesquisa.sapo.pt
-
- # Add Scour.com
-
- Search.com:
- parameters:
- - q
- domains:
- - www.search.com
-
- Search.ch:
- parameters:
- - q
- domains:
- - www.search.ch
-
- Searchalot:
- parameters:
- - q
- domains:
- - searchalot.com
-
- SearchCanvas:
- parameters:
- - q
- domains:
- - www.searchcanvas.com
-
- Searchy:
- parameters:
- - q
- domains:
- - www.searchy.co.uk
-
- # Add setooz.com
-
- Seznam:
- parameters:
- - q
- domains:
- - search.seznam.cz
-
- Sharelook:
- parameters:
- - keyword
- domains:
- - www.sharelook.fr
-
- Skynet:
- parameters:
- - q
- domains:
- - www.skynet.be
-
- Sogou:
- parameters:
- - query
- domains:
- - www.sougou.com
-
- Softonic:
- parameters:
- - q
- domains:
- - search.softonic.com
-
- soso.com:
- parameters:
- - w
- domains:
- - www.soso.com
-
- Snapdo:
- parameters:
- - q
- domains:
- - search.snapdo.com
-
- Startpagina:
- parameters:
- - q
- domains:
- - startgoogle.startpagina.nl
-
- Startsiden:
- parameters:
- - q
- domains:
- - www.startsiden.no
-
- suche.info:
- parameters:
- - q
- domains:
- - suche.info
-
- Suchmaschine.com:
- parameters:
- - suchstr
- domains:
- - www.suchmaschine.com
-
- Suchnase:
- parameters:
- - q
- domains:
- - www.suchnase.de
-
- TalkTalk:
- parameters:
- - query
- domains:
- - www.talktalk.co.uk
-
- Technorati:
- parameters:
- - q
- domains:
- - technorati.com
-
- Teoma:
- parameters:
- - q
- domains:
- - www.teoma.com
-
- Terra:
- parameters:
- - query
- domains:
- - buscador.terra.es
- - buscador.terra.cl
- - buscador.terra.com.br
-
- Tiscali:
- parameters:
- - q
- - key
- domains:
- - search.tiscali.it
- - search-dyn.tiscali.it
- - hledani.tiscali.cz
-
- Tixuma:
- parameters:
- - sc
- domains:
- - www.tixuma.de
-
- T-Online:
- parameters:
- - q
- domains:
- - suche.t-online.de
- - brisbane.t-online.de
- - navigationshilfe.t-online.de
-
- Toolbarhome:
- parameters:
- - q
- domains:
- - www.toolbarhome.com
- - vshare.toolbarhome.com
-
- Trouvez.com:
- parameters:
- - query
- domains:
- - www.trouvez.com
-
- TrovaRapido:
- parameters:
- - q
- domains:
- - www.trovarapido.com
-
- Trusted-Search:
- parameters:
- - w
- domains:
- - www.trusted--search.com
-
- Twingly:
- parameters:
- - q
- domains:
- - www.twingly.com
-
- uol.com.br:
- parameters:
- - q
- domains:
- - busca.uol.com.br
-
- URL.ORGanizier:
- parameters:
- - q
- domains:
- - www.url.org
-
- Vinden:
- parameters:
- - q
- domains:
- - www.vinden.nl
-
- Vindex:
- parameters:
- - search_for
- domains:
- - www.vindex.nl
- - search.vindex.nl
-
- Virgilio:
- parameters:
- - qs
- domains:
- - ricerca.virgilio.it
- - ricercaimmagini.virgilio.it
- - ricercavideo.virgilio.it
- - ricercanews.virgilio.it
- - mobile.virgilio.it
-
- Voila:
- parameters:
- - rdata
- - kw
- domains:
- - search.ke.voila.fr
- - www.lemoteur.fr
-
- Volny:
- parameters:
- - search
- domains:
- - web.volny.cz
-
- Walhello :
- parameters:
- - key
- domains:
- - www.walhello.info
- - www.walhello.com
- - www.walhello.de
- - www.walhello.nl
-
- Web.de:
- parameters:
- - su
- domains:
- - suche.web.de
-
- Web.nl:
- parameters:
- - zoekwoord
- domains:
- - www.web.nl
-
- Weborama:
- parameters:
- - QUERY
- domains:
- - www.weborama.com
-
- WebSearch:
- parameters:
- - qkw
- - q
- domains:
- - www.websearch.com
-
- Winamp:
- parameters:
- - q
- domains:
- - search.winamp.com
-
- Witch:
- parameters:
- - search
- domains:
- - www.witch.de
-
- Wirtualna Polska:
- parameters:
- - szukaj
- domains:
- - szukaj.wp.pl
-
- WWW:
- parameters:
- - query
- domains:
- - search.www.ee
-
- X-recherche:
- parameters:
- - MOTS
- domains:
- - www.x-recherche.com
-
- Yahoo!:
- parameters:
- - p
- - q
- domains:
- - search.yahoo.com
- - yahoo.com
- - ar.search.yahoo.com
- - ar.yahoo.com
- - au.search.yahoo.com
- - au.yahoo.com
- - br.search.yahoo.com
- - br.yahoo.com
- - cade.searchde.yahoo.com
- - cade.yahoo.com
- - chinese.searchinese.yahoo.com
- - chinese.yahoo.com
- - cn.search.yahoo.com
- - cn.yahoo.com
- - de.search.yahoo.com
- - de.yahoo.com
- - dk.search.yahoo.com
- - dk.yahoo.com
- - es.search.yahoo.com
- - es.yahoo.com
- - espanol.searchpanol.yahoo.com
- - espanol.searchpanol.yahoo.com
- - espanol.yahoo.com
- - espanol.yahoo.com
- - fr.search.yahoo.com
- - fr.yahoo.com
- - ie.search.yahoo.com
- - ie.yahoo.com
- - it.search.yahoo.com
- - it.yahoo.com
- - kr.search.yahoo.com
- - kr.yahoo.com
- - mx.search.yahoo.com
- - mx.yahoo.com
- - no.search.yahoo.com
- - no.yahoo.com
- - nz.search.yahoo.com
- - nz.yahoo.com
- - one.cn.yahoo.com
- - one.searchn.yahoo.com
- - qc.search.yahoo.com
- - qc.search.yahoo.com
- - qc.search.yahoo.com
- - qc.yahoo.com
- - qc.yahoo.com
- - se.search.yahoo.com
- - se.search.yahoo.com
- - se.yahoo.com
- - search.searcharch.yahoo.com
- - search.yahoo.com
- - uk.search.yahoo.com
- - uk.yahoo.com
- - www.yahoo.co.jp
- - search.yahoo.co.jp
- # powered by Yahoo
- - www.cercato.it
- - search.offerbox.com
- - ys.mirostart.com
-
- Yahoo! Images:
- parameters:
- - p
- - q
- domains:
- - image.yahoo.cn
- - images.search.yahoo.com
-
- Yam:
- parameters:
- - k
- domains:
- - search.yam.com
-
- Yandex:
- parameters:
- - text
- domains:
- - yandex.ru
- - yandex.ua
- - yandex.com
- - yandex.by
- - www.yandex.ru
- - www.yandex.ua
- - www.yandex.com
- - www.yandex.by
-
- Yandex Images:
- parameters:
- - text
- domains:
- - images.yandex.ru
- - images.yandex.ua
- - images.yandex.com
-
- Yasni:
- parameters:
- - query
- domains:
- - www.yasni.de
- - www.yasni.com
- - www.yasni.co.uk
- - www.yasni.ch
- - www.yasni.at
-
- Yatedo:
- parameters:
- - q
- domains:
- - www.yatedo.com
- - www.yatedo.fr
-
- # Add Yellowmap:
-
- Yippy:
- parameters:
- - q
- - query
- domains:
- - search.yippy.com
-
- YouGoo:
- parameters:
- - q
- domains:
- - www.yougoo.fr
-
- Zapmeta:
- parameters:
- - q
- - query
- domains:
- - www.zapmeta.com
- - www.zapmeta.nl
- - www.zapmeta.de
- - uk.zapmeta.com
-
- Zoek:
- parameters:
- - q
- domains:
- - www3.zoek.nl
-
- Zhongsou:
- parameters:
- - w
- domains:
- - p.zhongsou.com
-
- Zoeken:
- parameters:
- - q
- domains:
- - www.zoeken.nl
-
- Zoohoo:
- parameters:
- - q
- domains:
- - zoohoo.cz
diff --git a/vendor/snowplow/referer-parser/dotnet/RefererParser/packages.config b/vendor/snowplow/referer-parser/dotnet/RefererParser/packages.config
deleted file mode 100644
index a7ac88acd..000000000
--- a/vendor/snowplow/referer-parser/dotnet/RefererParser/packages.config
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/dotnet/RefererParser/strongname.snk b/vendor/snowplow/referer-parser/dotnet/RefererParser/strongname.snk
deleted file mode 100644
index c45ce405a..000000000
Binary files a/vendor/snowplow/referer-parser/dotnet/RefererParser/strongname.snk and /dev/null differ
diff --git a/vendor/snowplow/referer-parser/go/LICENSE.txt b/vendor/snowplow/referer-parser/go/LICENSE.txt
deleted file mode 100644
index e5dc8f13e..000000000
--- a/vendor/snowplow/referer-parser/go/LICENSE.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2014 Thomas Sileo.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/snowplow/referer-parser/go/README.md b/vendor/snowplow/referer-parser/go/README.md
deleted file mode 100644
index 112bf5a1a..000000000
--- a/vendor/snowplow/referer-parser/go/README.md
+++ /dev/null
@@ -1,76 +0,0 @@
-# referer-parser Go library
-
-This is the Go implementation of [referer-parser] [referer-parser], the library for extracting search marketing data from referer _(sic)_ URLs.
-
-The implementation uses the shared 'database' of known referers found in [`referers.yml`] [referers-yml].
-
-The Go version of referer-parser is maintained by [Thomas Sileo] [tsileo].
-
-## Installation
-
-```console
-$ go get github.com/snowplow/referer-parser/go
-```
-
-## Usage
-
-```go
-package main
-
-import (
- "log"
-
- "github.com/snowplow/referer-parser/go"
-)
-
-func main() {
- referer_url := "http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari"
- r := refererparser.Parse(referer_url)
-
- log.Printf("Known:%v", r.Known)
- log.Printf("Referer:%v", r.Referer)
- log.Printf("Medium:%v", r.Medium)
- log.Printf("Search parameter:%v", r.SearchParameter)
- log.Printf("Search term:%v", r.SearchTerm)
- log.Printf("Host:%v", r.URI)
-}
-
-```
-
-## referers.yml embed
-
-The [`referers.json`] [referers-yml] is embedded in the package using [`go-bindata`] [go-bindata].
-
-```
-$ go-bindata -ignore=\\.yml -pkg refererparser data/...
-```
-
-## Copyright and license
-
-The referer-parser Go library is distributed under the MIT License.
-
-Copyright (c) 2014 Thomas Sileo.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-[referer-parser]: https://github.com/snowplow/referer-parser
-[referers-yml]: https://github.com/snowplow/referer-parser/blob/master/referers.json
-
-[tsileo]: https://github.com/tsileo
-[go-bindata]: https://github.com/jteeuwen/go-bindata
diff --git a/vendor/snowplow/referer-parser/go/bindata.go b/vendor/snowplow/referer-parser/go/bindata.go
deleted file mode 100644
index eaf5bcf79..000000000
--- a/vendor/snowplow/referer-parser/go/bindata.go
+++ /dev/null
@@ -1,1105 +0,0 @@
-package refererparser
-
-import (
- "bytes"
- "compress/gzip"
- "fmt"
- "io"
- "strings"
-)
-
-func bindata_read(data []byte, name string) ([]byte, error) {
- gz, err := gzip.NewReader(bytes.NewBuffer(data))
- if err != nil {
- return nil, fmt.Errorf("Read %q: %v", name, err)
- }
-
- var buf bytes.Buffer
- _, err = io.Copy(&buf, gz)
- gz.Close()
-
- if err != nil {
- return nil, fmt.Errorf("Read %q: %v", name, err)
- }
-
- return buf.Bytes(), nil
-}
-
-func data_referers_json() ([]byte, error) {
- return bindata_read([]byte{
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x00, 0xff, 0xcc, 0x7d,
- 0x6d, 0x97, 0xdb, 0xb8, 0xb1, 0xe6, 0xf7, 0xfc, 0x8a, 0xce, 0x7c, 0xdd,
- 0x35, 0x27, 0x9e, 0xc9, 0xcb, 0x9c, 0xfd, 0x66, 0x7b, 0xc6, 0x1e, 0x27,
- 0xf6, 0xd8, 0x63, 0x3b, 0xe3, 0x38, 0xbb, 0x7b, 0x72, 0x20, 0x12, 0xa2,
- 0xd0, 0xe2, 0x9b, 0x09, 0x52, 0x6a, 0xf5, 0x9e, 0xfb, 0xdf, 0x17, 0x20,
- 0x45, 0x35, 0xc4, 0x46, 0xb1, 0x1e, 0x50, 0x1a, 0xee, 0xde, 0x7b, 0x9d,
- 0xeb, 0x58, 0x4f, 0x01, 0x85, 0x42, 0x55, 0xa1, 0x80, 0x2a, 0x80, 0xff,
- 0xe7, 0x0f, 0x37, 0xe6, 0x7f, 0xbe, 0x69, 0x8b, 0x6d, 0x51, 0xee, 0x8b,
- 0x6f, 0xfe, 0xc7, 0x4d, 0xff, 0x0f, 0xdd, 0x3f, 0xbe, 0x2a, 0xcb, 0x34,
- 0x93, 0x67, 0xff, 0xd6, 0xfd, 0x7b, 0x52, 0xe6, 0x42, 0x15, 0xda, 0xfc,
- 0xf0, 0x3f, 0xcf, 0x7e, 0xe8, 0x7e, 0xd4, 0x6d, 0x55, 0x95, 0x75, 0x13,
- 0xa5, 0x1d, 0x71, 0x14, 0x97, 0xf9, 0x37, 0xff, 0xfd, 0xe6, 0x31, 0x2c,
- 0x91, 0x3b, 0x99, 0x95, 0x95, 0xac, 0x35, 0x87, 0xcc, 0x45, 0xc5, 0x62,
- 0x44, 0x1c, 0x97, 0x6d, 0xd1, 0xb0, 0xb8, 0xa4, 0x56, 0x3b, 0xc9, 0x81,
- 0xb4, 0x6a, 0x24, 0xdb, 0x52, 0x5a, 0x97, 0x2d, 0xcf, 0xd7, 0x18, 0x15,
- 0xb5, 0x5b, 0x2f, 0xae, 0x90, 0xfb, 0x11, 0xea, 0x0c, 0xf3, 0xbf, 0x4f,
- 0xff, 0xed, 0xbf, 0x1c, 0xea, 0x6f, 0xbe, 0x88, 0x4d, 0x59, 0xfe, 0x31,
- 0x70, 0x7e, 0xd6, 0xaa, 0x10, 0x45, 0x2c, 0xa3, 0x83, 0x25, 0x26, 0x19,
- 0xef, 0x18, 0x9a, 0x86, 0xc8, 0xb6, 0x2e, 0x75, 0x37, 0xd5, 0xd3, 0xb8,
- 0x0e, 0xc3, 0x35, 0x26, 0x74, 0x53, 0x97, 0x59, 0x99, 0x1e, 0x18, 0x5c,
- 0x53, 0x0b, 0xa3, 0x37, 0x5c, 0x63, 0x85, 0xde, 0x5b, 0xc5, 0x62, 0xf8,
- 0x8a, 0x6b, 0x29, 0x0b, 0x06, 0xb4, 0x97, 0xa2, 0xd9, 0xc8, 0x9a, 0x41,
- 0xe5, 0x52, 0x6b, 0x59, 0xa4, 0x2c, 0x2e, 0x15, 0x06, 0xc9, 0xb1, 0xb5,
- 0x29, 0xab, 0x4a, 0x15, 0xe9, 0x11, 0x56, 0xc8, 0xc6, 0xdf, 0x65, 0xb9,
- 0x53, 0x6c, 0x5b, 0xb1, 0x60, 0xa5, 0x90, 0xa9, 0xb5, 0xd4, 0xcd, 0x21,
- 0xe3, 0x14, 0xa2, 0xcc, 0x53, 0x4e, 0x08, 0xa2, 0x89, 0x37, 0x0e, 0xd7,
- 0x94, 0x06, 0x77, 0x7f, 0x1b, 0xf4, 0xf8, 0x1b, 0x2d, 0x45, 0x1d, 0x6f,
- 0xce, 0xfd, 0xce, 0x27, 0x91, 0x6d, 0xed, 0x9f, 0x40, 0xcd, 0xde, 0xef,
- 0xf7, 0x51, 0x63, 0xc8, 0xec, 0x1f, 0xaf, 0x15, 0x8d, 0xb8, 0xfe, 0xa6,
- 0x12, 0xb5, 0x99, 0x90, 0xc6, 0xa8, 0x8a, 0xbf, 0xc1, 0xaf, 0xad, 0xac,
- 0x0f, 0x90, 0x25, 0x3e, 0x8d, 0xe2, 0xfb, 0x40, 0x6e, 0x3b, 0x92, 0x0b,
- 0xf9, 0x83, 0x78, 0xfb, 0x58, 0xae, 0x9b, 0xb2, 0x50, 0x71, 0xa8, 0x1f,
- 0xef, 0x26, 0x26, 0xd2, 0x47, 0xea, 0x6e, 0xda, 0x97, 0x60, 0xf7, 0xd5,
- 0xb3, 0xd7, 0x1f, 0x03, 0x59, 0x4d, 0x85, 0xd2, 0x51, 0x6c, 0xfe, 0x2f,
- 0x6e, 0x23, 0x99, 0xb4, 0x51, 0xb3, 0x5f, 0x84, 0xd3, 0x97, 0xc6, 0x7f,
- 0xc4, 0xa2, 0xd5, 0xc1, 0x2b, 0x64, 0x2f, 0xd9, 0xf5, 0x40, 0x7e, 0x05,
- 0xd1, 0x56, 0x10, 0xc3, 0xdf, 0xff, 0xf5, 0x4f, 0x51, 0x5c, 0x84, 0x72,
- 0x5b, 0x46, 0x47, 0x3a, 0xaf, 0x7f, 0x34, 0x36, 0xa7, 0xcb, 0xc5, 0x94,
- 0xe3, 0xc3, 0xfb, 0xb7, 0x2f, 0x55, 0x91, 0x04, 0x0e, 0xa1, 0xae, 0x72,
- 0xb3, 0xea, 0x25, 0xa4, 0x2f, 0x5d, 0xd7, 0xdf, 0x45, 0x2e, 0x66, 0x29,
- 0xaf, 0xf1, 0xa2, 0xcc, 0x63, 0xb3, 0xf0, 0x05, 0xab, 0x4f, 0x2d, 0x8c,
- 0xfa, 0xc4, 0x3d, 0xf1, 0x35, 0x18, 0x86, 0x98, 0xfd, 0xad, 0x54, 0x99,
- 0x98, 0xa7, 0xe9, 0x5b, 0x19, 0xed, 0x2c, 0xb5, 0x51, 0x79, 0x52, 0x89,
- 0x32, 0x99, 0x97, 0x8d, 0x09, 0x29, 0x2c, 0xe6, 0xb2, 0xe1, 0xd4, 0x89,
- 0x68, 0x84, 0xb7, 0x9f, 0xed, 0xd8, 0x2f, 0xf8, 0x47, 0xfa, 0x8b, 0x5a,
- 0x37, 0x87, 0x79, 0x23, 0x2d, 0x2c, 0xe9, 0x62, 0xd6, 0xf0, 0xac, 0xc9,
- 0x84, 0x9e, 0xc5, 0xa8, 0xb0, 0x94, 0x51, 0x2c, 0x8b, 0xa6, 0x6e, 0xf3,
- 0xa5, 0x16, 0xa2, 0x37, 0x65, 0x14, 0xac, 0xec, 0x59, 0x47, 0x73, 0x19,
- 0x77, 0x77, 0xff, 0xc1, 0x4d, 0xf2, 0x47, 0xa1, 0x3f, 0xc9, 0x4c, 0xae,
- 0xcb, 0x62, 0xd5, 0x8e, 0xc2, 0x12, 0x9e, 0x59, 0xa3, 0xc7, 0x4f, 0xa3,
- 0xc4, 0x18, 0xe5, 0x43, 0x0b, 0x51, 0x22, 0x2f, 0xe4, 0x1e, 0x54, 0xda,
- 0x97, 0xaa, 0x96, 0x2b, 0x91, 0x65, 0x33, 0x62, 0xa6, 0xf5, 0x91, 0xf4,
- 0x72, 0x5e, 0x31, 0x3d, 0x78, 0xda, 0x16, 0xc9, 0xd3, 0x79, 0xf6, 0xd5,
- 0x91, 0x5e, 0xce, 0xa7, 0x6e, 0x31, 0x97, 0xa7, 0xea, 0x54, 0x65, 0xaa,
- 0x0c, 0x5d, 0x6e, 0x54, 0x2c, 0xeb, 0x58, 0x44, 0xbb, 0x23, 0x79, 0xa4,
- 0xfc, 0xcb, 0xce, 0x11, 0xa7, 0xf2, 0x5c, 0xa4, 0xaa, 0x50, 0x28, 0x7e,
- 0xa7, 0x12, 0x59, 0xa2, 0xe0, 0x6e, 0x1f, 0xc7, 0x61, 0xf3, 0x72, 0xa5,
- 0xcc, 0x06, 0xc0, 0x85, 0x5d, 0xa8, 0x07, 0x1a, 0x92, 0xef, 0x67, 0xb9,
- 0x8a, 0x8a, 0x39, 0x1a, 0xbb, 0xef, 0x09, 0x2f, 0x63, 0xf2, 0xbe, 0x94,
- 0xdb, 0x7d, 0x59, 0xd6, 0x09, 0xc4, 0xeb, 0xfb, 0x4c, 0xdc, 0x97, 0xa1,
- 0x9a, 0x60, 0x79, 0xad, 0x3a, 0xc2, 0xe5, 0xc2, 0xe7, 0xf2, 0x20, 0xb3,
- 0xac, 0xdc, 0x5b, 0x23, 0x09, 0x67, 0x36, 0x75, 0xa8, 0x2f, 0xe3, 0xf6,
- 0xed, 0x8f, 0xbf, 0x60, 0x6b, 0xd8, 0xbb, 0x37, 0xf3, 0x5c, 0x81, 0x28,
- 0x33, 0x7a, 0x0f, 0xfd, 0x00, 0x21, 0x54, 0xde, 0xfc, 0x04, 0xb4, 0xf3,
- 0x80, 0x22, 0xcf, 0x07, 0x8c, 0xd0, 0x0c, 0xaa, 0x96, 0xf1, 0xc6, 0x98,
- 0xdb, 0x46, 0x76, 0xcd, 0x4d, 0x84, 0x39, 0x2e, 0x56, 0x03, 0x60, 0x65,
- 0x7c, 0xc3, 0x34, 0xd0, 0xf8, 0x8f, 0x08, 0x18, 0x8a, 0x6d, 0x0f, 0xe2,
- 0xb2, 0x8b, 0x82, 0xad, 0x81, 0x4d, 0xb5, 0x76, 0xde, 0x52, 0xec, 0x0f,
- 0xb7, 0xc6, 0x32, 0xa6, 0x0e, 0xbf, 0x20, 0x10, 0x2a, 0x64, 0x6d, 0x16,
- 0x5d, 0x69, 0x7f, 0xb7, 0x7f, 0x8c, 0x16, 0x93, 0x18, 0x08, 0xa0, 0x77,
- 0x31, 0x85, 0x31, 0xbf, 0xae, 0x5a, 0x6d, 0x22, 0x8b, 0x44, 0x0c, 0xa2,
- 0x8a, 0xf2, 0x3b, 0x3f, 0x34, 0x33, 0xce, 0x98, 0xed, 0xf4, 0x01, 0xd5,
- 0xb0, 0xbc, 0x35, 0xdf, 0x4d, 0x42, 0x7a, 0x81, 0x6e, 0xaa, 0x28, 0x3f,
- 0x9c, 0x78, 0x13, 0x2d, 0x86, 0x45, 0xdb, 0x24, 0x0c, 0xab, 0xc7, 0x3d,
- 0x51, 0x45, 0x93, 0xd9, 0xad, 0x89, 0x8e, 0x45, 0x75, 0x8d, 0x0d, 0xee,
- 0x57, 0x6f, 0x67, 0x78, 0x5c, 0xf7, 0x2c, 0x2e, 0xcb, 0xd0, 0x9d, 0x6f,
- 0x67, 0x82, 0x96, 0xee, 0x72, 0x6f, 0xb8, 0x92, 0x69, 0xad, 0xd6, 0x6b,
- 0xf8, 0x58, 0x61, 0xfe, 0x89, 0x02, 0x69, 0x17, 0x1d, 0xe4, 0xe9, 0x93,
- 0xef, 0x20, 0xd4, 0xd3, 0x13, 0x6a, 0x91, 0x7d, 0x4c, 0x55, 0x9a, 0x45,
- 0xe7, 0xe6, 0x8d, 0x68, 0x76, 0x2a, 0x74, 0x8b, 0x29, 0x3a, 0xda, 0x28,
- 0xdb, 0x7d, 0x6b, 0x8f, 0x99, 0x45, 0xf6, 0x6d, 0x3f, 0x84, 0x6f, 0x17,
- 0x61, 0xfc, 0x67, 0x95, 0x6e, 0x9e, 0x4b, 0x91, 0xcf, 0x50, 0xac, 0x8d,
- 0x21, 0x5d, 0x19, 0xd2, 0xc5, 0x02, 0x83, 0xd7, 0x4f, 0x4c, 0x24, 0x12,
- 0xbc, 0xad, 0x6d, 0x44, 0xdd, 0x44, 0xca, 0x52, 0x2e, 0xc6, 0xe8, 0xcb,
- 0x5a, 0xc9, 0x22, 0x79, 0x29, 0x65, 0xe8, 0x31, 0xcf, 0xba, 0x23, 0x5c,
- 0x1b, 0xc2, 0xc5, 0x78, 0xfd, 0x22, 0x74, 0xa1, 0x66, 0xcc, 0xfe, 0xc1,
- 0xd2, 0x51, 0xae, 0xf6, 0x01, 0x30, 0xb5, 0x98, 0x0f, 0x08, 0x6a, 0xc1,
- 0x74, 0x30, 0x1b, 0x06, 0x20, 0x96, 0x3b, 0xf2, 0x7a, 0xa5, 0x52, 0xb1,
- 0xca, 0xc2, 0x0f, 0xbd, 0xba, 0xe0, 0x74, 0xa0, 0xa5, 0xd3, 0x7b, 0xaa,
- 0x1e, 0xa1, 0x96, 0x50, 0x02, 0xdb, 0x48, 0xb0, 0xdb, 0xb2, 0x34, 0xcb,
- 0x99, 0x94, 0xba, 0xeb, 0xc2, 0x86, 0x59, 0x87, 0x03, 0x3d, 0xe9, 0x52,
- 0x87, 0x03, 0x66, 0x2d, 0x28, 0x1a, 0x91, 0x94, 0x75, 0xf8, 0x3a, 0xd0,
- 0xd3, 0x75, 0xc1, 0xce, 0x6a, 0x22, 0xa8, 0x1e, 0x03, 0x97, 0x18, 0xd5,
- 0xc7, 0x87, 0x5d, 0x44, 0xf8, 0x14, 0x38, 0x5b, 0x90, 0x25, 0x78, 0x7d,
- 0x5b, 0x16, 0xda, 0xb4, 0x11, 0xd7, 0x62, 0x9f, 0xc9, 0xd0, 0x69, 0xb0,
- 0xfc, 0xe6, 0x67, 0x0d, 0x5c, 0x83, 0x6f, 0xd4, 0xb9, 0x74, 0x09, 0xf4,
- 0x9b, 0xd7, 0xdd, 0x9e, 0x29, 0x34, 0x87, 0xd4, 0x27, 0xdf, 0x45, 0xfc,
- 0xad, 0xca, 0xd3, 0xda, 0x90, 0x7b, 0xf3, 0xb7, 0x47, 0x50, 0x82, 0x80,
- 0x24, 0x02, 0xca, 0x11, 0x90, 0x46, 0x40, 0x0d, 0x02, 0xba, 0x07, 0x40,
- 0x2b, 0x81, 0x80, 0x90, 0xd1, 0xad, 0xd6, 0x08, 0x28, 0x45, 0x40, 0x0a,
- 0x01, 0xdd, 0x22, 0x20, 0x44, 0x98, 0xab, 0x03, 0x00, 0x8a, 0x11, 0x39,
- 0xc5, 0xd0, 0xbc, 0xc4, 0x88, 0xd6, 0xc5, 0x88, 0xd6, 0xc5, 0x88, 0xc8,
- 0x63, 0x44, 0xe4, 0x26, 0x86, 0x06, 0x40, 0xc8, 0xbc, 0xc4, 0x19, 0x02,
- 0x42, 0x2c, 0x21, 0x2e, 0x10, 0x50, 0x19, 0xad, 0xf6, 0x18, 0x2e, 0xde,
- 0x82, 0xb8, 0x1a, 0xc3, 0x29, 0x68, 0x8a, 0x0c, 0x0e, 0x92, 0x88, 0xc1,
- 0x81, 0xe3, 0xbd, 0xad, 0x30, 0xdc, 0x16, 0xb1, 0x5a, 0x8b, 0x03, 0xc7,
- 0x9b, 0x21, 0xc6, 0x64, 0x70, 0x39, 0x64, 0x2a, 0x06, 0x87, 0xf8, 0x27,
- 0x83, 0x2b, 0x40, 0x5c, 0x03, 0xe9, 0xb0, 0xc1, 0x81, 0xed, 0xb5, 0x90,
- 0xe1, 0xd8, 0x90, 0x1c, 0xc4, 0x81, 0xfd, 0xee, 0xc0, 0x79, 0xdb, 0x41,
- 0xe6, 0x58, 0x46, 0xf7, 0xe0, 0x7c, 0xdc, 0x43, 0x46, 0x69, 0x70, 0x98,
- 0xbd, 0x61, 0xad, 0xe5, 0x91, 0x80, 0x9c, 0x98, 0x05, 0x62, 0xf3, 0x61,
- 0x80, 0x98, 0x60, 0x0c, 0x10, 0xd3, 0x7c, 0x7b, 0x9c, 0x06, 0x02, 0x57,
- 0x98, 0x4f, 0x30, 0x40, 0x4c, 0x59, 0x0d, 0x10, 0xf3, 0x0a, 0x06, 0x58,
- 0xa2, 0x40, 0x74, 0xd4, 0xd8, 0xc2, 0x68, 0x81, 0x98, 0x66, 0xdb, 0xe3,
- 0x0f, 0x14, 0x88, 0x0a, 0x3c, 0x46, 0x79, 0x4c, 0xd0, 0xae, 0x25, 0xb4,
- 0x3c, 0x5b, 0x20, 0xaa, 0x8f, 0x12, 0x8a, 0x0a, 0x0c, 0x70, 0x8d, 0xc4,
- 0x34, 0x16, 0x98, 0xa2, 0xda, 0x93, 0xa2, 0xa6, 0x90, 0xa2, 0x3c, 0x6e,
- 0x30, 0x6f, 0x97, 0x47, 0xb7, 0xa8, 0x03, 0xd8, 0xa2, 0x83, 0xc1, 0x81,
- 0xa0, 0x87, 0x8a, 0xb2, 0x15, 0x0a, 0x44, 0x95, 0x22, 0x43, 0xf5, 0x31,
- 0x47, 0x05, 0x9e, 0xdf, 0xa1, 0x40, 0xb4, 0xeb, 0x02, 0x5b, 0x10, 0x0c,
- 0x10, 0x75, 0xcd, 0x05, 0x6a, 0x0a, 0x05, 0xaa, 0x8f, 0x05, 0x16, 0xe4,
- 0xe4, 0x11, 0xbc, 0xce, 0x54, 0xe8, 0xa8, 0x2b, 0x6c, 0xfd, 0x35, 0x40,
- 0x54, 0x1f, 0x2b, 0xd4, 0x66, 0x2a, 0xd4, 0x35, 0x57, 0xe8, 0x5c, 0x7f,
- 0x45, 0x47, 0xad, 0x61, 0x20, 0x6a, 0x33, 0x1a, 0x55, 0x0a, 0x8d, 0x05,
- 0xc8, 0x06, 0xb8, 0x03, 0x81, 0x0d, 0xea, 0x48, 0x1b, 0x74, 0x75, 0x6d,
- 0xd0, 0x99, 0x69, 0x50, 0xdf, 0xd3, 0xa2, 0x02, 0x6f, 0xd1, 0xb9, 0xde,
- 0xa1, 0x4e, 0x6a, 0x07, 0x8d, 0x1a, 0x12, 0x36, 0xb2, 0xf2, 0x27, 0x88,
- 0x41, 0x25, 0xc8, 0x94, 0x25, 0x88, 0x21, 0x25, 0x88, 0x47, 0x48, 0x10,
- 0xc6, 0x25, 0xc2, 0xb8, 0x44, 0xb6, 0x45, 0x6b, 0xc4, 0xef, 0xad, 0x11,
- 0xc6, 0xd7, 0x88, 0x22, 0xa6, 0x88, 0x6e, 0xa5, 0x48, 0xac, 0x9a, 0x22,
- 0x22, 0x48, 0x91, 0x75, 0x22, 0x45, 0xdc, 0x41, 0x8a, 0xb8, 0x82, 0x14,
- 0x91, 0x53, 0x8a, 0x2c, 0x20, 0x29, 0x24, 0x4c, 0xc4, 0xfe, 0x36, 0x88,
- 0x49, 0x6d, 0x90, 0xee, 0x36, 0x48, 0x60, 0xb0, 0x41, 0xe2, 0x63, 0x85,
- 0xcc, 0x9d, 0x42, 0x84, 0xa9, 0x90, 0xe0, 0x59, 0x7d, 0x45, 0x40, 0x88,
- 0xb5, 0x28, 0x44, 0x04, 0xca, 0x16, 0x4e, 0x00, 0xb8, 0x5b, 0x44, 0x0a,
- 0xb7, 0x48, 0x4b, 0x5b, 0x44, 0x83, 0xb7, 0x88, 0xa5, 0x6f, 0x11, 0xef,
- 0x93, 0x21, 0x46, 0x9c, 0x21, 0xdd, 0x65, 0x88, 0xdb, 0xcc, 0x10, 0xa1,
- 0x67, 0x88, 0xde, 0x65, 0xc8, 0xca, 0x91, 0x23, 0xde, 0x27, 0x47, 0xe6,
- 0x2e, 0x47, 0xa6, 0x25, 0x47, 0x44, 0x90, 0x23, 0xde, 0x27, 0x47, 0x2c,
- 0x3d, 0x47, 0xd4, 0x3c, 0x47, 0x84, 0x99, 0x43, 0xc2, 0x44, 0x82, 0x8e,
- 0x02, 0x11, 0x66, 0x81, 0x88, 0xa0, 0x40, 0xac, 0xa5, 0x40, 0x9c, 0x5d,
- 0x81, 0x88, 0xa0, 0x42, 0x78, 0xaa, 0x90, 0x69, 0xa9, 0x90, 0x69, 0xa9,
- 0x10, 0x43, 0xa8, 0x11, 0x11, 0xd4, 0x48, 0x77, 0x35, 0x22, 0x82, 0x1a,
- 0x99, 0x60, 0x8d, 0xc4, 0x7f, 0x1a, 0xd1, 0x02, 0x8d, 0xec, 0x6c, 0x34,
- 0xe2, 0x7a, 0x34, 0x62, 0x77, 0x1a, 0x59, 0x83, 0x34, 0x32, 0xc1, 0x1a,
- 0x99, 0x16, 0x8d, 0x4c, 0x70, 0x83, 0xf8, 0xa7, 0x06, 0x71, 0x3d, 0x0d,
- 0x22, 0x82, 0x06, 0xd1, 0xf1, 0x06, 0x91, 0x53, 0x83, 0x88, 0xa0, 0x41,
- 0x44, 0xd0, 0x22, 0xea, 0xbb, 0x43, 0x44, 0xb0, 0x9b, 0xd4, 0xf1, 0x63,
- 0xd9, 0xeb, 0x11, 0xbb, 0x47, 0x40, 0x22, 0x46, 0x40, 0x09, 0x02, 0xf2,
- 0x97, 0xe5, 0x8c, 0x40, 0xfe, 0x0a, 0x94, 0x11, 0x08, 0x62, 0xdc, 0x5f,
- 0x48, 0x39, 0x02, 0xdd, 0x03, 0xa0, 0x95, 0xbf, 0x0e, 0x77, 0x04, 0x42,
- 0x46, 0xb7, 0x5a, 0x23, 0xa0, 0x14, 0x01, 0x29, 0x04, 0x74, 0x8b, 0x80,
- 0x10, 0x61, 0xae, 0x0e, 0x00, 0x88, 0xa8, 0x57, 0x1e, 0x83, 0x90, 0x79,
- 0x89, 0x11, 0xad, 0x8b, 0x11, 0xad, 0x8b, 0x11, 0x91, 0xc7, 0x88, 0xc8,
- 0x89, 0x7a, 0xaf, 0x11, 0x08, 0x99, 0x97, 0x38, 0x43, 0x40, 0x88, 0x25,
- 0x10, 0xd7, 0x47, 0x47, 0x20, 0x9b, 0xb9, 0xc5, 0x70, 0xb1, 0xbf, 0xe8,
- 0xed, 0x31, 0xce, 0x5f, 0x08, 0xf4, 0x08, 0xa7, 0xa0, 0x29, 0xb2, 0x99,
- 0x5b, 0x10, 0x07, 0x8e, 0xf7, 0xb6, 0xc2, 0x70, 0x5b, 0xc4, 0x6a, 0xbb,
- 0xcc, 0x2d, 0x86, 0xcb, 0x10, 0x63, 0xea, 0x32, 0xb7, 0x20, 0x0e, 0xf1,
- 0x4f, 0x5d, 0xe6, 0x16, 0xc3, 0x35, 0x90, 0x0e, 0xdb, 0xcc, 0x2d, 0x86,
- 0x6b, 0x21, 0xc3, 0x21, 0x8b, 0x29, 0x1f, 0xe3, 0xc0, 0x7e, 0x77, 0xe0,
- 0xbc, 0xed, 0x20, 0x73, 0xb4, 0x99, 0x5b, 0x10, 0x07, 0x19, 0xa5, 0xcd,
- 0xdc, 0x42, 0x38, 0xac, 0x35, 0x9b, 0xb9, 0x45, 0x81, 0xd8, 0x7c, 0xd8,
- 0xcc, 0x2d, 0x0a, 0xc4, 0x34, 0x9f, 0xbc, 0x08, 0xf1, 0x18, 0xb8, 0xc2,
- 0x7c, 0x82, 0xcd, 0xdc, 0xa2, 0x40, 0xcc, 0x2b, 0xd8, 0xcc, 0x2d, 0x0a,
- 0x44, 0x47, 0x8d, 0x2d, 0x8c, 0x5d, 0xe6, 0x16, 0x04, 0xc6, 0x28, 0x8f,
- 0x31, 0x2a, 0xf0, 0x18, 0xe5, 0x31, 0x41, 0xbb, 0x96, 0xd0, 0xf2, 0xdc,
- 0x65, 0x6e, 0x51, 0x20, 0x14, 0x15, 0x74, 0x99, 0x5b, 0x10, 0x98, 0xa2,
- 0xda, 0x93, 0xa2, 0xa6, 0x90, 0xa2, 0x3c, 0x6e, 0x30, 0x6f, 0x67, 0x33,
- 0xb7, 0x20, 0x70, 0x8b, 0x0e, 0x06, 0x07, 0x82, 0x1e, 0x2a, 0xca, 0x56,
- 0x28, 0x10, 0x55, 0x8a, 0x0c, 0xd5, 0xc7, 0x1c, 0x15, 0x38, 0x71, 0x41,
- 0xcc, 0x03, 0x44, 0xbb, 0x2e, 0xb0, 0x05, 0xc1, 0x66, 0x6e, 0x51, 0x20,
- 0x6a, 0x0a, 0x05, 0xaa, 0x8f, 0x05, 0x16, 0xe4, 0xd8, 0xcc, 0x2d, 0x08,
- 0xac, 0xd0, 0x51, 0x57, 0xd8, 0xfa, 0x6b, 0x33, 0xb7, 0x28, 0x10, 0xb5,
- 0x99, 0x0a, 0x75, 0xcd, 0x15, 0x3a, 0xd7, 0x5f, 0xd1, 0x51, 0x6b, 0x18,
- 0x88, 0xda, 0x8c, 0x46, 0x95, 0x42, 0x63, 0x01, 0xb2, 0xcd, 0xdc, 0x82,
- 0xc0, 0x06, 0x75, 0xa4, 0x0d, 0xba, 0xba, 0x36, 0xe8, 0xcc, 0x34, 0xa8,
- 0xef, 0x69, 0x51, 0x81, 0xb7, 0xe8, 0x5c, 0xef, 0x50, 0x27, 0xb5, 0x83,
- 0x46, 0x0d, 0x09, 0x1b, 0x59, 0xf9, 0x89, 0x3b, 0x4b, 0x23, 0x10, 0x32,
- 0x65, 0x09, 0x62, 0x48, 0x09, 0xe2, 0x11, 0x12, 0x84, 0x71, 0x89, 0x30,
- 0x0e, 0x1d, 0x47, 0xad, 0x11, 0xbf, 0xb7, 0x46, 0x18, 0x27, 0x6e, 0x61,
- 0x9e, 0x83, 0x52, 0x44, 0xb7, 0x52, 0x24, 0x56, 0x4d, 0x11, 0x11, 0xa4,
- 0xc8, 0x3a, 0x91, 0x22, 0xee, 0x20, 0x45, 0x5c, 0x41, 0x8a, 0xc8, 0x29,
- 0x45, 0x16, 0x90, 0x14, 0x12, 0x26, 0x62, 0x7f, 0x1b, 0xc4, 0xa4, 0x36,
- 0x48, 0x77, 0x1b, 0x24, 0x30, 0xd8, 0x20, 0xf1, 0xb1, 0x42, 0xe6, 0x4e,
- 0x21, 0xc2, 0x54, 0x48, 0xf0, 0xac, 0xfc, 0x17, 0xae, 0x47, 0x20, 0xc4,
- 0x5a, 0x88, 0x7b, 0xe2, 0x63, 0x50, 0x24, 0x10, 0xb6, 0x6e, 0x11, 0x29,
- 0xdc, 0x22, 0x2d, 0x6d, 0x11, 0x0d, 0xde, 0x22, 0x96, 0xbe, 0x45, 0xbc,
- 0x4f, 0x86, 0x18, 0x71, 0x86, 0x74, 0x97, 0x21, 0x6e, 0x33, 0x43, 0x84,
- 0x9e, 0x21, 0x7a, 0x97, 0x21, 0x2b, 0x47, 0x8e, 0x78, 0x9f, 0x1c, 0x99,
- 0xbb, 0x1c, 0x99, 0x96, 0x1c, 0x11, 0x41, 0x8e, 0x78, 0x9f, 0x1c, 0xb1,
- 0xf4, 0x1c, 0x51, 0xf3, 0x1c, 0x11, 0x66, 0x0e, 0x09, 0x13, 0x09, 0x3a,
- 0x0a, 0x44, 0x98, 0x05, 0x22, 0x82, 0x02, 0xb1, 0x96, 0x02, 0x71, 0x76,
- 0x05, 0x22, 0x82, 0x0a, 0xe1, 0xa9, 0x42, 0xa6, 0xa5, 0x42, 0xa6, 0xa5,
- 0x42, 0x0c, 0xa1, 0x46, 0x44, 0x50, 0x23, 0xdd, 0xd5, 0x88, 0x08, 0x6a,
- 0x64, 0x82, 0x35, 0x12, 0xff, 0x69, 0x44, 0x0b, 0x34, 0xb2, 0xb3, 0xd1,
- 0x88, 0xeb, 0xd1, 0x88, 0xdd, 0x69, 0x64, 0x0d, 0xd2, 0xc8, 0x04, 0x6b,
- 0x64, 0x5a, 0x34, 0x32, 0xc1, 0x0d, 0xe2, 0x9f, 0x1a, 0xc4, 0xf5, 0x34,
- 0x88, 0x08, 0x1a, 0x44, 0xc7, 0x1b, 0x44, 0x4e, 0x0d, 0x22, 0x82, 0x06,
- 0x11, 0x41, 0x8b, 0xa8, 0xef, 0x0e, 0x11, 0xc1, 0x0e, 0xd1, 0xf1, 0xfd,
- 0xf8, 0x05, 0xb0, 0x11, 0xc9, 0xb5, 0x6e, 0x8b, 0x3f, 0x7f, 0xa1, 0xff,
- 0x57, 0xfb, 0xa7, 0x3f, 0xad, 0x7f, 0x08, 0x7d, 0x2c, 0x58, 0xac, 0x62,
- 0x5d, 0x66, 0x5b, 0xca, 0xfd, 0xed, 0x64, 0x9d, 0xc8, 0x22, 0xea, 0x50,
- 0x1d, 0x68, 0x89, 0xd1, 0xbc, 0xea, 0x64, 0x77, 0xf3, 0xbe, 0x2e, 0x93,
- 0x36, 0x6e, 0x6e, 0x3e, 0x3e, 0x7e, 0x1a, 0x99, 0x1f, 0xd7, 0x51, 0xfe,
- 0x22, 0xfe, 0xb6, 0xea, 0x9b, 0x99, 0xcc, 0xc2, 0x8b, 0x04, 0x83, 0x49,
- 0x0c, 0x96, 0x63, 0x30, 0x8d, 0xc1, 0x1a, 0x0c, 0x76, 0x0f, 0xc1, 0x56,
- 0x02, 0x83, 0x61, 0x23, 0x5d, 0xad, 0x31, 0x58, 0x8a, 0xc1, 0x14, 0x06,
- 0xbb, 0xc5, 0x60, 0x98, 0x78, 0x57, 0x07, 0x08, 0x16, 0x63, 0x72, 0x8b,
- 0xc1, 0xd9, 0x8a, 0x31, 0xbd, 0x8c, 0x31, 0xbd, 0x8c, 0xb1, 0x69, 0x88,
- 0xb1, 0x69, 0x88, 0x37, 0x18, 0x0c, 0x9b, 0xad, 0x38, 0xc3, 0x60, 0x98,
- 0xcd, 0xc4, 0x05, 0x06, 0xeb, 0xee, 0x3e, 0x83, 0xc8, 0x78, 0x0b, 0x23,
- 0x6b, 0x14, 0xa9, 0xc0, 0x89, 0xeb, 0xee, 0x40, 0xa3, 0x48, 0x78, 0xec,
- 0xb7, 0x15, 0x8a, 0xdc, 0x62, 0x76, 0xde, 0xdf, 0x85, 0x06, 0x91, 0x19,
- 0x66, 0x78, 0xfd, 0x7d, 0x68, 0x14, 0x89, 0x79, 0xb7, 0xfe, 0x4e, 0x34,
- 0x88, 0x6c, 0x40, 0x3d, 0xef, 0xee, 0x45, 0x83, 0xc8, 0x16, 0x34, 0xb1,
- 0xee, 0x6e, 0x34, 0x8a, 0x84, 0x7b, 0xdf, 0xc1, 0xb3, 0xb9, 0x03, 0x8d,
- 0xb7, 0xbb, 0x23, 0x8d, 0x22, 0x41, 0x13, 0xee, 0xee, 0x49, 0x63, 0x48,
- 0xb4, 0xc5, 0xee, 0xae, 0x34, 0x0c, 0x45, 0xe7, 0xa8, 0xbb, 0x2f, 0x0d,
- 0x43, 0x51, 0xfb, 0xe8, 0xee, 0x4c, 0xa3, 0xd0, 0x15, 0xea, 0x47, 0xba,
- 0x7b, 0xd3, 0x30, 0x14, 0xf5, 0x24, 0xdd, 0xdd, 0x69, 0x18, 0x8a, 0x4b,
- 0x00, 0x5d, 0x74, 0xfb, 0x1b, 0xd4, 0x28, 0x34, 0xc6, 0x79, 0x8d, 0xf1,
- 0x29, 0x88, 0x71, 0x5e, 0x13, 0x9c, 0x01, 0x09, 0x06, 0x00, 0xfd, 0x6d,
- 0x6a, 0x18, 0x0a, 0x46, 0x1f, 0xfd, 0x8d, 0x6a, 0x14, 0x9a, 0xe2, 0x9a,
- 0x95, 0xe2, 0x06, 0x93, 0xe2, 0xbc, 0x6e, 0x50, 0x5f, 0xd9, 0xdd, 0xad,
- 0x46, 0xa1, 0x5b, 0x7c, 0x58, 0x21, 0x50, 0xd8, 0xb7, 0xd9, 0x3b, 0xd6,
- 0x30, 0x14, 0x57, 0x97, 0x0c, 0xd7, 0xd7, 0x1c, 0x9f, 0x82, 0xfc, 0x0e,
- 0x87, 0xe2, 0x0c, 0x14, 0xe8, 0xe2, 0xd2, 0xdd, 0xb8, 0x86, 0xa1, 0xb8,
- 0xc1, 0x14, 0xb8, 0xbe, 0x16, 0x68, 0x50, 0xd5, 0xdd, 0xbc, 0x46, 0xa1,
- 0x15, 0x2e, 0x81, 0x0a, 0x5d, 0xdd, 0xbb, 0xfb, 0xd7, 0x30, 0x14, 0xb7,
- 0xad, 0x0a, 0x77, 0xf0, 0x15, 0xae, 0x03, 0x5f, 0x71, 0x09, 0xe8, 0x00,
- 0x28, 0x6e, 0x5b, 0x1a, 0x57, 0x17, 0x8d, 0x06, 0xeb, 0xdd, 0x8d, 0x6c,
- 0x14, 0xda, 0xe0, 0xae, 0xb8, 0xc1, 0x57, 0xee, 0x06, 0x9f, 0xad, 0x06,
- 0xf7, 0x59, 0x2d, 0x3e, 0x05, 0x2d, 0xae, 0x03, 0x3b, 0xdc, 0xbd, 0xed,
- 0x40, 0x09, 0x80, 0xe2, 0xc7, 0xa2, 0x8b, 0x04, 0x33, 0xbd, 0x04, 0x9b,
- 0xc8, 0x04, 0x33, 0xb9, 0x04, 0xf3, 0x22, 0x09, 0x36, 0x04, 0x89, 0x0d,
- 0x41, 0x62, 0x9b, 0xb7, 0x35, 0xe6, 0x37, 0xd7, 0xd8, 0x10, 0xd6, 0x98,
- 0xaa, 0xa6, 0x98, 0xee, 0xa5, 0x58, 0xcc, 0x9c, 0x62, 0x02, 0x49, 0xb1,
- 0x75, 0x27, 0xc5, 0x9c, 0x48, 0x8a, 0x39, 0x90, 0x14, 0x93, 0x5b, 0x8a,
- 0x2d, 0x49, 0x29, 0x28, 0x5e, 0xcc, 0x5e, 0x37, 0x98, 0x01, 0x6e, 0xb0,
- 0x4e, 0x37, 0x58, 0x08, 0xb2, 0xc1, 0xe2, 0x75, 0x85, 0xcd, 0xa9, 0xc2,
- 0xc4, 0xab, 0xb0, 0x70, 0x5e, 0x7d, 0xc5, 0x60, 0x98, 0x65, 0x29, 0x4c,
- 0x20, 0xfd, 0x1d, 0x6f, 0x04, 0x79, 0x8b, 0xc9, 0xe4, 0x16, 0x6b, 0x6d,
- 0x8b, 0xe9, 0xf9, 0x16, 0xf3, 0x0f, 0x5b, 0xcc, 0x77, 0x65, 0x98, 0xe1,
- 0x67, 0x58, 0xa7, 0x19, 0xe6, 0x7e, 0x33, 0x6c, 0x22, 0x32, 0x4c, 0x33,
- 0x33, 0x6c, 0x3d, 0xca, 0x31, 0xdf, 0x95, 0x63, 0x73, 0x9a, 0x63, 0x93,
- 0x95, 0x63, 0x02, 0xc9, 0x31, 0xdf, 0x95, 0x63, 0xfe, 0x21, 0xc7, 0xcc,
- 0x21, 0xc7, 0xc4, 0x9b, 0x83, 0xe2, 0xc5, 0x02, 0x9d, 0x02, 0x13, 0x6f,
- 0x81, 0x09, 0xa4, 0xc0, 0x2c, 0xab, 0xc0, 0x1c, 0x66, 0x81, 0x09, 0xa4,
- 0xc2, 0x78, 0xab, 0xb0, 0xc9, 0xaa, 0xb0, 0xc9, 0xaa, 0x30, 0x93, 0xa9,
- 0x31, 0x81, 0xd4, 0x58, 0xa7, 0x35, 0x26, 0x90, 0x1a, 0x9b, 0x7a, 0x8d,
- 0x45, 0xa2, 0x1a, 0xd3, 0x10, 0x8d, 0xed, 0xc3, 0x34, 0xe6, 0xb8, 0x34,
- 0x66, 0xa7, 0x1a, 0x5b, 0xdd, 0x34, 0x36, 0xf5, 0x1a, 0x9b, 0x2c, 0x8d,
- 0x4d, 0x7d, 0x83, 0xf9, 0xb7, 0x06, 0x73, 0x5c, 0x0d, 0x26, 0x90, 0x06,
- 0xb3, 0x85, 0x06, 0x93, 0x5b, 0x83, 0x09, 0xa4, 0xc1, 0x04, 0xd2, 0x62,
- 0x4a, 0xbe, 0xc3, 0x04, 0xb2, 0xc3, 0x6c, 0x61, 0xcf, 0x74, 0xda, 0x7f,
- 0x02, 0xab, 0x83, 0x72, 0x09, 0x74, 0x17, 0xca, 0xcc, 0xad, 0x0b, 0x65,
- 0xcc, 0xc7, 0x85, 0x32, 0xb3, 0xe2, 0x42, 0x03, 0x86, 0xc5, 0xcc, 0x8e,
- 0x0b, 0x65, 0x62, 0x14, 0x07, 0xca, 0x25, 0xd7, 0x5d, 0x28, 0x2e, 0x01,
- 0x2e, 0xc9, 0xee, 0x42, 0x19, 0x35, 0x71, 0xa1, 0x8c, 0xcf, 0x71, 0xa1,
- 0xcc, 0xb6, 0xd6, 0x85, 0xe2, 0x53, 0xc0, 0xe5, 0x00, 0x1c, 0x28, 0x97,
- 0x7c, 0x3f, 0x83, 0xe2, 0x33, 0xcb, 0x25, 0xe1, 0x5d, 0x28, 0xae, 0xdb,
- 0x5c, 0x32, 0xde, 0x85, 0xe2, 0xd3, 0xc5, 0x25, 0xe5, 0x5d, 0x28, 0x3e,
- 0xb3, 0x5c, 0x72, 0xde, 0x85, 0xe2, 0x76, 0xc8, 0x25, 0xe9, 0x5d, 0x28,
- 0x9f, 0xa8, 0x3f, 0x47, 0x73, 0xc9, 0xfa, 0x11, 0x9a, 0x89, 0xa9, 0xce,
- 0xd1, 0x5c, 0xd2, 0x7e, 0x84, 0x0e, 0x90, 0x1d, 0x9f, 0xbc, 0x3f, 0x47,
- 0x73, 0x09, 0xfc, 0x73, 0x34, 0x97, 0xc4, 0x1f, 0xa1, 0x83, 0x64, 0xc2,
- 0x25, 0xf3, 0xcf, 0xd1, 0x5c, 0x42, 0x7f, 0x84, 0xc6, 0x3d, 0x2b, 0x90,
- 0xd8, 0x3f, 0x47, 0x73, 0xc9, 0xfd, 0x11, 0x3a, 0xa8, 0x6d, 0x2e, 0xc9,
- 0x3f, 0x42, 0x07, 0x69, 0x2c, 0x97, 0xec, 0x3f, 0x47, 0x73, 0x09, 0xff,
- 0x11, 0x3a, 0xc0, 0x31, 0xf0, 0x89, 0xff, 0x11, 0x3a, 0xc0, 0x3d, 0xf0,
- 0x05, 0x00, 0x67, 0xe8, 0x90, 0x96, 0xf9, 0x42, 0x80, 0x31, 0x3c, 0x64,
- 0x2e, 0xf9, 0x82, 0x80, 0x31, 0x3c, 0xc4, 0xd6, 0xf8, 0xc2, 0x80, 0x11,
- 0x9c, 0x2b, 0x0e, 0x18, 0xc3, 0x43, 0x4c, 0x82, 0x2f, 0x12, 0x18, 0xc3,
- 0x99, 0xb0, 0x78, 0x0c, 0x0f, 0x93, 0x4c, 0x48, 0xb0, 0x00, 0x14, 0x0d,
- 0x8c, 0xe0, 0x5c, 0xe1, 0xc0, 0x18, 0x1e, 0x36, 0x4d, 0x5c, 0x01, 0xc1,
- 0x08, 0xce, 0x15, 0x11, 0x8c, 0xe0, 0x5c, 0x21, 0xc1, 0x18, 0x1e, 0xa6,
- 0xef, 0x5c, 0x41, 0xc1, 0x08, 0xce, 0x15, 0x15, 0x8c, 0xe0, 0x5c, 0x61,
- 0xc1, 0x18, 0x1e, 0x66, 0x7c, 0x5c, 0x81, 0xc1, 0x08, 0xce, 0x15, 0x19,
- 0x8c, 0xe0, 0x5c, 0xa1, 0xc1, 0x08, 0xce, 0x55, 0x10, 0x5c, 0x08, 0x0f,
- 0xf2, 0xa7, 0x6c, 0xe1, 0xc1, 0x18, 0x1e, 0xa6, 0x62, 0x5c, 0x01, 0xc2,
- 0x08, 0xce, 0x15, 0x21, 0x8c, 0xe1, 0x4c, 0x21, 0xc2, 0x18, 0x1e, 0xc6,
- 0x0c, 0x57, 0x90, 0x30, 0x86, 0x87, 0x2d, 0x36, 0x5c, 0x61, 0xc2, 0x18,
- 0x1e, 0xa6, 0xef, 0x5c, 0x81, 0xc2, 0x08, 0x1e, 0xb8, 0xae, 0x72, 0x85,
- 0x0a, 0x63, 0x78, 0x48, 0x64, 0xc2, 0x17, 0x2c, 0x8c, 0xe1, 0x61, 0xb6,
- 0xca, 0x15, 0x2e, 0x8c, 0xe1, 0x61, 0x3a, 0xc3, 0x15, 0x30, 0x8c, 0xe0,
- 0x5c, 0x11, 0xc3, 0x18, 0x1e, 0x66, 0xab, 0x5c, 0x31, 0xc3, 0x18, 0x1e,
- 0xb2, 0x89, 0xe1, 0x8b, 0x1a, 0x46, 0x70, 0xae, 0xb0, 0x61, 0x0c, 0x0f,
- 0x8b, 0x38, 0xb8, 0x02, 0x87, 0x31, 0x3c, 0xcc, 0x47, 0x72, 0x85, 0x0e,
- 0x63, 0x78, 0x98, 0xce, 0x70, 0x05, 0x0f, 0x63, 0x78, 0x80, 0x64, 0x02,
- 0xa6, 0x08, 0x8f, 0x92, 0xb8, 0x02, 0x08, 0x17, 0x8a, 0x4f, 0x3a, 0x57,
- 0x08, 0xe1, 0x42, 0x71, 0x6f, 0xc5, 0x15, 0x44, 0x38, 0x50, 0xae, 0x28,
- 0xc2, 0x85, 0xe2, 0x1b, 0x61, 0xae, 0x38, 0xc2, 0x85, 0xe2, 0xc3, 0xe2,
- 0x8a, 0x24, 0x1c, 0x28, 0x57, 0x28, 0xe1, 0x42, 0xf1, 0x3d, 0x04, 0x57,
- 0x30, 0xe1, 0x42, 0xf1, 0x75, 0x91, 0x2b, 0x9c, 0x70, 0xa1, 0xb8, 0xb3,
- 0xe2, 0x0a, 0x28, 0x5c, 0x28, 0xbe, 0x6c, 0x72, 0x85, 0x14, 0x2e, 0x14,
- 0xf7, 0x07, 0x5c, 0x41, 0x85, 0x0b, 0xc5, 0x19, 0xe0, 0x0a, 0x2b, 0x5c,
- 0x28, 0xbe, 0x9f, 0xe1, 0x0a, 0x2c, 0x5c, 0x28, 0x3e, 0x05, 0x5c, 0xa1,
- 0x85, 0x0b, 0x65, 0x8a, 0x2d, 0x5c, 0x28, 0x6e, 0xb1, 0x5c, 0xd1, 0xc5,
- 0x19, 0x94, 0x2d, 0xbc, 0x70, 0xd0, 0x5c, 0xf1, 0x85, 0x0b, 0xc5, 0x5b,
- 0xe5, 0x8a, 0x30, 0x5c, 0x28, 0xee, 0x8b, 0xb8, 0x62, 0x0c, 0x07, 0xca,
- 0x15, 0x64, 0xb8, 0x50, 0x9c, 0x01, 0xae, 0x30, 0xc3, 0x85, 0xe2, 0x13,
- 0xc6, 0x15, 0x68, 0xb8, 0x50, 0x7c, 0xed, 0xe4, 0x0a, 0x35, 0x5c, 0x28,
- 0xae, 0x03, 0x5c, 0xc1, 0x86, 0x0b, 0xc5, 0x85, 0xc5, 0x15, 0x6e, 0xb8,
- 0x50, 0xdc, 0x17, 0x71, 0x05, 0x1c, 0x2e, 0x14, 0x9f, 0x02, 0xae, 0x90,
- 0xc3, 0x85, 0xe2, 0x01, 0x1d, 0x57, 0xd0, 0xe1, 0x42, 0x71, 0x61, 0x71,
- 0x85, 0x1d, 0x2e, 0x14, 0x77, 0xdc, 0x5c, 0x81, 0x87, 0x03, 0xe5, 0x8a,
- 0x3c, 0x5c, 0x28, 0x3e, 0xb1, 0x15, 0x3e, 0xb1, 0x5c, 0xc1, 0x87, 0x03,
- 0xe5, 0x8a, 0x3e, 0x5c, 0x28, 0xce, 0x00, 0x57, 0xfc, 0xe1, 0x42, 0x71,
- 0x75, 0xe1, 0x8a, 0x40, 0x5c, 0x28, 0xae, 0x59, 0x5c, 0x31, 0x88, 0x0b,
- 0xc5, 0x9d, 0x26, 0x57, 0x14, 0xe2, 0x42, 0xf1, 0x15, 0x99, 0x2b, 0x0e,
- 0x71, 0xa1, 0xf8, 0xc4, 0x72, 0x45, 0x22, 0x0e, 0x94, 0x2b, 0x14, 0x71,
- 0xa1, 0xb8, 0xd3, 0xe4, 0x0a, 0x46, 0x5c, 0x28, 0x6e, 0x5b, 0x5c, 0xe1,
- 0x88, 0x0b, 0xc5, 0x85, 0xc5, 0x15, 0x90, 0x38, 0x50, 0xae, 0x88, 0xc4,
- 0x81, 0x72, 0x85, 0x24, 0x2e, 0x14, 0xb7, 0x2d, 0xb7, 0xa0, 0xe4, 0x0c,
- 0xf8, 0x3b, 0xbd, 0x10, 0xf1, 0xa3, 0xd0, 0xef, 0x64, 0xdd, 0x64, 0x2a,
- 0xde, 0xc8, 0x19, 0x5f, 0xe6, 0x4f, 0x84, 0x2e, 0x07, 0x72, 0xfb, 0x92,
- 0xdf, 0x65, 0x2c, 0x6f, 0xf7, 0x10, 0xcf, 0xaf, 0x8b, 0x75, 0xf9, 0xb1,
- 0x12, 0x71, 0x28, 0xc3, 0xca, 0xd0, 0x69, 0x4b, 0x67, 0x4f, 0x02, 0xbc,
- 0x13, 0x91, 0x94, 0x69, 0xa5, 0x32, 0xfa, 0xf7, 0x6e, 0xc8, 0x0c, 0xc6,
- 0x0c, 0x50, 0xc4, 0xb5, 0xd8, 0x67, 0xb2, 0xa6, 0xdb, 0x91, 0xab, 0xb5,
- 0x6c, 0xe2, 0xcd, 0x14, 0x80, 0x6b, 0x43, 0x77, 0x8f, 0x79, 0x98, 0xb0,
- 0x74, 0x2f, 0x69, 0x66, 0xd4, 0x11, 0xb5, 0x12, 0xab, 0x43, 0x56, 0x16,
- 0x74, 0x63, 0x8d, 0xa8, 0x9b, 0x68, 0x6d, 0x64, 0x93, 0x97, 0x65, 0xa2,
- 0xb9, 0x4e, 0x73, 0x91, 0x16, 0xb2, 0x51, 0x31, 0x87, 0xeb, 0xff, 0x9f,
- 0x01, 0x55, 0x99, 0x81, 0x4f, 0xf4, 0x1f, 0x67, 0xad, 0x6e, 0x0e, 0xdd,
- 0xcf, 0x97, 0x6a, 0xbd, 0x97, 0x1d, 0x48, 0xaf, 0x3e, 0xcb, 0x55, 0x69,
- 0x5a, 0x17, 0x33, 0xec, 0x60, 0x7f, 0x24, 0xbd, 0xc2, 0x08, 0x7e, 0xfd,
- 0xe7, 0x4f, 0x1f, 0xbe, 0x40, 0xfc, 0x3e, 0xcf, 0x5a, 0xb9, 0x57, 0x45,
- 0x20, 0xbb, 0x83, 0x46, 0xf4, 0xc4, 0xf6, 0xdb, 0x0e, 0x97, 0xf1, 0xdb,
- 0xb7, 0xf7, 0x49, 0xd6, 0xe3, 0x81, 0xfb, 0x99, 0xfe, 0xc5, 0x28, 0xc2,
- 0x0c, 0x01, 0x5b, 0x75, 0xb3, 0x2f, 0x6e, 0x5e, 0xa8, 0x1d, 0xad, 0xac,
- 0x0f, 0x98, 0x2e, 0xa8, 0x42, 0xe4, 0xd5, 0x3c, 0xd1, 0xee, 0x3b, 0xda,
- 0xab, 0x28, 0x33, 0x24, 0x51, 0x95, 0x06, 0xeb, 0x6c, 0x61, 0x69, 0xec,
- 0xe3, 0x62, 0x17, 0xce, 0x3d, 0xc4, 0xe0, 0x17, 0xb1, 0x29, 0xcb, 0x3f,
- 0xde, 0xbc, 0xee, 0xde, 0x73, 0x0a, 0xf5, 0xd9, 0x96, 0x28, 0x3a, 0xd8,
- 0x16, 0x98, 0x4f, 0x7e, 0x1c, 0x85, 0x7f, 0x84, 0x5e, 0x2c, 0x7b, 0xff,
- 0x03, 0xa1, 0xd8, 0x8c, 0xfc, 0x74, 0x27, 0x32, 0x29, 0x92, 0x19, 0x6a,
- 0x2e, 0x7b, 0x4a, 0xea, 0x1d, 0x57, 0x17, 0xb2, 0x94, 0x7a, 0x7d, 0x92,
- 0xe5, 0x2c, 0x97, 0xd8, 0x58, 0xba, 0xe5, 0x8c, 0x40, 0xca, 0xa4, 0x29,
- 0xd7, 0xaa, 0x08, 0x95, 0xfa, 0xb6, 0x1c, 0x34, 0xa7, 0x30, 0x4d, 0x7c,
- 0x67, 0x5b, 0xb8, 0x02, 0xd3, 0x7d, 0x93, 0xeb, 0xb2, 0x86, 0x98, 0x7f,
- 0x53, 0x96, 0x5b, 0x9d, 0x9b, 0x15, 0x78, 0x86, 0x98, 0xb3, 0x81, 0xf6,
- 0x0a, 0x5c, 0x6f, 0x25, 0xea, 0x1c, 0xeb, 0xa6, 0x15, 0x59, 0x21, 0x6e,
- 0xde, 0x97, 0x99, 0xde, 0x86, 0x6a, 0x87, 0xbe, 0x6f, 0xb7, 0xe2, 0x36,
- 0xda, 0x57, 0xf6, 0xed, 0xc6, 0x0b, 0xe5, 0xdc, 0x35, 0x85, 0xe9, 0x71,
- 0x59, 0x66, 0x2b, 0x51, 0x6f, 0xca, 0x7c, 0x4e, 0xa0, 0xdb, 0x3c, 0x50,
- 0x93, 0x41, 0xcc, 0x4e, 0x6f, 0x44, 0x2d, 0x1f, 0x41, 0x97, 0x50, 0xff,
- 0xfe, 0x65, 0x37, 0x91, 0x95, 0xa1, 0x2a, 0xa4, 0x4f, 0x84, 0x8b, 0xf1,
- 0xfa, 0x45, 0x14, 0x89, 0xbc, 0x0b, 0xe4, 0xf3, 0xd0, 0x11, 0x51, 0xcf,
- 0x61, 0x1e, 0x7f, 0x25, 0x1e, 0x4d, 0x3f, 0xfe, 0x4a, 0x4d, 0xdb, 0xf1,
- 0x67, 0xe2, 0x7b, 0x26, 0x76, 0xf2, 0xa7, 0x3b, 0x77, 0x10, 0x04, 0x03,
- 0x0e, 0x62, 0x6a, 0x67, 0xf1, 0xc0, 0xc8, 0x65, 0xd3, 0xd0, 0xc8, 0xbb,
- 0x06, 0x9a, 0x89, 0x58, 0x14, 0xa5, 0x2d, 0xf4, 0x0e, 0xb5, 0x07, 0xb9,
- 0x8a, 0x4e, 0xa4, 0x4b, 0x68, 0xcc, 0x0b, 0xb3, 0x81, 0x68, 0xb5, 0xac,
- 0x77, 0xc1, 0x96, 0x2b, 0x57, 0x47, 0xe7, 0x1e, 0xeb, 0x6b, 0xe8, 0x37,
- 0x1c, 0x3e, 0x3e, 0xcf, 0xca, 0x34, 0x51, 0x69, 0x2a, 0xeb, 0x19, 0xbe,
- 0x66, 0x75, 0x22, 0x5e, 0xce, 0x7f, 0xd8, 0xfd, 0x5f, 0x25, 0x52, 0x13,
- 0xb9, 0x86, 0x3a, 0x10, 0x4b, 0x79, 0x3a, 0x95, 0x3a, 0xb5, 0x62, 0x9f,
- 0x0a, 0x5e, 0x82, 0x71, 0x59, 0x06, 0xf2, 0x2b, 0x4b, 0xfb, 0xc2, 0xeb,
- 0x65, 0xac, 0xdd, 0xfd, 0x07, 0xd7, 0x84, 0x7f, 0x6f, 0xca, 0x22, 0xd5,
- 0x65, 0x1b, 0xc8, 0x66, 0x15, 0xdd, 0x1f, 0x09, 0xaf, 0xa0, 0x03, 0xd8,
- 0xb1, 0xca, 0x1b, 0x71, 0xf3, 0xa9, 0x54, 0x99, 0xbc, 0xf9, 0xb1, 0xbd,
- 0xf9, 0xb5, 0x95, 0x2b, 0x19, 0xdf, 0xfc, 0xa6, 0xc4, 0xcd, 0xab, 0x6e,
- 0x6e, 0x67, 0x2d, 0x99, 0x93, 0x47, 0x29, 0xc6, 0x89, 0x3c, 0x20, 0x96,
- 0x50, 0x95, 0xf7, 0xa2, 0x92, 0xf5, 0x4a, 0x64, 0xd9, 0x8c, 0xb1, 0x54,
- 0x03, 0xed, 0xe5, 0x87, 0x5c, 0x18, 0xb3, 0x7f, 0x6f, 0x0b, 0x23, 0xf5,
- 0x9b, 0x8f, 0x95, 0x4a, 0x66, 0xf9, 0x90, 0xdb, 0x8e, 0xfe, 0x89, 0xee,
- 0xe8, 0x97, 0x62, 0xfa, 0xbd, 0x2c, 0xab, 0x4c, 0xbe, 0x7f, 0x31, 0x6f,
- 0xdb, 0x5c, 0x75, 0xd4, 0x55, 0xbc, 0x98, 0x42, 0xbc, 0x95, 0x8d, 0x78,
- 0x71, 0x3c, 0x65, 0x4b, 0x42, 0x35, 0x5c, 0x3f, 0x8d, 0xdc, 0x93, 0x3e,
- 0xe2, 0x2b, 0x26, 0xfa, 0x3b, 0x08, 0xf5, 0xfd, 0x18, 0x75, 0xe1, 0xf0,
- 0x41, 0xdf, 0xf4, 0xae, 0x16, 0x45, 0x1a, 0x3a, 0xf0, 0x55, 0xab, 0x63,
- 0x11, 0x95, 0x1d, 0x29, 0xf5, 0x79, 0x93, 0xe3, 0x8c, 0x1e, 0x41, 0xfd,
- 0x57, 0x10, 0x97, 0x98, 0xd1, 0x57, 0xad, 0xb5, 0x99, 0x99, 0x26, 0x93,
- 0x1a, 0x62, 0xdd, 0x99, 0xcb, 0x42, 0xaf, 0x33, 0xbf, 0x34, 0xe2, 0x89,
- 0x55, 0x13, 0x3a, 0x01, 0xb5, 0x8c, 0x37, 0xb2, 0xb6, 0x07, 0xee, 0xeb,
- 0x63, 0x03, 0x57, 0xb0, 0x98, 0xc2, 0xfc, 0x8a, 0x3d, 0x90, 0xad, 0xb7,
- 0x37, 0xc7, 0xad, 0xd4, 0x3c, 0x33, 0x6f, 0x56, 0x91, 0xd0, 0xdb, 0xc5,
- 0xf7, 0xd8, 0x9f, 0xea, 0x56, 0x37, 0x32, 0x79, 0x32, 0xeb, 0x0d, 0xec,
- 0x6e, 0x39, 0x3b, 0x36, 0xf0, 0x64, 0x88, 0x28, 0x17, 0x5a, 0x96, 0x4d,
- 0x6c, 0x35, 0x4f, 0xd0, 0x86, 0x30, 0x2a, 0x24, 0xf5, 0x41, 0xd8, 0x32,
- 0x2e, 0x1e, 0xe1, 0x2e, 0x1b, 0xce, 0xdb, 0x4f, 0x98, 0xd6, 0x0b, 0xdd,
- 0xdc, 0x3c, 0xaf, 0xcb, 0xbd, 0x09, 0xe8, 0xe7, 0xbd, 0x48, 0x6e, 0x67,
- 0x63, 0x6d, 0x5a, 0x59, 0xf5, 0x8d, 0x5c, 0x6d, 0x3e, 0x30, 0xab, 0xb5,
- 0xa1, 0x7d, 0xd5, 0x66, 0x7a, 0x4e, 0x48, 0xb4, 0x1a, 0x68, 0x17, 0xdd,
- 0x8c, 0xfc, 0x56, 0x66, 0xc5, 0x61, 0xc6, 0x1e, 0x6f, 0x67, 0xe9, 0xec,
- 0x47, 0xbc, 0xae, 0x61, 0xa7, 0x58, 0x66, 0x2f, 0x96, 0x75, 0x19, 0x6f,
- 0xa5, 0x0c, 0x3d, 0xc6, 0xb0, 0x82, 0xd5, 0x91, 0x3a, 0x92, 0x2f, 0x77,
- 0x96, 0xf1, 0x49, 0xd6, 0x75, 0xe8, 0x8e, 0xa9, 0x5b, 0x40, 0x93, 0xb2,
- 0x8e, 0x1a, 0x4b, 0x4c, 0x2d, 0xa1, 0x23, 0x14, 0xf1, 0xe1, 0xec, 0x31,
- 0xaa, 0xbb, 0x0f, 0xb6, 0x98, 0x62, 0x3d, 0xcb, 0xc5, 0x7d, 0x19, 0x9a,
- 0x7f, 0x12, 0x1d, 0xd1, 0xe4, 0x41, 0x88, 0x03, 0xb9, 0x6c, 0x28, 0x5b,
- 0x79, 0xd8, 0x97, 0x75, 0x82, 0xa5, 0x29, 0xde, 0x15, 0xc1, 0x6a, 0x77,
- 0x3c, 0xc9, 0x2c, 0x0d, 0xe5, 0xe5, 0x67, 0x99, 0x5f, 0xb1, 0x43, 0x9b,
- 0x1f, 0x55, 0x9a, 0x06, 0xb2, 0x69, 0x0f, 0x13, 0xae, 0xb1, 0xe0, 0x62,
- 0x4a, 0xb1, 0x12, 0xf1, 0x26, 0x74, 0xc9, 0xea, 0x66, 0xbd, 0x23, 0xa4,
- 0x62, 0x64, 0x07, 0x31, 0xa9, 0x3a, 0x03, 0x84, 0xfa, 0xf0, 0xb6, 0x05,
- 0x19, 0xff, 0x0b, 0x34, 0xd5, 0xd4, 0x01, 0x1d, 0x12, 0xdf, 0xf6, 0x77,
- 0x10, 0x13, 0x29, 0x9d, 0x23, 0x82, 0xf0, 0x04, 0xee, 0xb0, 0xfc, 0x5f,
- 0xde, 0x71, 0x10, 0xea, 0xd2, 0xb3, 0x0d, 0xcc, 0xef, 0xe5, 0x42, 0xa8,
- 0x2c, 0x9f, 0x31, 0xc9, 0x3d, 0xe1, 0x15, 0x94, 0xb1, 0x91, 0xdb, 0x47,
- 0xe7, 0x38, 0x44, 0xc0, 0x91, 0xa9, 0xd0, 0xd3, 0xe6, 0x2e, 0xc2, 0x30,
- 0x64, 0x57, 0x28, 0x69, 0xe9, 0x3d, 0x10, 0x76, 0x08, 0xd7, 0xc6, 0x9b,
- 0x42, 0xcc, 0x0a, 0x2c, 0xf4, 0x91, 0x74, 0xa9, 0x9d, 0xfe, 0xcb, 0x5a,
- 0xca, 0x19, 0xee, 0xb2, 0xed, 0x77, 0x2d, 0x1d, 0xed, 0x15, 0x58, 0xed,
- 0x16, 0x2a, 0x9f, 0x41, 0xfc, 0x23, 0xc4, 0xef, 0xbf, 0x2f, 0x95, 0xd9,
- 0x8f, 0xd4, 0xa1, 0x27, 0x74, 0xdd, 0xb1, 0x50, 0x66, 0x16, 0xaa, 0x6b,
- 0x64, 0x9b, 0xc1, 0x53, 0x5a, 0x9b, 0x5f, 0xb2, 0x09, 0xbf, 0x39, 0x1a,
- 0x32, 0xd0, 0x5a, 0x47, 0xb4, 0x9c, 0x4e, 0xff, 0x22, 0x6e, 0x93, 0x59,
- 0xf5, 0x1e, 0x96, 0xce, 0x7e, 0x44, 0x6c, 0x09, 0xb9, 0xbe, 0x57, 0xb1,
- 0x9e, 0xbb, 0x11, 0xa9, 0x06, 0xda, 0xe5, 0x8e, 0xad, 0x8c, 0x07, 0x0d,
- 0x57, 0xd7, 0xd4, 0xbe, 0x29, 0xd2, 0x13, 0x2e, 0xc1, 0xe4, 0xb3, 0x4c,
- 0xde, 0x85, 0x06, 0xc6, 0xc2, 0xd2, 0x70, 0x25, 0x65, 0xc7, 0xec, 0xaa,
- 0x8e, 0x1e, 0xd0, 0x8b, 0x08, 0x5d, 0x36, 0x22, 0x3c, 0x9b, 0x63, 0x4f,
- 0xf5, 0xa2, 0xba, 0xbe, 0x2f, 0xa2, 0xb6, 0x50, 0x4f, 0x36, 0xa2, 0x28,
- 0xca, 0x1d, 0x7d, 0x0c, 0xd8, 0xad, 0x8f, 0x7d, 0x3f, 0x97, 0x3b, 0x47,
- 0xa9, 0x8a, 0x54, 0xac, 0xb0, 0x33, 0x9d, 0x4f, 0xd2, 0xac, 0x1e, 0x65,
- 0x2d, 0x82, 0x2b, 0xb3, 0x9a, 0x13, 0xe1, 0x62, 0x13, 0xf1, 0x2a, 0x2b,
- 0x57, 0xa5, 0x36, 0xff, 0x3b, 0xeb, 0x50, 0xc4, 0x7e, 0x4f, 0x6e, 0x68,
- 0x80, 0xd3, 0xb4, 0x73, 0xe0, 0x12, 0x63, 0xfb, 0xfc, 0xf9, 0xf3, 0xbc,
- 0xa3, 0x9e, 0xae, 0x2e, 0x68, 0xb9, 0xe2, 0xb8, 0x4f, 0x75, 0xd9, 0xee,
- 0xe4, 0x7d, 0x27, 0x97, 0x39, 0x07, 0x69, 0x0f, 0xd4, 0x4b, 0x71, 0xfc,
- 0xfa, 0x5f, 0x5f, 0x5b, 0x15, 0x87, 0xae, 0x9b, 0xea, 0xae, 0xa3, 0x9a,
- 0x8c, 0xff, 0x65, 0x1b, 0x71, 0xb0, 0xe1, 0xf7, 0x09, 0xb3, 0x67, 0x20,
- 0xad, 0x66, 0x3b, 0xd1, 0x4f, 0x23, 0x04, 0xf5, 0x1d, 0x84, 0xfa, 0x1e,
- 0x42, 0xfd, 0x19, 0x42, 0xfd, 0x05, 0x41, 0x01, 0x52, 0xd4, 0x3f, 0x3c,
- 0x41, 0x50, 0x4f, 0x5d, 0xd4, 0x95, 0x42, 0x4c, 0x2c, 0xd0, 0x31, 0x9e,
- 0xfd, 0x92, 0x1a, 0xc7, 0xa1, 0x0a, 0xcd, 0xb6, 0x43, 0xab, 0x52, 0xd7,
- 0xfe, 0x18, 0xb9, 0xd4, 0x18, 0xff, 0x2d, 0x2a, 0xbb, 0x3e, 0xcd, 0xb0,
- 0xf9, 0xfb, 0x9e, 0x72, 0xd2, 0x92, 0x06, 0x0c, 0xf1, 0x91, 0x61, 0x17,
- 0x42, 0x99, 0xc9, 0xf6, 0xac, 0xa3, 0x4b, 0x5d, 0xb6, 0xaf, 0x0b, 0x5c,
- 0x58, 0x5f, 0x54, 0x55, 0x85, 0x9e, 0xba, 0x0e, 0x35, 0xac, 0x96, 0xf4,
- 0xff, 0x83, 0x21, 0xbc, 0x2a, 0xf3, 0xe0, 0xfa, 0x8a, 0xfe, 0x2e, 0x8b,
- 0xa1, 0xbb, 0x02, 0xff, 0x41, 0xdb, 0xb8, 0xcf, 0x22, 0xdb, 0xc8, 0x2c,
- 0x9b, 0xc3, 0xef, 0xfe, 0x48, 0x1a, 0xd9, 0x1b, 0x22, 0xa4, 0xf2, 0x9d,
- 0x50, 0x53, 0x4a, 0x7c, 0x02, 0x4d, 0x38, 0xfb, 0x13, 0xe6, 0xe2, 0x1a,
- 0x19, 0xb4, 0x60, 0xf3, 0x6d, 0xb8, 0xd5, 0x76, 0x56, 0xd4, 0x2e, 0x53,
- 0xdf, 0xf5, 0x71, 0x7b, 0x08, 0x3f, 0x4c, 0xe8, 0x36, 0xb5, 0x1d, 0x61,
- 0xf4, 0x28, 0xcc, 0xfd, 0x9d, 0xd8, 0xec, 0xac, 0x33, 0x38, 0x93, 0xd2,
- 0x1d, 0x38, 0x76, 0x94, 0x0b, 0x66, 0xc2, 0x5f, 0xaa, 0x22, 0xd9, 0xab,
- 0xf0, 0xaa, 0x86, 0xde, 0x01, 0xad, 0x8f, 0xd4, 0xd7, 0x38, 0x82, 0xc7,
- 0x8c, 0x57, 0xae, 0x66, 0xa7, 0x02, 0x9d, 0x22, 0xbf, 0xcb, 0x3d, 0xe6,
- 0xd6, 0xff, 0x29, 0x75, 0x4c, 0xe8, 0x1f, 0x44, 0xbe, 0xca, 0x82, 0x37,
- 0x89, 0x66, 0x4f, 0x68, 0x36, 0x89, 0x3d, 0xe9, 0x15, 0xb6, 0xe7, 0xe4,
- 0xa1, 0x18, 0xee, 0x4a, 0xdf, 0x88, 0xa6, 0x98, 0x73, 0x0a, 0x99, 0x59,
- 0xba, 0x28, 0xdb, 0x2d, 0xb3, 0x23, 0x3f, 0xcc, 0xd6, 0x98, 0xfc, 0xe0,
- 0x28, 0x8c, 0x4f, 0x54, 0xb9, 0x7e, 0xfa, 0xf4, 0xcf, 0x10, 0xec, 0xcf,
- 0x7f, 0xe5, 0x61, 0xdb, 0xf5, 0x03, 0x26, 0x3f, 0xec, 0xc5, 0x81, 0x46,
- 0x2a, 0x14, 0x19, 0x08, 0xba, 0xa2, 0x89, 0x3c, 0x94, 0x5d, 0xd0, 0x5d,
- 0xbe, 0x04, 0x8b, 0x32, 0x5e, 0xb4, 0x6a, 0x4e, 0x35, 0x5e, 0x6c, 0xc8,
- 0x96, 0x4b, 0xf1, 0xaa, 0xbb, 0x76, 0xde, 0x05, 0x98, 0x8e, 0xf0, 0xf2,
- 0x3d, 0x88, 0x8e, 0xb1, 0xd5, 0x49, 0x54, 0xa1, 0xb1, 0x4f, 0x25, 0xb5,
- 0xd9, 0x27, 0x69, 0x11, 0x69, 0x43, 0x1b, 0x55, 0xcb, 0xa4, 0x8e, 0x5e,
- 0x15, 0x22, 0x91, 0x45, 0x2e, 0xe7, 0xd5, 0x68, 0x9d, 0x88, 0x97, 0x4d,
- 0xcd, 0x3c, 0xab, 0xe3, 0x72, 0x0e, 0xbf, 0xc2, 0xd2, 0x5d, 0xce, 0x6a,
- 0x50, 0x20, 0xdc, 0xed, 0x44, 0xe7, 0xad, 0xfb, 0xff, 0x0f, 0xb6, 0x94,
- 0xa5, 0xdc, 0xca, 0xd0, 0x12, 0x82, 0x6e, 0x2b, 0xd8, 0x11, 0x2e, 0x55,
- 0x66, 0xde, 0xd5, 0xc7, 0xdb, 0xe2, 0xc0, 0x39, 0xac, 0xea, 0x13, 0xf1,
- 0x52, 0x95, 0x85, 0x5f, 0x44, 0xe8, 0xc1, 0xdc, 0xe9, 0xf6, 0xe4, 0x35,
- 0x72, 0xb3, 0x58, 0xcc, 0xf7, 0x53, 0xa1, 0xea, 0x39, 0xbb, 0x35, 0x69,
- 0xe9, 0x4c, 0x48, 0xfd, 0xbb, 0x6c, 0x8e, 0x7b, 0x39, 0xfc, 0x07, 0x77,
- 0x0c, 0xef, 0xdf, 0xbd, 0x79, 0xf3, 0xa7, 0xbf, 0x85, 0x66, 0x3a, 0xaa,
- 0xd2, 0xec, 0xff, 0xfe, 0xb6, 0xe4, 0xf9, 0xd4, 0x73, 0x65, 0xcf, 0xb3,
- 0x43, 0xa3, 0xba, 0x38, 0x55, 0xc3, 0xc1, 0xd4, 0xaa, 0x6f, 0xe0, 0x2a,
- 0xa5, 0x82, 0x60, 0x84, 0x57, 0xde, 0xaf, 0x82, 0x2f, 0xb4, 0x75, 0xf1,
- 0x5d, 0x47, 0x38, 0x55, 0x71, 0x71, 0x44, 0x4c, 0x97, 0x89, 0x9c, 0x40,
- 0xcb, 0x04, 0x1a, 0xaf, 0x5f, 0xfc, 0x3a, 0x63, 0xac, 0x2a, 0xfe, 0xca,
- 0xc5, 0x7f, 0x03, 0x64, 0x89, 0x41, 0x3c, 0x17, 0x2a, 0x99, 0x93, 0x49,
- 0x5f, 0x59, 0xba, 0xa9, 0x93, 0x95, 0xa7, 0x0c, 0xe4, 0x7e, 0xa3, 0x12,
- 0x51, 0x32, 0xa0, 0x46, 0xc9, 0x95, 0x60, 0x30, 0x85, 0xdc, 0x6b, 0x8e,
- 0x1d, 0xb9, 0x8a, 0xd2, 0xb2, 0x4d, 0xaf, 0x73, 0x39, 0x27, 0x21, 0x77,
- 0x6b, 0xfe, 0x3d, 0x82, 0x7f, 0x87, 0x8a, 0xf9, 0xdc, 0x17, 0x65, 0x91,
- 0xb4, 0x6a, 0xde, 0x25, 0x51, 0x33, 0xd6, 0x8e, 0x78, 0x31, 0x5d, 0xfa,
- 0x4d, 0xcd, 0xb8, 0x28, 0x6a, 0x95, 0x69, 0xd7, 0x11, 0x52, 0x07, 0xc9,
- 0xc7, 0xd1, 0x3c, 0x80, 0x2e, 0x1b, 0xcb, 0x71, 0xc5, 0x40, 0xeb, 0xd0,
- 0x9f, 0xf7, 0x2f, 0xb1, 0xcc, 0x9b, 0x01, 0xf6, 0x19, 0x97, 0xfe, 0x36,
- 0xaf, 0xd6, 0x4a, 0x37, 0x67, 0xe0, 0x25, 0xa6, 0xeb, 0x53, 0x5d, 0xee,
- 0xc4, 0x07, 0x51, 0xa9, 0x64, 0xce, 0xaa, 0xde, 0x58, 0xea, 0xba, 0xa3,
- 0x5e, 0xae, 0x9e, 0xa6, 0x8d, 0x37, 0xb9, 0xd0, 0xf1, 0x46, 0x15, 0x72,
- 0x66, 0x32, 0x53, 0x8f, 0x9b, 0xb8, 0x50, 0x99, 0x4c, 0x73, 0xba, 0x01,
- 0x5f, 0x0d, 0x38, 0xc4, 0x65, 0x68, 0xaa, 0xe9, 0xa8, 0x47, 0x99, 0x25,
- 0x9d, 0x3c, 0xc7, 0x9e, 0x46, 0x3c, 0xfc, 0xba, 0x54, 0xf8, 0xd2, 0xf9,
- 0x82, 0x39, 0xc1, 0x77, 0x67, 0xe6, 0x8b, 0xed, 0x13, 0x9e, 0x65, 0x8d,
- 0xd8, 0x19, 0xe3, 0x9b, 0x73, 0x5e, 0x20, 0x06, 0x5a, 0x6e, 0x3d, 0xe7,
- 0x81, 0x99, 0xf9, 0x55, 0x15, 0xa9, 0x06, 0xa0, 0x0f, 0x08, 0x22, 0x63,
- 0xf1, 0x00, 0x20, 0xe2, 0xa9, 0x95, 0x7c, 0x52, 0x64, 0x40, 0x4f, 0x06,
- 0xb7, 0xae, 0x47, 0xb8, 0x25, 0xe6, 0x24, 0x31, 0x71, 0x5c, 0xe0, 0x74,
- 0x58, 0x92, 0xa8, 0xac, 0x53, 0x7f, 0xae, 0x3a, 0x51, 0x4d, 0x59, 0xeb,
- 0xe8, 0x04, 0x5a, 0x62, 0x10, 0x3f, 0x19, 0x83, 0x53, 0xa1, 0x5a, 0x25,
- 0x3b, 0xa2, 0xc5, 0x78, 0x7c, 0x2b, 0xee, 0x4e, 0x07, 0x8d, 0xa1, 0xd9,
- 0x26, 0x87, 0x74, 0x51, 0xbf, 0xf2, 0x53, 0x5b, 0x97, 0x5a, 0xca, 0x39,
- 0x15, 0x95, 0xf2, 0x48, 0x7a, 0x0d, 0xb7, 0xdf, 0xd4, 0xc6, 0x5c, 0xc1,
- 0x7d, 0x5c, 0x11, 0x5a, 0xfe, 0xbf, 0x32, 0x24, 0x93, 0xce, 0x7e, 0x12,
- 0x90, 0xeb, 0x62, 0x15, 0x47, 0xe6, 0x3f, 0xe9, 0x57, 0xf3, 0xd4, 0xbd,
- 0x2a, 0x0b, 0x51, 0x2b, 0x5b, 0x7e, 0x3e, 0x89, 0x8c, 0xe3, 0xae, 0xaf,
- 0x5b, 0xba, 0xb3, 0x07, 0x5e, 0x2e, 0xd5, 0x58, 0x5f, 0xf3, 0xbf, 0x42,
- 0x22, 0xfe, 0xd7, 0x93, 0xd3, 0x15, 0xcb, 0x19, 0x6a, 0x71, 0xf7, 0x40,
- 0x7d, 0x85, 0x71, 0xbc, 0x7d, 0xf7, 0xe9, 0x23, 0x78, 0xe4, 0x63, 0xc3,
- 0xd9, 0x0b, 0x0a, 0x50, 0x34, 0xf3, 0xcc, 0xc9, 0x39, 0x88, 0x78, 0xe9,
- 0xe4, 0x1c, 0x74, 0x8d, 0x2a, 0x7f, 0xf0, 0x29, 0x93, 0x57, 0x6f, 0xff,
- 0x15, 0x1a, 0x0a, 0x75, 0xc5, 0xe8, 0x69, 0x7e, 0x67, 0xdf, 0x96, 0xbb,
- 0x38, 0x6c, 0xc3, 0xae, 0xee, 0x08, 0x99, 0x97, 0xc5, 0xcd, 0x2c, 0x0f,
- 0x99, 0x74, 0xb4, 0x4f, 0xb8, 0x8c, 0xd4, 0x21, 0x7a, 0x0c, 0x5c, 0xc2,
- 0xf7, 0x1f, 0xdf, 0x2b, 0xf8, 0x87, 0x0c, 0x4d, 0x8f, 0xf7, 0x0f, 0x15,
- 0x6c, 0x25, 0x9d, 0xc5, 0x7a, 0x40, 0x5c, 0x5c, 0xb9, 0x8e, 0xaf, 0x0b,
- 0x2f, 0x55, 0xad, 0x9b, 0x19, 0xcf, 0x89, 0x75, 0x37, 0x47, 0x2c, 0xad,
- 0xbe, 0xd2, 0x4b, 0x62, 0xe8, 0x5d, 0xfe, 0xe3, 0x43, 0x06, 0x73, 0xb2,
- 0x69, 0xce, 0x43, 0xa3, 0x4b, 0xa8, 0xca, 0xcf, 0x65, 0x96, 0x07, 0xbb,
- 0xa8, 0x4d, 0x47, 0x14, 0xa5, 0xcb, 0x54, 0x7a, 0xbc, 0xd8, 0x88, 0xba,
- 0x99, 0x27, 0xcc, 0x9e, 0xf2, 0x0a, 0x3e, 0x05, 0x3c, 0x34, 0x9c, 0x77,
- 0x11, 0x59, 0xd9, 0x3b, 0xc8, 0x4b, 0x1f, 0x7d, 0x18, 0x74, 0xb3, 0xc9,
- 0x54, 0x11, 0x1a, 0x6c, 0x1d, 0x5d, 0xd9, 0x89, 0x7c, 0x31, 0xe1, 0xfe,
- 0xda, 0x8a, 0x4c, 0xa5, 0x73, 0x4e, 0x33, 0xbe, 0xf6, 0x94, 0x53, 0xd7,
- 0x02, 0x07, 0xc8, 0xc4, 0x9d, 0xbe, 0x01, 0x32, 0x51, 0x4b, 0x36, 0x40,
- 0x16, 0xda, 0xdf, 0xfe, 0x94, 0xdd, 0xbc, 0x6d, 0x8b, 0xe0, 0x03, 0x1e,
- 0x13, 0x1b, 0x8a, 0xa4, 0x10, 0x91, 0xcc, 0x72, 0x4b, 0x6d, 0x6f, 0x3a,
- 0x2e, 0xc1, 0xed, 0xf1, 0xd2, 0xc6, 0x77, 0xa1, 0x9b, 0x91, 0x23, 0xd9,
- 0x62, 0x97, 0xe9, 0xca, 0x5a, 0xea, 0x26, 0xf8, 0x8d, 0xa5, 0xf5, 0x91,
- 0x8c, 0xdc, 0xa8, 0x76, 0x6b, 0x11, 0x07, 0x3a, 0x01, 0xf2, 0x72, 0xb5,
- 0xcc, 0x6d, 0xab, 0x8f, 0xc7, 0xc8, 0x64, 0x4e, 0xe5, 0x8e, 0x3e, 0xd1,
- 0x2e, 0xa3, 0x3f, 0xaa, 0x30, 0xc2, 0x11, 0xc9, 0xac, 0x24, 0xd4, 0x89,
- 0xf8, 0x72, 0x3d, 0xc2, 0x93, 0xff, 0x2f, 0xcd, 0x6c, 0x6e, 0xf6, 0x52,
- 0x34, 0x9b, 0x59, 0xcb, 0xd7, 0xda, 0x92, 0x3f, 0x39, 0xd2, 0x2f, 0x16,
- 0x11, 0x3c, 0xcb, 0xb2, 0x4f, 0x1b, 0xf9, 0x59, 0xae, 0x66, 0x9d, 0x9a,
- 0x65, 0x86, 0xd7, 0xee, 0x49, 0xc2, 0xa5, 0x4e, 0x8d, 0x0b, 0x51, 0x05,
- 0x7b, 0xc0, 0xe1, 0x41, 0xf4, 0x8e, 0x76, 0x31, 0x56, 0x6d, 0x75, 0x45,
- 0xb8, 0x4c, 0xbf, 0xef, 0x8a, 0x2b, 0x96, 0x5a, 0x52, 0x7e, 0x14, 0xed,
- 0xcc, 0x62, 0x85, 0xc4, 0x50, 0x2e, 0x16, 0x0b, 0xbc, 0x15, 0xf5, 0xb6,
- 0xa9, 0x32, 0x21, 0x9a, 0xd0, 0xd0, 0xb5, 0xbf, 0xf6, 0x7e, 0xa2, 0xbe,
- 0x82, 0x5c, 0xe1, 0x5d, 0x4c, 0xbf, 0xc7, 0xed, 0xaa, 0xda, 0xe7, 0x6c,
- 0x8e, 0x3b, 0xc2, 0x25, 0x84, 0xdb, 0xbf, 0x31, 0x78, 0xf3, 0x8b, 0xdc,
- 0x87, 0x0a, 0xb7, 0xcb, 0xd6, 0x1e, 0x9f, 0x9f, 0x14, 0x31, 0x9d, 0xd0,
- 0x1d, 0x20, 0xfe, 0x9c, 0xea, 0x19, 0xc4, 0x1f, 0x6c, 0x9d, 0x41, 0x26,
- 0x32, 0xc7, 0x03, 0xc4, 0xff, 0x96, 0xc3, 0x19, 0xc4, 0x1f, 0x1b, 0x9e,
- 0x41, 0xee, 0x59, 0xc8, 0xca, 0x7f, 0x10, 0x73, 0x06, 0xe1, 0x47, 0xb4,
- 0x5a, 0xf3, 0x10, 0x7f, 0xfc, 0x70, 0x06, 0x51, 0x3c, 0xe4, 0x96, 0x87,
- 0xf0, 0xa2, 0x23, 0xde, 0xea, 0x75, 0x21, 0x31, 0x2f, 0x97, 0x18, 0x98,
- 0x81, 0x98, 0xd7, 0xa9, 0x98, 0xd7, 0xa9, 0x98, 0x17, 0x6f, 0xcc, 0x8b,
- 0x97, 0xd8, 0x29, 0x9c, 0x41, 0xf8, 0x19, 0x20, 0x5e, 0x12, 0x3a, 0x83,
- 0xf0, 0xfa, 0x4d, 0xbc, 0xc5, 0x7f, 0x06, 0x29, 0xa3, 0x95, 0xbf, 0x56,
- 0x61, 0x84, 0x8a, 0xfd, 0x25, 0x38, 0x63, 0x94, 0x3f, 0xfb, 0x34, 0x42,
- 0x29, 0x60, 0x32, 0x0c, 0x0a, 0x90, 0x81, 0xbd, 0x0d, 0x84, 0xa0, 0x88,
- 0xf7, 0xd5, 0x46, 0xa8, 0x2d, 0x6f, 0x83, 0x16, 0x05, 0x8d, 0x31, 0xe3,
- 0x0d, 0x24, 0xb6, 0xb7, 0xfd, 0x21, 0x14, 0xef, 0x61, 0x0c, 0xaa, 0x80,
- 0x50, 0x0d, 0xa0, 0x9f, 0x06, 0x05, 0xb5, 0xd5, 0x02, 0xe6, 0x40, 0x16,
- 0x6f, 0x8d, 0x51, 0x50, 0x8f, 0x3b, 0x68, 0x86, 0x76, 0x80, 0x81, 0x95,
- 0xd1, 0x3d, 0x24, 0xfb, 0x7b, 0xc0, 0xcc, 0x0c, 0x0a, 0xb1, 0x21, 0xa4,
- 0xa5, 0x3c, 0x12, 0x80, 0x1b, 0xb2, 0x30, 0x44, 0xf6, 0x06, 0x86, 0x88,
- 0xc2, 0xc0, 0x10, 0x9d, 0x36, 0x30, 0x7f, 0xd6, 0x61, 0x0c, 0x5b, 0x21,
- 0xf6, 0x6d, 0x60, 0x88, 0x2a, 0x1a, 0x18, 0x62, 0xe1, 0x06, 0xe6, 0xbf,
- 0x14, 0xf8, 0x08, 0x86, 0x8d, 0x14, 0x59, 0xbc, 0x2c, 0x0c, 0xd1, 0x5a,
- 0x5b, 0xad, 0x8b, 0xc1, 0x30, 0xf1, 0xc6, 0x18, 0x6f, 0x09, 0xd6, 0xa9,
- 0x04, 0x16, 0x4f, 0x0b, 0xc3, 0xf4, 0x4d, 0x02, 0xab, 0xb5, 0x81, 0xad,
- 0xf9, 0x08, 0xc3, 0xc2, 0x52, 0x4c, 0x43, 0x52, 0x4c, 0xc9, 0x53, 0x8c,
- 0xb7, 0x0d, 0xe2, 0xaf, 0xf2, 0xe8, 0x16, 0x33, 0xe7, 0x2d, 0x36, 0x04,
- 0x14, 0x06, 0xf9, 0x99, 0x28, 0x5b, 0x61, 0x30, 0x6c, 0xea, 0x33, 0x4c,
- 0xdf, 0x72, 0x4c, 0xbc, 0xf9, 0x1d, 0x06, 0xc3, 0x3a, 0x2d, 0x10, 0x27,
- 0x6e, 0x60, 0x98, 0x53, 0x2d, 0x30, 0x25, 0x2f, 0x30, 0x7d, 0x2b, 0x90,
- 0xa0, 0x23, 0x8f, 0xc0, 0x75, 0xa1, 0xc2, 0x46, 0x5a, 0x21, 0x2b, 0xa4,
- 0x81, 0x61, 0xfa, 0x56, 0x61, 0xb6, 0x50, 0x61, 0x4e, 0xb5, 0xc2, 0xe6,
- 0xf4, 0x2b, 0x36, 0x52, 0x0d, 0xc2, 0x30, 0x5b, 0xd0, 0xd8, 0xd4, 0x6b,
- 0x24, 0x28, 0x35, 0xb0, 0x1d, 0x04, 0x6b, 0x30, 0x37, 0xd8, 0x60, 0x2b,
- 0x60, 0x83, 0xcd, 0x42, 0x83, 0xf9, 0x10, 0xa2, 0x78, 0xe0, 0x11, 0x0c,
- 0x9b, 0xd3, 0x1d, 0xe6, 0x6a, 0x76, 0xc0, 0x48, 0x01, 0xd1, 0xf2, 0xab,
- 0x32, 0x91, 0xad, 0x39, 0x83, 0xf0, 0x93, 0x93, 0xf0, 0xe6, 0x91, 0xf0,
- 0xd6, 0x9d, 0xf0, 0xec, 0x4a, 0x9e, 0x5d, 0xe2, 0x61, 0x4a, 0x17, 0xb2,
- 0xe6, 0xfd, 0xd6, 0x9a, 0x67, 0x97, 0xa8, 0x30, 0x74, 0x21, 0x29, 0xaf,
- 0x3b, 0x29, 0x1f, 0x23, 0xa6, 0xfc, 0xa0, 0x53, 0xde, 0xaf, 0xa7, 0xbc,
- 0x61, 0xa7, 0xbc, 0x51, 0xa7, 0xbc, 0x5c, 0x52, 0xde, 0xdd, 0xa7, 0x80,
- 0xe8, 0x78, 0x7b, 0xda, 0xf0, 0x46, 0xb2, 0xe1, 0x3b, 0xda, 0xf0, 0xcb,
- 0xf5, 0x86, 0x8f, 0x47, 0x15, 0x3f, 0x47, 0x8a, 0x17, 0x9d, 0xe2, 0x43,
- 0x55, 0xe5, 0x2f, 0x16, 0x3b, 0x83, 0xf0, 0x16, 0xa0, 0xf8, 0x41, 0xab,
- 0x26, 0x12, 0x3c, 0x3b, 0xb7, 0xfc, 0xb8, 0x6f, 0xf9, 0x56, 0xb6, 0xbc,
- 0x6e, 0x6e, 0x79, 0x9b, 0xdd, 0xf2, 0xfe, 0x23, 0xe3, 0x0d, 0x32, 0xe3,
- 0x3b, 0xca, 0x78, 0x77, 0x97, 0xf1, 0x02, 0xce, 0x78, 0xad, 0xca, 0x78,
- 0x1f, 0x9f, 0xf3, 0xfe, 0x23, 0xe7, 0xe7, 0x28, 0xe7, 0x27, 0x20, 0xe7,
- 0x07, 0x9d, 0xf3, 0xfe, 0x23, 0xe7, 0x6d, 0x36, 0xe7, 0xd5, 0x37, 0xe7,
- 0x45, 0x97, 0x03, 0xa2, 0xe3, 0x03, 0x80, 0x82, 0x17, 0x1d, 0x71, 0x71,
- 0xe7, 0x0c, 0xc2, 0x5b, 0x40, 0xc1, 0x3b, 0xaa, 0x82, 0x1f, 0x74, 0xc5,
- 0xf3, 0x52, 0xf1, 0x13, 0x50, 0xf1, 0x13, 0x50, 0xf1, 0xea, 0x5d, 0xf3,
- 0x83, 0xae, 0xf9, 0x8e, 0x88, 0xfa, 0xce, 0x33, 0x08, 0x3f, 0x8d, 0x9a,
- 0x8f, 0xba, 0x34, 0x3f, 0xd3, 0x9a, 0xdf, 0x2b, 0x68, 0xde, 0x79, 0x68,
- 0xde, 0x8e, 0x34, 0xbf, 0x52, 0x68, 0x7e, 0x1a, 0x35, 0x3f, 0x01, 0x9a,
- 0x9f, 0xc6, 0x86, 0xf7, 0x2f, 0x0d, 0xef, 0x3c, 0x1a, 0x7e, 0xd0, 0x0d,
- 0xaf, 0xbb, 0x0d, 0x2f, 0x97, 0x86, 0x1f, 0x74, 0xc3, 0x0f, 0xba, 0xe5,
- 0x15, 0x73, 0xc7, 0x0f, 0x7a, 0xc7, 0xeb, 0xee, 0x7e, 0x99, 0xda, 0xa2,
- 0x7f, 0x97, 0xe5, 0x26, 0xf8, 0xcb, 0x2c, 0xf7, 0x1d, 0xd1, 0xe5, 0x9f,
- 0xd4, 0x40, 0x0b, 0x6d, 0xee, 0x8b, 0xb9, 0x0f, 0x01, 0xe8, 0x8e, 0x76,
- 0x29, 0x4e, 0xdf, 0x15, 0x99, 0xbd, 0x3f, 0x57, 0x84, 0xca, 0xb3, 0x3c,
- 0xd1, 0x2d, 0xc1, 0xe5, 0x4f, 0x6d, 0xad, 0x42, 0x3f, 0x09, 0x7e, 0xbc,
- 0x28, 0xa2, 0x96, 0xfb, 0x1c, 0xb8, 0xfd, 0x48, 0xdd, 0x2a, 0xb4, 0x0a,
- 0xfb, 0x48, 0x74, 0x21, 0x7f, 0x70, 0x5d, 0xc2, 0x87, 0x52, 0x24, 0x37,
- 0x1f, 0xda, 0xa2, 0x98, 0xfb, 0x09, 0xa0, 0xa3, 0x96, 0xd6, 0xcb, 0xd5,
- 0x28, 0xbd, 0xab, 0xaa, 0xec, 0xa0, 0x0b, 0x55, 0xa4, 0xb2, 0xb8, 0x79,
- 0xfa, 0xc3, 0x0f, 0x4f, 0x67, 0x28, 0x82, 0x25, 0xbb, 0x5c, 0x59, 0x7f,
- 0xc5, 0x9f, 0xa0, 0x2c, 0xdb, 0x57, 0xc1, 0x3e, 0xaa, 0xfb, 0x12, 0xad,
- 0xbd, 0xdc, 0x5e, 0x5e, 0xa1, 0xde, 0x1e, 0xbe, 0xd2, 0x34, 0xef, 0xe2,
- 0xca, 0x70, 0x59, 0xe8, 0xdb, 0xfe, 0xde, 0xc9, 0xb7, 0xc7, 0x9b, 0x15,
- 0xbe, 0x25, 0xc2, 0xbd, 0xe7, 0x34, 0x82, 0x5f, 0x3a, 0x46, 0x5f, 0x77,
- 0xd8, 0x4d, 0xa3, 0x57, 0xb2, 0x0c, 0xfe, 0xe0, 0x6a, 0x6a, 0x69, 0x16,
- 0x2b, 0x7b, 0xfa, 0x45, 0x04, 0x7f, 0x9f, 0xee, 0xf4, 0x96, 0xd0, 0x55,
- 0x3e, 0x4c, 0x07, 0x16, 0x91, 0xb5, 0xf1, 0xd6, 0xfe, 0x79, 0x15, 0xaa,
- 0xed, 0x89, 0x21, 0xb2, 0x7f, 0xd2, 0xe5, 0x8a, 0xf2, 0x7e, 0x2e, 0x9b,
- 0x79, 0xcf, 0x9a, 0x6c, 0x3a, 0xc2, 0x45, 0xaf, 0x47, 0xfe, 0x63, 0x27,
- 0xb4, 0x9a, 0x53, 0x48, 0xba, 0xed, 0x08, 0x97, 0x5a, 0x99, 0x9f, 0xb5,
- 0xba, 0xa9, 0x8d, 0x59, 0xb4, 0x33, 0xc4, 0xfa, 0x5d, 0x24, 0x4e, 0xd4,
- 0x13, 0xf5, 0xfa, 0x4f, 0x23, 0xe1, 0xa2, 0x16, 0x89, 0x37, 0xee, 0x66,
- 0x7c, 0x1d, 0x72, 0xb8, 0x2c, 0xd1, 0xd1, 0x52, 0x87, 0x52, 0xe7, 0x20,
- 0xe2, 0xd4, 0xf5, 0x1c, 0x44, 0x7d, 0xba, 0xf4, 0x0c, 0x44, 0x97, 0x64,
- 0x68, 0x59, 0x8b, 0x07, 0xdc, 0xf4, 0x67, 0x43, 0x8f, 0x20, 0xe2, 0x14,
- 0x20, 0xd7, 0x77, 0x79, 0xf6, 0xd0, 0xe1, 0xc4, 0xcb, 0xec, 0x27, 0x9e,
- 0xae, 0xf0, 0x5e, 0x11, 0xcd, 0x2e, 0x34, 0x95, 0x5f, 0x83, 0x03, 0xc7,
- 0xa3, 0x2c, 0x0c, 0xe1, 0xb5, 0xde, 0x04, 0x45, 0xf8, 0x7c, 0x21, 0xeb,
- 0x46, 0xad, 0x95, 0x4c, 0x9e, 0x5c, 0xf4, 0x8d, 0xcf, 0xf8, 0xd4, 0xcc,
- 0xf1, 0x73, 0x1d, 0x8b, 0x39, 0xd7, 0x2f, 0xc2, 0x6c, 0xb0, 0xfe, 0x38,
- 0x8f, 0xeb, 0x83, 0xd8, 0x94, 0xf4, 0xeb, 0xce, 0xd3, 0xbf, 0x9a, 0x21,
- 0x42, 0xad, 0x18, 0x1c, 0x03, 0x68, 0xc1, 0x86, 0x5a, 0x06, 0xb0, 0x02,
- 0x39, 0x5a, 0x71, 0x1c, 0xc5, 0x22, 0x19, 0x5e, 0xa7, 0x37, 0x7f, 0x01,
- 0xb0, 0x0c, 0xc4, 0x3e, 0x95, 0xa2, 0x87, 0x16, 0xfb, 0xbf, 0x63, 0x14,
- 0x0c, 0xaa, 0xc0, 0xc6, 0x6b, 0x70, 0xd3, 0x80, 0xd3, 0x68, 0x79, 0x1c,
- 0x03, 0xd8, 0x82, 0x0d, 0x6d, 0x19, 0x80, 0xd4, 0x58, 0x43, 0xdd, 0xcd,
- 0xeb, 0x69, 0x40, 0x25, 0x8a, 0x32, 0x3b, 0xb6, 0xd6, 0xff, 0xfd, 0xf7,
- 0xa2, 0xb8, 0x06, 0x6a, 0x0d, 0xea, 0xf0, 0x9a, 0xd3, 0x61, 0x05, 0xce,
- 0xa9, 0xe2, 0xe6, 0x54, 0x35, 0x60, 0x43, 0x0d, 0x03, 0xd8, 0x82, 0x43,
- 0xdb, 0x72, 0x43, 0xcb, 0xef, 0xb0, 0x86, 0x0c, 0x6e, 0x1a, 0x50, 0x94,
- 0x58, 0x43, 0x06, 0xc7, 0x00, 0xee, 0xc1, 0x86, 0xee, 0x19, 0x40, 0x69,
- 0xdf, 0x54, 0xe2, 0xcc, 0xd5, 0x82, 0xfa, 0xee, 0x38, 0xe4, 0xd7, 0x18,
- 0xe3, 0xeb, 0x77, 0xc0, 0x5d, 0x08, 0xd0, 0xa0, 0xfa, 0x06, 0xe0, 0x38,
- 0xc0, 0xf1, 0x14, 0xb0, 0x7b, 0x4f, 0x0c, 0x69, 0x10, 0x00, 0xb5, 0xa0,
- 0x3f, 0x6c, 0x39, 0x7f, 0xd8, 0x1d, 0x51, 0x1c, 0x11, 0x54, 0xfd, 0xf5,
- 0xa8, 0x27, 0x0a, 0xd6, 0xdd, 0xd9, 0x96, 0x75, 0x2c, 0x9a, 0x92, 0x09,
- 0x96, 0xcb, 0xf5, 0x5a, 0xd6, 0xab, 0xf2, 0x8e, 0x0e, 0x10, 0x74, 0x94,
- 0xab, 0xba, 0xec, 0x5e, 0x7b, 0xbd, 0x42, 0xbc, 0xe3, 0xe7, 0x17, 0x8b,
- 0x82, 0xfe, 0xf9, 0xe1, 0x4d, 0xf4, 0xee, 0xc3, 0x2b, 0x51, 0xa8, 0x7b,
- 0x35, 0xeb, 0x1e, 0x60, 0x5b, 0x67, 0x8b, 0x3d, 0x1b, 0xf4, 0x59, 0x35,
- 0xf3, 0xde, 0xfd, 0xb7, 0x74, 0x57, 0x78, 0x5e, 0x1b, 0x8f, 0xe2, 0xdf,
- 0x2a, 0x6d, 0xda, 0xb9, 0xf9, 0x5c, 0x06, 0x3f, 0xc1, 0xd3, 0xdd, 0x01,
- 0xeb, 0xa8, 0x9f, 0xec, 0x4b, 0xe6, 0x35, 0x1e, 0x17, 0xb7, 0xec, 0xcb,
- 0xd1, 0xcf, 0xaa, 0xb2, 0x0e, 0x7e, 0x1b, 0x32, 0x8f, 0x84, 0x25, 0xbb,
- 0x7c, 0x97, 0x82, 0x3d, 0x22, 0xf0, 0x59, 0xae, 0xa2, 0xf0, 0xcf, 0x5a,
- 0x74, 0xd7, 0xd9, 0xf6, 0x3d, 0xe9, 0x85, 0xea, 0x82, 0x3d, 0xf5, 0xf2,
- 0x4c, 0x87, 0x5e, 0xbc, 0x14, 0x7a, 0xfa, 0x43, 0x63, 0x93, 0xbf, 0x9b,
- 0x91, 0x4d, 0xfd, 0xae, 0x8a, 0x66, 0xf2, 0xf7, 0x7c, 0xaf, 0x27, 0x7f,
- 0x37, 0x1e, 0x79, 0xb2, 0xf9, 0xfe, 0xd5, 0x9f, 0x29, 0x88, 0xfd, 0xad,
- 0x96, 0xc6, 0x83, 0xca, 0x22, 0x9e, 0xde, 0xb6, 0x1b, 0xe4, 0x56, 0x25,
- 0xf4, 0xdb, 0x83, 0xca, 0x18, 0xc6, 0xb4, 0x30, 0x4e, 0xc2, 0x9a, 0x7a,
- 0xdc, 0xf7, 0xeb, 0xea, 0x50, 0x27, 0xcc, 0x7a, 0xf6, 0xa4, 0x96, 0xba,
- 0xcd, 0x1a, 0x9a, 0x97, 0xd3, 0x8a, 0xc6, 0x22, 0x1f, 0x2e, 0xaf, 0xb3,
- 0x50, 0x3b, 0x59, 0x1e, 0xe8, 0x12, 0xae, 0xf8, 0x85, 0x2c, 0x9a, 0x7a,
- 0xc6, 0x75, 0xdc, 0xee, 0x6c, 0x27, 0xee, 0x89, 0xa9, 0x12, 0xc9, 0xbc,
- 0xac, 0xd7, 0xf6, 0xab, 0x50, 0x0f, 0xa8, 0x25, 0x46, 0xf4, 0xd3, 0x4e,
- 0xd6, 0x87, 0x38, 0x0b, 0xff, 0xf6, 0x5f, 0x77, 0x82, 0x74, 0x22, 0xbe,
- 0xc2, 0x0c, 0x84, 0x7c, 0x6e, 0xe0, 0x55, 0x97, 0xca, 0xbe, 0xf9, 0x4d,
- 0x25, 0xc1, 0xdf, 0xdf, 0xda, 0x59, 0x1a, 0xa7, 0xee, 0x75, 0x99, 0xe3,
- 0x77, 0x99, 0xad, 0x43, 0xbf, 0x1d, 0x5a, 0x36, 0x5a, 0x75, 0x2b, 0x9c,
- 0x21, 0xbd, 0xc2, 0xc7, 0x2b, 0x21, 0x3e, 0x57, 0x99, 0xdc, 0x6e, 0x43,
- 0x25, 0xda, 0x13, 0x2d, 0x26, 0xcb, 0xbf, 0x1f, 0xee, 0x42, 0x39, 0xbc,
- 0x35, 0x24, 0xd1, 0xd3, 0xa7, 0x3f, 0xfc, 0xb0, 0x94, 0x55, 0xfd, 0x43,
- 0x34, 0x62, 0x3f, 0xeb, 0xb9, 0x86, 0x6d, 0x4f, 0xb9, 0xd4, 0x77, 0xea,
- 0xdb, 0xb2, 0xfb, 0x50, 0x8c, 0xbd, 0x9a, 0x15, 0x38, 0xe9, 0xad, 0x8e,
- 0x45, 0xe4, 0x90, 0x2f, 0xc1, 0xed, 0xb3, 0x5a, 0x89, 0x22, 0x38, 0x21,
- 0x28, 0x7a, 0xaa, 0x28, 0x53, 0x2b, 0x59, 0x93, 0xbb, 0x98, 0xfe, 0x6b,
- 0x24, 0x3d, 0x72, 0xc9, 0x0c, 0xd2, 0x5b, 0x91, 0xcf, 0xfa, 0x7a, 0x4e,
- 0x6e, 0xe9, 0xe8, 0x80, 0xc5, 0xfe, 0xfa, 0xb7, 0xbf, 0x38, 0xa8, 0xa5,
- 0xc6, 0xf3, 0x45, 0x34, 0x72, 0xd6, 0x03, 0xd7, 0x87, 0x8e, 0x90, 0xd9,
- 0xd3, 0x76, 0x90, 0x85, 0xd2, 0xee, 0x9f, 0xf6, 0xc6, 0xff, 0x66, 0x73,
- 0x3e, 0x67, 0xd7, 0xf4, 0x94, 0xcb, 0x2e, 0x2f, 0x37, 0x99, 0x68, 0x76,
- 0xc1, 0x4f, 0xe0, 0xea, 0xdc, 0xee, 0xc6, 0xfb, 0x45, 0x66, 0xa1, 0x0f,
- 0x93, 0xbd, 0xaf, 0x55, 0x2c, 0xfb, 0xe2, 0x96, 0x19, 0xb2, 0xad, 0x2c,
- 0x75, 0xdd, 0x51, 0x47, 0xcb, 0x7d, 0x2e, 0xf0, 0x83, 0xd8, 0xb6, 0x4d,
- 0xf8, 0xfb, 0xda, 0xa7, 0x27, 0x7b, 0xeb, 0x9e, 0xfe, 0x3a, 0xc9, 0x36,
- 0xf0, 0xc5, 0xcf, 0x2e, 0xc4, 0x99, 0x21, 0x61, 0x27, 0x36, 0xa2, 0x0c,
- 0xf1, 0x08, 0x21, 0x1e, 0x14, 0x71, 0x11, 0xc4, 0xc7, 0x1b, 0xce, 0xba,
- 0xa1, 0xee, 0x5d, 0x8f, 0x51, 0xf4, 0x2b, 0x5e, 0x2e, 0xca, 0x5f, 0x0e,
- 0xeb, 0xf2, 0xc4, 0x8e, 0x8b, 0xbe, 0x87, 0x30, 0xee, 0x8c, 0xfe, 0x82,
- 0xca, 0xd0, 0x99, 0x3f, 0x93, 0xeb, 0x22, 0xe8, 0xf5, 0xc8, 0xed, 0xc9,
- 0x5f, 0xd8, 0xe9, 0xb6, 0xe3, 0xdf, 0x56, 0x38, 0x08, 0xe2, 0x29, 0x94,
- 0x51, 0x4f, 0xc4, 0x0d, 0x72, 0xb7, 0x1d, 0xfa, 0xb9, 0xbd, 0x01, 0xc1,
- 0x4e, 0x28, 0xf1, 0x5a, 0xca, 0x98, 0x17, 0xba, 0x56, 0x69, 0x68, 0x87,
- 0x9d, 0x6e, 0xe2, 0x45, 0x95, 0x71, 0x4f, 0xfe, 0xe2, 0xe6, 0x31, 0x0a,
- 0xd2, 0x0a, 0xe2, 0x9e, 0xbb, 0xcb, 0x13, 0xab, 0x15, 0xf4, 0xe3, 0x20,
- 0xe3, 0xce, 0x88, 0x8f, 0x59, 0x3a, 0x9d, 0xb1, 0x88, 0x98, 0xbe, 0x4e,
- 0xef, 0xa2, 0x20, 0xf5, 0x21, 0x6e, 0x53, 0xbb, 0x28, 0xd6, 0x6b, 0x10,
- 0x2f, 0xc6, 0xb8, 0x08, 0xde, 0x63, 0x00, 0x76, 0xc5, 0xeb, 0x20, 0x3f,
- 0x18, 0x56, 0xff, 0xe8, 0x07, 0x5c, 0x5c, 0x10, 0xfd, 0x4d, 0xef, 0x01,
- 0xc1, 0x7a, 0x2d, 0xe2, 0xc9, 0x99, 0xd1, 0xfc, 0x10, 0xef, 0x21, 0x8c,
- 0x18, 0x66, 0x35, 0x38, 0xa6, 0xdf, 0x4c, 0x70, 0x51, 0xfe, 0x1b, 0x31,
- 0xe3, 0x76, 0x78, 0x05, 0x65, 0x95, 0x73, 0xe2, 0x09, 0xd0, 0x01, 0xc1,
- 0xfa, 0x01, 0xe2, 0x4a, 0xa9, 0x8b, 0xe0, 0x27, 0x81, 0x7e, 0xfd, 0xc1,
- 0x6d, 0x87, 0x37, 0x36, 0xfa, 0x79, 0x08, 0x07, 0x45, 0xdc, 0x4d, 0x1d,
- 0xb7, 0xc3, 0xea, 0x39, 0x51, 0x6f, 0x34, 0x6e, 0x87, 0xb5, 0x28, 0xe2,
- 0x96, 0xeb, 0xa8, 0x1d, 0xe2, 0x05, 0x0a, 0xb7, 0x1d, 0x56, 0xce, 0x13,
- 0xdf, 0x2e, 0x3b, 0x22, 0x88, 0x8b, 0xb0, 0x2e, 0x82, 0x75, 0x33, 0xc4,
- 0x35, 0x58, 0x17, 0xc1, 0x3a, 0x22, 0xe2, 0x12, 0xec, 0x48, 0x26, 0xc4,
- 0x73, 0x1b, 0x63, 0x14, 0x2b, 0x5f, 0xe2, 0x3e, 0xad, 0x8b, 0x60, 0x65,
- 0x4b, 0xdc, 0xa6, 0x75, 0x11, 0x90, 0x7f, 0x20, 0x1e, 0xfd, 0x70, 0xdb,
- 0x81, 0x96, 0x26, 0xe2, 0x55, 0x10, 0x07, 0x45, 0x5c, 0xcb, 0x75, 0x11,
- 0x2c, 0xc7, 0xc4, 0xa5, 0x5c, 0x17, 0xc1, 0xfb, 0x3b, 0xf2, 0x81, 0x2d,
- 0x37, 0xba, 0xf4, 0x57, 0xcb, 0xb9, 0x08, 0xc0, 0xac, 0xa9, 0x37, 0xba,
- 0xdc, 0x66, 0x00, 0x6f, 0x45, 0x3d, 0xe2, 0xe5, 0x36, 0xc3, 0xba, 0x33,
- 0xe2, 0xf6, 0xef, 0x59, 0x44, 0xcd, 0x21, 0x88, 0x5b, 0xbd, 0x23, 0x55,
- 0x20, 0x5e, 0x7e, 0x71, 0xdb, 0x41, 0xd6, 0xb7, 0x89, 0x64, 0xf7, 0x03,
- 0x88, 0x78, 0x92, 0x2c, 0x38, 0xde, 0x21, 0xae, 0x11, 0xbb, 0x08, 0xc0,
- 0x45, 0x50, 0x6f, 0x9f, 0x8d, 0xd9, 0x61, 0x83, 0x46, 0xe2, 0xca, 0xb2,
- 0x83, 0x20, 0x6e, 0x2c, 0x8f, 0x7a, 0x22, 0x1e, 0xba, 0x19, 0xa3, 0xd8,
- 0x35, 0x8c, 0xb8, 0xfc, 0xec, 0x22, 0xf8, 0xf0, 0x89, 0x7c, 0xf4, 0xcd,
- 0x6d, 0x86, 0xd5, 0x41, 0xe2, 0x7a, 0xb4, 0x8b, 0x80, 0x02, 0x1a, 0xe2,
- 0xd5, 0x9e, 0x73, 0x86, 0x89, 0xf7, 0xe7, 0x1c, 0x10, 0x71, 0xcf, 0xda,
- 0x45, 0xb0, 0x2a, 0x4a, 0xdc, 0xb2, 0x76, 0x11, 0xac, 0x74, 0x89, 0x3b,
- 0xd6, 0x2e, 0x82, 0x75, 0x22, 0xc4, 0x0d, 0xeb, 0x91, 0xe0, 0x88, 0x77,
- 0x8c, 0xdc, 0x76, 0xd8, 0x29, 0x22, 0x6e, 0x61, 0xbb, 0x08, 0x68, 0x63,
- 0x45, 0x3c, 0x96, 0x34, 0x46, 0x41, 0x53, 0x0d, 0x85, 0x7b, 0xc4, 0x7b,
- 0x4a, 0x0e, 0x8a, 0xb8, 0x1a, 0x3e, 0x6e, 0x07, 0x3a, 0x4d, 0x21, 0xde,
- 0x5b, 0x1a, 0xa3, 0x58, 0xe3, 0x24, 0xaa, 0xd0, 0x5d, 0x04, 0xb4, 0x69,
- 0x26, 0x5e, 0x6c, 0x72, 0xdb, 0x61, 0x1d, 0x20, 0x71, 0x5d, 0xfd, 0x7c,
- 0x32, 0x88, 0xb7, 0x1a, 0x47, 0xec, 0xf0, 0x87, 0x5f, 0x31, 0xfd, 0x30,
- 0xd4, 0x18, 0x05, 0x4d, 0x1b, 0xf1, 0x2c, 0xd4, 0x18, 0xc5, 0x5a, 0x2b,
- 0x71, 0x21, 0xdf, 0x45, 0x40, 0x1b, 0x45, 0xe2, 0x61, 0x29, 0xb7, 0x1d,
- 0xd6, 0xa6, 0x89, 0x3b, 0xfb, 0xe3, 0x9e, 0xa0, 0x28, 0x90, 0x78, 0x9a,
- 0xca, 0x41, 0x11, 0xd7, 0xff, 0x5d, 0x04, 0xcb, 0x31, 0x71, 0xf9, 0xdf,
- 0x45, 0x40, 0xde, 0x83, 0x78, 0x21, 0x6b, 0x8c, 0x62, 0xd7, 0x50, 0xe2,
- 0x19, 0x01, 0x17, 0x01, 0x69, 0x17, 0xf1, 0xc6, 0x96, 0xdb, 0x0e, 0xab,
- 0x7f, 0xc4, 0x4b, 0x03, 0x2e, 0x02, 0x58, 0xa9, 0xc9, 0x87, 0xbc, 0xdc,
- 0x76, 0x58, 0x0d, 0x25, 0xde, 0x2b, 0x70, 0x11, 0xac, 0x36, 0x10, 0x4f,
- 0x11, 0x8c, 0xb9, 0x65, 0xd7, 0x13, 0xe2, 0xbd, 0x02, 0x17, 0x81, 0x04,
- 0x78, 0xc4, 0xf3, 0xb0, 0x23, 0x76, 0x88, 0x77, 0xcb, 0xdc, 0xce, 0xd8,
- 0x49, 0x20, 0xde, 0x3d, 0x70, 0x11, 0xac, 0x78, 0x89, 0x57, 0x0f, 0xc6,
- 0xdc, 0x42, 0xae, 0x86, 0x78, 0x3d, 0xcd, 0xed, 0x0d, 0x9a, 0x2a, 0xe2,
- 0x79, 0xb5, 0x91, 0x98, 0x21, 0xff, 0x4f, 0x3c, 0xc1, 0x76, 0xde, 0x14,
- 0xf1, 0x08, 0xaf, 0x03, 0x22, 0x1e, 0x4b, 0x1f, 0x35, 0xc3, 0x4e, 0x18,
- 0xf1, 0x38, 0xc4, 0x98, 0x67, 0x24, 0x16, 0x21, 0x1e, 0xfb, 0x1d, 0x35,
- 0x45, 0xbc, 0x19, 0x77, 0xde, 0x14, 0xf1, 0x22, 0xb0, 0x03, 0x22, 0x5e,
- 0xac, 0x18, 0x35, 0x03, 0x1d, 0x1a, 0x11, 0xcf, 0xd3, 0xb9, 0x9d, 0xb1,
- 0xae, 0x7b, 0x8f, 0x1c, 0xbb, 0x13, 0x6f, 0x13, 0x8f, 0x40, 0xc8, 0xd6,
- 0x9a, 0x78, 0x99, 0xf8, 0x61, 0x50, 0x53, 0x3f, 0x13, 0xb9, 0xb5, 0xe1,
- 0x57, 0xbf, 0xcb, 0x71, 0xe4, 0x45, 0xe4, 0xd4, 0x5c, 0x84, 0x7f, 0x72,
- 0x5c, 0x84, 0x7f, 0x66, 0x06, 0x1e, 0x26, 0xf9, 0xa7, 0x73, 0x68, 0x6e,
- 0x07, 0x7e, 0xc3, 0x1f, 0x3a, 0xf0, 0x4f, 0xd7, 0xf0, 0xab, 0xdf, 0x25,
- 0xb8, 0xad, 0xfb, 0x15, 0x62, 0xa0, 0xf7, 0x1b, 0xc2, 0xf1, 0x57, 0x22,
- 0x57, 0xe6, 0xb4, 0x4e, 0xe4, 0xc9, 0x06, 0x7a, 0xbf, 0x6d, 0x0c, 0xbf,
- 0x4e, 0x4e, 0x0e, 0x91, 0x1b, 0x73, 0xfb, 0xf6, 0x2f, 0x15, 0x03, 0xfd,
- 0xe4, 0xb4, 0x11, 0xf9, 0x30, 0xb7, 0x75, 0xbf, 0xa9, 0xb9, 0x08, 0x76,
- 0x66, 0x89, 0x1c, 0xd8, 0xc0, 0xc3, 0xe4, 0xcc, 0xd2, 0xb9, 0x2f, 0xb7,
- 0x03, 0xbf, 0xb3, 0x1b, 0x3a, 0x98, 0xfc, 0x75, 0x22, 0xdf, 0x35, 0x20,
- 0xd8, 0xe9, 0x27, 0xce, 0x7d, 0x06, 0xc4, 0xa4, 0xf5, 0x12, 0xf9, 0xad,
- 0xe1, 0xd7, 0x69, 0xcb, 0x65, 0xf4, 0x7e, 0x5a, 0x77, 0xa6, 0x99, 0x9e,
- 0xd4, 0x1b, 0x3a, 0x8f, 0x35, 0x00, 0xfc, 0x51, 0xc5, 0xf0, 0xeb, 0xa4,
- 0xb7, 0x20, 0x72, 0x57, 0x8e, 0xbc, 0x89, 0xbc, 0x95, 0xc3, 0xdc, 0xa4,
- 0xc6, 0x4d, 0xe4, 0xab, 0x06, 0x84, 0x3f, 0xce, 0x73, 0xe9, 0xa7, 0x95,
- 0x6a, 0x52, 0xa1, 0x88, 0xfc, 0xd4, 0xf0, 0xeb, 0xa4, 0x4d, 0x12, 0x79,
- 0xa9, 0xe1, 0xd7, 0x69, 0xc1, 0xd2, 0xf9, 0xa8, 0x81, 0x7e, 0xda, 0x10,
- 0xe8, 0x3c, 0xd4, 0x11, 0x41, 0xe4, 0xa0, 0x5c, 0xfa, 0x49, 0x9d, 0x24,
- 0x72, 0x4f, 0x2e, 0xfd, 0xa4, 0xc6, 0x13, 0x39, 0x27, 0x87, 0x9e, 0xc8,
- 0x37, 0x0d, 0xf4, 0x93, 0xf2, 0x23, 0xf2, 0x4c, 0xc7, 0x5f, 0x89, 0x1c,
- 0xd3, 0xf0, 0xeb, 0xa4, 0x99, 0x13, 0xb9, 0xa5, 0xe1, 0xd7, 0x49, 0x27,
- 0x40, 0xe4, 0x94, 0x9c, 0x31, 0x13, 0xf9, 0x24, 0x17, 0x31, 0x29, 0x37,
- 0x22, 0x8f, 0x34, 0xfc, 0x3a, 0x29, 0x33, 0x22, 0x7f, 0x34, 0xfc, 0xca,
- 0xda, 0x29, 0x91, 0x37, 0x1a, 0xe8, 0x59, 0xd7, 0x4e, 0xe4, 0x8b, 0x8e,
- 0x08, 0x22, 0x57, 0x34, 0xfc, 0x3a, 0xc9, 0x1d, 0x91, 0x23, 0x1a, 0x7e,
- 0x9d, 0xf6, 0x2f, 0x64, 0x6e, 0x68, 0x88, 0x98, 0xfc, 0x79, 0xa1, 0xe1,
- 0x57, 0xc6, 0xcc, 0xa8, 0x7c, 0xd0, 0x40, 0xce, 0x78, 0x09, 0x2a, 0x0f,
- 0x34, 0x90, 0x4f, 0xba, 0x10, 0x22, 0xff, 0x73, 0x8a, 0x04, 0xa7, 0x7e,
- 0x25, 0xf2, 0x3e, 0xce, 0x74, 0x12, 0x39, 0x9f, 0x81, 0x9e, 0x5b, 0x17,
- 0x88, 0x5c, 0xcf, 0x03, 0x80, 0xc8, 0xf3, 0xc0, 0x6b, 0x3d, 0x91, 0xdf,
- 0x19, 0x7e, 0x65, 0x4c, 0x95, 0xca, 0xeb, 0xb8, 0xdd, 0x4f, 0x06, 0x43,
- 0x44, 0x3e, 0xe7, 0xf8, 0x2b, 0x91, 0xcb, 0x71, 0x5a, 0x27, 0xf2, 0x38,
- 0x2e, 0x62, 0xd2, 0xff, 0x13, 0xf9, 0x9b, 0xe1, 0xd7, 0xe9, 0x90, 0x81,
- 0xcc, 0xdb, 0x0c, 0xe4, 0x93, 0xba, 0x43, 0xe4, 0x6b, 0x86, 0x5f, 0xd9,
- 0x05, 0x9d, 0xc8, 0xd3, 0x3c, 0x30, 0x47, 0xe4, 0x68, 0x8e, 0x00, 0x22,
- 0x3f, 0x33, 0xfc, 0x3a, 0xa9, 0x56, 0x44, 0x5e, 0x66, 0xf8, 0x75, 0x52,
- 0x6a, 0x44, 0x3e, 0x66, 0xf8, 0x75, 0xd2, 0x90, 0x89, 0x3c, 0x8c, 0x23,
- 0x14, 0x22, 0x07, 0x33, 0xd0, 0x4f, 0x8a, 0x9c, 0xc8, 0xbd, 0x0c, 0xbf,
- 0xb2, 0x41, 0x3d, 0x91, 0x73, 0x71, 0x11, 0xec, 0x94, 0xb1, 0xe1, 0x0c,
- 0x91, 0x67, 0x39, 0x22, 0x88, 0x1c, 0x8b, 0x4b, 0xcf, 0xee, 0xac, 0x89,
- 0xdc, 0x8a, 0x8b, 0x98, 0x34, 0x1a, 0x22, 0xa7, 0x32, 0xfc, 0xca, 0x6e,
- 0xbe, 0x88, 0x5c, 0xca, 0x40, 0x3f, 0xe9, 0x70, 0x88, 0x1c, 0xca, 0x83,
- 0x80, 0x89, 0xfc, 0x89, 0xd3, 0xfd, 0xf4, 0xc1, 0xc6, 0x44, 0xde, 0xc4,
- 0x45, 0xb0, 0xd3, 0x40, 0xe4, 0x4b, 0x5c, 0xc4, 0xa4, 0x15, 0x11, 0x79,
- 0x92, 0xe1, 0x57, 0x76, 0x43, 0x42, 0xe4, 0x47, 0x06, 0xfa, 0x49, 0x3b,
- 0x23, 0xf2, 0x22, 0x6e, 0xeb, 0x6c, 0x94, 0x43, 0xe4, 0x43, 0x8e, 0x08,
- 0x22, 0x17, 0x32, 0xfc, 0x3a, 0xc9, 0x1d, 0x91, 0x03, 0x19, 0x7e, 0x65,
- 0xad, 0x98, 0xc8, 0x7d, 0xb8, 0x88, 0xc9, 0x35, 0x87, 0xc8, 0x79, 0x0c,
- 0xbf, 0xb2, 0x9a, 0x41, 0xe4, 0x3a, 0x06, 0xfa, 0x49, 0xbd, 0x21, 0x72,
- 0x1c, 0xc3, 0xaf, 0xcc, 0x6a, 0x46, 0xe6, 0x36, 0x06, 0xfa, 0x49, 0xad,
- 0x22, 0x72, 0x1a, 0xc3, 0xaf, 0x93, 0x33, 0x4a, 0xe4, 0x32, 0x5c, 0xce,
- 0x26, 0x7d, 0x33, 0x91, 0xc3, 0x18, 0x7e, 0xe5, 0x82, 0x18, 0x22, 0x77,
- 0xe1, 0x74, 0x4f, 0xe4, 0x2d, 0x86, 0x0e, 0x26, 0x05, 0x4b, 0xe4, 0x2b,
- 0x86, 0x5f, 0x27, 0xc5, 0x46, 0xe4, 0x29, 0x5c, 0xce, 0x58, 0x53, 0x27,
- 0xf2, 0x13, 0x43, 0x0f, 0xac, 0xe8, 0x89, 0xbc, 0x84, 0x23, 0x3e, 0xd6,
- 0xa7, 0x12, 0xf9, 0x88, 0x87, 0x26, 0x88, 0x5c, 0xc4, 0x11, 0x40, 0xe4,
- 0x21, 0x1c, 0xf2, 0xc9, 0x09, 0x20, 0xf2, 0x0f, 0x2e, 0x7f, 0xdc, 0xba,
- 0x4c, 0xe4, 0x1d, 0x9c, 0x26, 0x88, 0x9c, 0xc3, 0x43, 0x13, 0x44, 0xbe,
- 0xe1, 0x08, 0x20, 0x72, 0x0d, 0x0e, 0x39, 0x7b, 0x50, 0x40, 0xe4, 0x18,
- 0x86, 0x0e, 0x26, 0xdd, 0x22, 0x91, 0x5b, 0x78, 0xe8, 0x9e, 0xc8, 0x2b,
- 0x38, 0x00, 0x6e, 0x8b, 0x46, 0xe4, 0x13, 0x8e, 0x57, 0x8c, 0xc4, 0x8e,
- 0x7e, 0x36, 0x43, 0x01, 0x18, 0x9b, 0xbb, 0x88, 0x8b, 0x82, 0xfc, 0x3d,
- 0x11, 0xf5, 0xf6, 0x24, 0xaa, 0x29, 0x46, 0x60, 0xe0, 0xba, 0xbc, 0x6b,
- 0xc4, 0x6a, 0x92, 0x21, 0x33, 0xf8, 0x72, 0xdd, 0x66, 0xd9, 0xf0, 0x6e,
- 0xde, 0x74, 0x83, 0x1b, 0x75, 0x60, 0x9f, 0xe0, 0x51, 0x45, 0x5c, 0xcb,
- 0x44, 0xe5, 0x42, 0x65, 0x0c, 0xf4, 0x69, 0x00, 0xf6, 0xbb, 0x00, 0xec,
- 0xf7, 0x01, 0xd8, 0x3f, 0x07, 0x60, 0x07, 0xe8, 0xf0, 0x9c, 0xe0, 0x04,
- 0x52, 0xef, 0xa5, 0x6c, 0x54, 0x3e, 0x29, 0xfa, 0xb5, 0xd0, 0xcd, 0xf1,
- 0x26, 0xf2, 0x44, 0x4b, 0xb7, 0x6d, 0x31, 0xf1, 0xec, 0x98, 0x2a, 0x12,
- 0xb3, 0xb2, 0xc4, 0xd4, 0x09, 0x66, 0xdf, 0xc6, 0xf0, 0x88, 0xc3, 0x4e,
- 0xd6, 0xea, 0xbe, 0xa4, 0x15, 0xf0, 0xd8, 0xe3, 0x5e, 0x64, 0x99, 0x98,
- 0x38, 0xf0, 0x18, 0x54, 0x3d, 0x3b, 0x3e, 0x05, 0x3b, 0xa1, 0x5a, 0x46,
- 0x47, 0x0d, 0xb8, 0xd9, 0xf0, 0xb7, 0x07, 0x7a, 0x18, 0x55, 0x74, 0x2e,
- 0x57, 0xb1, 0xb0, 0x0f, 0xa8, 0xf4, 0xd8, 0x56, 0xcb, 0x3a, 0x2e, 0x8b,
- 0x46, 0x16, 0x34, 0x03, 0xd2, 0x4c, 0xd5, 0xa1, 0x6a, 0x64, 0xe2, 0xa4,
- 0x38, 0x27, 0xac, 0x5f, 0x1f, 0x8a, 0x44, 0xc5, 0xf6, 0xf6, 0xab, 0x63,
- 0x08, 0x67, 0xe0, 0x2b, 0x3d, 0xd9, 0xd9, 0xdf, 0xf3, 0xf5, 0xfd, 0x12,
- 0xf4, 0x50, 0xce, 0xab, 0x8e, 0xeb, 0x9b, 0xe7, 0x59, 0x99, 0xea, 0x39,
- 0xcf, 0x97, 0xaf, 0x4e, 0x84, 0xa7, 0x44, 0xba, 0x7f, 0x71, 0xf0, 0x00,
- 0xfd, 0x81, 0x8c, 0x07, 0xe8, 0x9f, 0x73, 0x0f, 0x90, 0x78, 0x17, 0xf2,
- 0x31, 0xd0, 0xbf, 0x04, 0x78, 0x80, 0x7e, 0x93, 0xf2, 0x00, 0xfd, 0x8b,
- 0xe6, 0x63, 0x20, 0x91, 0xae, 0xf4, 0x00, 0xd1, 0x51, 0x13, 0x29, 0x4a,
- 0x0f, 0xd0, 0xbf, 0xee, 0x7a, 0x80, 0xfe, 0xf5, 0xd7, 0x03, 0xf4, 0x87,
- 0x8a, 0x1e, 0x20, 0x2a, 0x70, 0x22, 0x1d, 0xf8, 0x18, 0x48, 0xe4, 0xfd,
- 0x7c, 0x40, 0x74, 0x0e, 0x89, 0x54, 0xa0, 0x07, 0x88, 0x6a, 0x2e, 0x91,
- 0x20, 0xf4, 0x00, 0xd1, 0xa9, 0x21, 0xf2, 0x82, 0x1e, 0x20, 0x3a, 0x87,
- 0x44, 0x32, 0xd0, 0x03, 0x44, 0xad, 0x8b, 0x48, 0x11, 0x7a, 0x80, 0x64,
- 0xfa, 0xd8, 0x8b, 0x25, 0x92, 0x9a, 0x7e, 0xac, 0x7f, 0x01, 0xf0, 0x62,
- 0x89, 0xc3, 0x7e, 0x3f, 0x16, 0x96, 0x16, 0x79, 0x50, 0xef, 0xc5, 0x12,
- 0x67, 0xdf, 0x5e, 0x2c, 0x71, 0x0c, 0xee, 0xc7, 0x06, 0xc8, 0x81, 0x38,
- 0xe0, 0xf5, 0x62, 0x89, 0xf3, 0x56, 0x3f, 0x16, 0xf5, 0x8d, 0xf4, 0x99,
- 0x95, 0x17, 0x4b, 0x6c, 0x65, 0xfd, 0xd8, 0x80, 0x76, 0x89, 0x0d, 0x9a,
- 0x1f, 0x1b, 0xa0, 0x93, 0xc4, 0xc6, 0xca, 0x8b, 0x25, 0x76, 0x50, 0x7e,
- 0x2c, 0x6c, 0xea, 0xe4, 0xde, 0xc6, 0x8f, 0x85, 0x0d, 0x9e, 0xdc, 0xf1,
- 0xf8, 0xb0, 0x78, 0xab, 0x64, 0x6d, 0x14, 0x01, 0xc6, 0xe7, 0x8d, 0xac,
- 0x98, 0x22, 0xc0, 0xb8, 0x15, 0x91, 0xc5, 0x4c, 0x7e, 0x30, 0x51, 0x9b,
- 0x44, 0x80, 0x71, 0x85, 0x27, 0x6b, 0x83, 0x08, 0xb0, 0xff, 0xec, 0x85,
- 0x00, 0x87, 0x48, 0x03, 0x5f, 0xd0, 0xe9, 0x52, 0x1f, 0x3f, 0x98, 0xa8,
- 0x33, 0x21, 0xc0, 0x21, 0x93, 0x42, 0x94, 0x8f, 0xf8, 0xc1, 0x44, 0xcd,
- 0x86, 0x1f, 0x4c, 0x14, 0x68, 0x10, 0xe0, 0x10, 0x7d, 0x26, 0x4a, 0x2f,
- 0xfc, 0x60, 0xa2, 0xce, 0xc2, 0x0f, 0x26, 0x0a, 0x14, 0x08, 0x70, 0x88,
- 0x59, 0x11, 0xe5, 0x03, 0x7e, 0x30, 0x51, 0x2b, 0xe0, 0x07, 0x13, 0x99,
- 0x68, 0x3f, 0x98, 0x48, 0x1a, 0x5f, 0x03, 0x1c, 0xe0, 0x15, 0xa9, 0xf4,
- 0x2e, 0x01, 0x0e, 0x51, 0x24, 0x22, 0x7b, 0xea, 0x07, 0x13, 0x59, 0x45,
- 0x02, 0xec, 0x4f, 0x03, 0x12, 0xe0, 0x10, 0x36, 0x88, 0xdc, 0x1f, 0x01,
- 0x0e, 0x59, 0x26, 0x88, 0x9c, 0x1f, 0x01, 0x0e, 0xd1, 0x67, 0x22, 0x9b,
- 0xe7, 0x07, 0x07, 0xad, 0x83, 0x44, 0x1a, 0x8e, 0x00, 0xe3, 0xb1, 0x03,
- 0x99, 0x9c, 0x23, 0xc0, 0x21, 0x36, 0x48, 0xa4, 0xdd, 0x08, 0x70, 0x88,
- 0x6e, 0x10, 0x09, 0x35, 0x3f, 0x98, 0xc8, 0x71, 0x11, 0xe0, 0x10, 0x1b,
- 0x24, 0xb2, 0x57, 0x04, 0x18, 0xdf, 0x38, 0x90, 0x19, 0x20, 0x3f, 0x98,
- 0xc8, 0xd7, 0x10, 0xe0, 0x90, 0xa8, 0x80, 0xc8, 0xa6, 0x10, 0xe0, 0x10,
- 0x5f, 0x47, 0x24, 0x49, 0x08, 0x70, 0x88, 0x6e, 0x10, 0xb9, 0x09, 0x02,
- 0x0c, 0x4b, 0x03, 0x9e, 0x10, 0x34, 0x82, 0x21, 0x0e, 0x32, 0x3d, 0x40,
- 0x74, 0x7a, 0x89, 0xa3, 0x5b, 0x0f, 0x10, 0xf5, 0x3c, 0x44, 0xc1, 0xe9,
- 0x63, 0x20, 0x51, 0x59, 0xea, 0x01, 0xa2, 0x5b, 0x4c, 0xa2, 0x56, 0xd4,
- 0x03, 0x44, 0x07, 0x43, 0x1c, 0x09, 0x3f, 0x06, 0x12, 0xa5, 0xa2, 0x1e,
- 0x20, 0x1a, 0xbb, 0x13, 0x05, 0xa4, 0x1e, 0x20, 0xba, 0x8e, 0x11, 0x65,
- 0xa5, 0x1e, 0x20, 0xea, 0x76, 0x88, 0x42, 0x51, 0x0f, 0x10, 0x5d, 0xe4,
- 0x88, 0xf2, 0x51, 0x0f, 0x10, 0xb5, 0x6f, 0xa2, 0x20, 0xd4, 0x03, 0x44,
- 0xbb, 0x26, 0xca, 0x44, 0x3d, 0x40, 0x74, 0xff, 0x40, 0x54, 0x7f, 0x7a,
- 0x80, 0xa8, 0xc0, 0x89, 0x8a, 0x4e, 0x0f, 0xd0, 0x9f, 0x29, 0xf0, 0x00,
- 0x51, 0x2b, 0x24, 0x32, 0x4a, 0x3e, 0x20, 0x75, 0x87, 0xe8, 0x31, 0x96,
- 0xa8, 0x23, 0xf5, 0x00, 0xd1, 0x16, 0x89, 0xca, 0x4d, 0x0f, 0x10, 0xf5,
- 0x2a, 0x44, 0xa9, 0xe6, 0x63, 0x20, 0x51, 0xb5, 0xe9, 0x01, 0xa2, 0x5d,
- 0x13, 0x75, 0x98, 0x1e, 0x20, 0x3a, 0x39, 0x44, 0xf1, 0xa5, 0x07, 0x88,
- 0xae, 0x72, 0x44, 0x3d, 0xa5, 0x07, 0x88, 0xce, 0x35, 0x51, 0x65, 0xe9,
- 0x01, 0xa2, 0xe2, 0x21, 0x6a, 0x2f, 0x3d, 0x40, 0xd4, 0xab, 0x10, 0x15,
- 0x99, 0x1e, 0x20, 0x2a, 0x70, 0xa2, 0x0a, 0xd3, 0x03, 0x44, 0x83, 0x2b,
- 0xa2, 0x28, 0xd2, 0x03, 0x44, 0xc5, 0x43, 0x14, 0x31, 0x7a, 0x80, 0xa8,
- 0xd3, 0x25, 0x0a, 0x17, 0x1f, 0x03, 0x89, 0xc2, 0x3f, 0x0f, 0x10, 0x9d,
- 0x42, 0xa2, 0xd8, 0xcf, 0x03, 0x44, 0x8d, 0x8b, 0x28, 0xdf, 0xf3, 0x00,
- 0xd1, 0xae, 0x89, 0xa2, 0x3e, 0x0f, 0x10, 0x55, 0x0a, 0xa2, 0x4c, 0xcf,
- 0x03, 0x44, 0xb5, 0x87, 0x28, 0xcd, 0xf3, 0x00, 0x51, 0xb7, 0x47, 0x14,
- 0xec, 0x79, 0x80, 0xe8, 0xba, 0x49, 0x94, 0xf0, 0x79, 0x80, 0xe8, 0x14,
- 0x12, 0xa5, 0x7b, 0x8f, 0x81, 0x44, 0x8d, 0x9e, 0x07, 0x88, 0xba, 0x3d,
- 0xa2, 0xec, 0xce, 0x03, 0x44, 0x6d, 0x86, 0x28, 0xc6, 0xf3, 0x00, 0x51,
- 0xf1, 0x10, 0xe5, 0x75, 0x8f, 0x81, 0x44, 0x91, 0xda, 0x63, 0x20, 0x51,
- 0x29, 0xe6, 0x01, 0xa2, 0x36, 0xb3, 0x1f, 0x97, 0x45, 0x8c, 0xc8, 0xae,
- 0xf6, 0x65, 0xe4, 0x52, 0x4b, 0xd9, 0x7f, 0x6c, 0x63, 0xce, 0xe7, 0x91,
- 0x1f, 0xa8, 0x2f, 0xe3, 0xb6, 0x96, 0xf1, 0x46, 0x9a, 0xe1, 0x8f, 0x3f,
- 0x4a, 0xe1, 0xe7, 0xfa, 0x47, 0x91, 0xc9, 0x5e, 0x5c, 0x33, 0x98, 0x4e,
- 0x4e, 0xc4, 0x57, 0xa9, 0x79, 0x41, 0xf8, 0x7d, 0x96, 0xa9, 0x58, 0xde,
- 0x3c, 0x4b, 0x74, 0x16, 0xc8, 0xef, 0x49, 0x2c, 0x75, 0x24, 0x6c, 0x1b,
- 0xc2, 0x34, 0xb1, 0xd8, 0x63, 0xf5, 0x4f, 0xde, 0x15, 0x99, 0x2a, 0xe6,
- 0x7d, 0xf8, 0xa9, 0x79, 0x52, 0x76, 0xc4, 0xe4, 0xf1, 0x41, 0xad, 0xf4,
- 0x4a, 0x14, 0x3c, 0xb0, 0x10, 0x3b, 0x95, 0x8a, 0x46, 0x95, 0x85, 0xde,
- 0xa8, 0x6c, 0x7d, 0x4e, 0xb0, 0x84, 0x18, 0x74, 0xa9, 0xcb, 0x99, 0xe6,
- 0x71, 0x22, 0xbd, 0x8c, 0xcf, 0x3d, 0xc4, 0xe7, 0xc7, 0x32, 0x2d, 0xdb,
- 0x59, 0x4c, 0xb6, 0x86, 0xf0, 0x1a, 0xa6, 0x00, 0x7f, 0xd0, 0xe1, 0x67,
- 0xd5, 0x3c, 0x79, 0x6f, 0x5a, 0x0b, 0xfe, 0xa8, 0x58, 0x2d, 0xbf, 0x46,
- 0x4f, 0x36, 0x86, 0xba, 0xea, 0xa8, 0xc9, 0x1c, 0x6d, 0x9c, 0x09, 0xad,
- 0x23, 0x00, 0xd8, 0x39, 0xb1, 0x73, 0xd8, 0x65, 0x42, 0xa8, 0xfe, 0x86,
- 0x4d, 0x56, 0xe7, 0x7f, 0x5e, 0x88, 0x62, 0x27, 0xf4, 0x9c, 0x39, 0xeb,
- 0xc8, 0xe3, 0x8e, 0x7c, 0x31, 0x27, 0xf6, 0xba, 0x30, 0x2d, 0x04, 0x7f,
- 0x0d, 0xc2, 0x7d, 0xb1, 0xb3, 0x6f, 0xc0, 0x46, 0xcb, 0x4b, 0xf0, 0xfb,
- 0x4a, 0x16, 0x2a, 0xf8, 0x5b, 0x4e, 0xc3, 0x22, 0xdc, 0xd1, 0x2e, 0x26,
- 0xda, 0x4f, 0x4a, 0xc7, 0xc6, 0xbf, 0xcf, 0xe3, 0xb5, 0xe9, 0x89, 0xa7,
- 0xab, 0x6a, 0x9f, 0x24, 0x87, 0x82, 0x43, 0x6e, 0x32, 0x99, 0x88, 0x42,
- 0x9d, 0x60, 0x57, 0xf8, 0xb2, 0x91, 0xaf, 0x9b, 0xad, 0x04, 0x3f, 0x8c,
- 0x9e, 0xa9, 0xbb, 0x40, 0x89, 0x54, 0x52, 0x7f, 0x6d, 0x95, 0x16, 0x51,
- 0x6c, 0x68, 0xed, 0xd6, 0xe8, 0x62, 0x8f, 0xa6, 0xed, 0xca, 0x43, 0xb2,
- 0xfb, 0x07, 0x97, 0xe9, 0x6f, 0xa4, 0xad, 0xa8, 0x3e, 0xe3, 0xf8, 0x9b,
- 0xe7, 0x2a, 0xad, 0xca, 0x22, 0x09, 0xff, 0xc8, 0x47, 0x57, 0x9c, 0xbd,
- 0xea, 0xa9, 0x69, 0xef, 0xd5, 0xe3, 0xbe, 0x3b, 0x03, 0x22, 0xa2, 0xfd,
- 0x45, 0xec, 0x64, 0x7d, 0xf3, 0x76, 0xcc, 0x2e, 0xcf, 0x59, 0xc7, 0x56,
- 0x61, 0xa9, 0xe1, 0xbe, 0xde, 0x55, 0x4d, 0xab, 0x6f, 0xfe, 0x5d, 0x06,
- 0x7f, 0xc0, 0xe7, 0x28, 0x84, 0xd2, 0xd2, 0xdf, 0xf7, 0x9f, 0xa6, 0xb5,
- 0x25, 0x2b, 0x98, 0x7b, 0xbd, 0x2f, 0x44, 0x3e, 0x67, 0x80, 0xdd, 0x1c,
- 0x1a, 0xff, 0x6a, 0xe9, 0x1f, 0x1b, 0x80, 0xbf, 0xb7, 0xa7, 0xdf, 0xfd,
- 0x75, 0xb6, 0x2c, 0x0d, 0x2d, 0x2e, 0xc9, 0xb6, 0xc9, 0xca, 0x72, 0x4e,
- 0xac, 0xde, 0x75, 0x95, 0xa9, 0x9d, 0x6f, 0x85, 0x23, 0x22, 0xd6, 0x77,
- 0x6f, 0x66, 0x8f, 0x49, 0xf4, 0x9f, 0xf0, 0x02, 0x23, 0xf9, 0x76, 0xd6,
- 0x3c, 0xf5, 0x7a, 0x9f, 0x18, 0xea, 0xa8, 0x90, 0xd8, 0xd7, 0x6b, 0xbe,
- 0xd8, 0xef, 0x12, 0xff, 0x71, 0xf6, 0xa8, 0xfa, 0xcf, 0x1a, 0x17, 0x44,
- 0xf9, 0x8a, 0x03, 0xa1, 0xac, 0xf5, 0x0c, 0x42, 0xd5, 0xe3, 0x9d, 0x83,
- 0x1e, 0x7d, 0xd8, 0x87, 0x50, 0xc0, 0xbf, 0x7e, 0x3f, 0x5f, 0x01, 0xff,
- 0xfa, 0x3d, 0xae, 0x80, 0xb5, 0x28, 0x52, 0x79, 0xf3, 0xb9, 0xb7, 0xcc,
- 0xd0, 0x8f, 0x0f, 0x76, 0xc4, 0x66, 0xf3, 0xf2, 0xed, 0xd1, 0xb2, 0xa1,
- 0x2e, 0x7f, 0xfd, 0x75, 0xf6, 0xc8, 0xbe, 0x7e, 0x85, 0x07, 0xf6, 0xf6,
- 0x60, 0xe6, 0x75, 0x76, 0x47, 0xb9, 0xa5, 0x86, 0xfb, 0x7a, 0x35, 0x43,
- 0x76, 0x5d, 0x37, 0x0f, 0xe9, 0x60, 0x70, 0x3d, 0xd2, 0x65, 0xac, 0xc4,
- 0x68, 0x41, 0xda, 0xa8, 0xbf, 0x04, 0xf6, 0x6d, 0x28, 0xe0, 0xb1, 0xbd,
- 0xac, 0x95, 0x2c, 0x12, 0xfb, 0x2d, 0xe5, 0xc0, 0x4e, 0xd6, 0x27, 0x42,
- 0xb8, 0xaf, 0xcf, 0x52, 0xad, 0xc2, 0xd7, 0x14, 0x43, 0x43, 0x1a, 0x68,
- 0x63, 0x0b, 0xc2, 0x91, 0xae, 0xff, 0x65, 0x34, 0x39, 0x34, 0x0e, 0xbe,
- 0xb3, 0x34, 0x01, 0x0a, 0xa9, 0x2b, 0x11, 0x87, 0x6e, 0x8f, 0xf2, 0x9e,
- 0x0a, 0xee, 0xe5, 0x79, 0x7b, 0x7f, 0x6f, 0x1d, 0x5a, 0xa0, 0x10, 0xc5,
- 0xa1, 0x08, 0x18, 0xc8, 0x1b, 0xb5, 0x0e, 0x1f, 0x47, 0x66, 0x88, 0x1e,
- 0x7f, 0xde, 0x9a, 0x50, 0x3a, 0xfb, 0xb5, 0xd8, 0x60, 0x85, 0xeb, 0x88,
- 0xe0, 0x61, 0x7c, 0x2c, 0x0b, 0x15, 0xcf, 0x39, 0x06, 0xd0, 0x0f, 0x84,
- 0x90, 0x87, 0x4d, 0x8a, 0x72, 0x6b, 0x37, 0xaf, 0x85, 0xda, 0x06, 0x7f,
- 0xdd, 0xd5, 0xa5, 0x45, 0x85, 0xf7, 0x4a, 0x35, 0x3f, 0xb7, 0xa1, 0x5f,
- 0x15, 0x4d, 0x55, 0xb3, 0x69, 0x57, 0xf0, 0xa0, 0x5e, 0x58, 0xa6, 0x72,
- 0xd1, 0xc8, 0xd0, 0xad, 0x6e, 0x7c, 0x22, 0x0c, 0xf5, 0x40, 0x37, 0x1f,
- 0x64, 0x5b, 0xa8, 0x46, 0x86, 0x46, 0xde, 0x47, 0x3f, 0x54, 0x1f, 0xa9,
- 0xe1, 0x6e, 0x3f, 0xc8, 0xa2, 0x0e, 0xfe, 0x96, 0x5f, 0xdd, 0x11, 0xc1,
- 0x7d, 0xec, 0xfe, 0x51, 0xb7, 0x69, 0xfb, 0x63, 0xdd, 0xde, 0xcb, 0x6e,
- 0x7a, 0x03, 0x3f, 0x52, 0xbc, 0xb5, 0xd4, 0xc9, 0x89, 0x1a, 0x52, 0x0e,
- 0xa1, 0xc4, 0xcd, 0xac, 0x43, 0xc0, 0xd4, 0x50, 0x1e, 0x8f, 0xe9, 0xe0,
- 0x3d, 0x89, 0x34, 0xd1, 0x6d, 0xe8, 0x47, 0xfe, 0x8b, 0x8e, 0x28, 0x20,
- 0x80, 0xd9, 0xb6, 0xa1, 0xee, 0xae, 0xb4, 0x34, 0x01, 0xfe, 0xee, 0x67,
- 0x59, 0xab, 0x46, 0xa4, 0xe1, 0x3e, 0x6f, 0x73, 0x24, 0xc4, 0xfb, 0x6a,
- 0xb3, 0x46, 0x55, 0xc1, 0x9f, 0x13, 0xcd, 0x8f, 0x64, 0x70, 0x3f, 0xf9,
- 0xe1, 0x8b, 0x14, 0xf5, 0xca, 0x6c, 0x3d, 0x82, 0xc7, 0x74, 0x38, 0x12,
- 0x06, 0xac, 0xea, 0xf2, 0x73, 0x59, 0x67, 0xe1, 0x3b, 0x66, 0xb9, 0xb7,
- 0x64, 0x70, 0x3f, 0xbf, 0xa9, 0x7c, 0xc6, 0x77, 0xbe, 0x73, 0xef, 0x99,
- 0x90, 0xbf, 0x87, 0x9f, 0xb6, 0x5a, 0xdd, 0x7c, 0x2c, 0xef, 0xb3, 0x36,
- 0x54, 0x6c, 0x3d, 0x11, 0x19, 0xa6, 0xe8, 0xb2, 0xad, 0x1b, 0xc3, 0x8a,
- 0x8e, 0xca, 0x3a, 0x85, 0x4f, 0xc2, 0x42, 0x0d, 0xd8, 0x90, 0xc0, 0x43,
- 0xfd, 0x67, 0xd6, 0x26, 0x22, 0x9d, 0x37, 0xd8, 0xb6, 0xa3, 0xd5, 0xd3,
- 0x43, 0x36, 0x20, 0x07, 0x81, 0x2d, 0xd8, 0x6d, 0x1d, 0xcb, 0x97, 0x46,
- 0x42, 0xc1, 0xf9, 0x8b, 0x8e, 0x72, 0x6d, 0x29, 0xe1, 0xad, 0xe5, 0xfb,
- 0x4c, 0x04, 0x7f, 0x41, 0xbc, 0xb2, 0x34, 0xf0, 0x78, 0x3e, 0x89, 0x5a,
- 0x99, 0x00, 0xf2, 0x8f, 0x81, 0x9d, 0x34, 0x3d, 0x19, 0x3c, 0x90, 0x4f,
- 0x22, 0x4d, 0x83, 0x17, 0x4d, 0xe3, 0x81, 0x55, 0x11, 0x35, 0x1d, 0x29,
- 0x3c, 0xa0, 0x7f, 0xbd, 0xfe, 0xe5, 0x55, 0x68, 0x08, 0x6d, 0x3f, 0x5e,
- 0x8f, 0xb6, 0xff, 0xba, 0xd0, 0x86, 0xa3, 0x5a, 0x84, 0x06, 0x6c, 0x6a,
- 0xa0, 0xc3, 0x5d, 0xc9, 0xb6, 0x2c, 0x1a, 0xb1, 0x6d, 0x42, 0x15, 0x6d,
- 0x47, 0xeb, 0xfb, 0x6e, 0x68, 0x12, 0x5d, 0xa9, 0x3f, 0xed, 0x55, 0x13,
- 0xbe, 0xeb, 0x6a, 0x7a, 0xaa, 0xa9, 0x0d, 0x51, 0x89, 0x9d, 0xe2, 0x94,
- 0x85, 0x28, 0x54, 0xbe, 0x11, 0xab, 0x60, 0x1e, 0x12, 0x87, 0x14, 0x5f,
- 0x25, 0x9e, 0x7d, 0xf9, 0xe5, 0xf7, 0xdc, 0xb5, 0x7c, 0x6a, 0x65, 0xd1,
- 0x84, 0xba, 0xcc, 0xa6, 0x23, 0xc2, 0x57, 0x6f, 0xbb, 0xa7, 0x0f, 0x0e,
- 0xe3, 0xf2, 0x43, 0x94, 0x1f, 0x09, 0x91, 0x4e, 0x9e, 0x8b, 0x24, 0xf8,
- 0xe0, 0x75, 0x65, 0x69, 0x82, 0xec, 0x4c, 0x66, 0xa1, 0xbb, 0x61, 0xd5,
- 0x53, 0xc1, 0xbd, 0xfc, 0x2c, 0x56, 0xc1, 0x9b, 0xfd, 0x8d, 0xa5, 0x81,
- 0x7b, 0x78, 0xdf, 0x65, 0xa7, 0xa4, 0x0e, 0x0d, 0x0f, 0xab, 0x81, 0x0e,
- 0xee, 0xe9, 0x8d, 0x2a, 0xb6, 0x32, 0x79, 0x1d, 0xba, 0x5b, 0xc8, 0x3a,
- 0x32, 0x85, 0x2b, 0xf1, 0x4b, 0xb3, 0x90, 0xe9, 0xaf, 0xad, 0xa8, 0x43,
- 0x1d, 0xd3, 0xfa, 0x44, 0x88, 0xf7, 0x95, 0xa9, 0xbb, 0x39, 0xc7, 0x3e,
- 0x47, 0x32, 0xdc, 0xf0, 0x55, 0x91, 0x94, 0x7b, 0x7d, 0xf3, 0x46, 0xed,
- 0xe4, 0xcd, 0x47, 0x7b, 0xd8, 0x11, 0xba, 0xa7, 0xec, 0x17, 0xab, 0xa0,
- 0xb3, 0xf0, 0xe7, 0x99, 0x88, 0xb7, 0x66, 0x89, 0x0f, 0x3f, 0x2a, 0x59,
- 0x59, 0xca, 0xaa, 0xa3, 0xc4, 0x77, 0xcb, 0x87, 0xfd, 0x8c, 0x00, 0x38,
- 0xcd, 0xca, 0x95, 0xc8, 0xa2, 0xf8, 0x10, 0x16, 0x06, 0xbf, 0x2f, 0xe3,
- 0x6d, 0xf0, 0xa8, 0x54, 0x43, 0x47, 0x63, 0xe3, 0x14, 0xdb, 0xeb, 0x4f,
- 0xff, 0x7c, 0x88, 0x0b, 0x8b, 0x36, 0xcb, 0x88, 0x70, 0x6d, 0x7b, 0xa8,
- 0x0d, 0x2b, 0xa1, 0xa1, 0x5a, 0x4f, 0x85, 0x6b, 0xa9, 0xd1, 0x97, 0x19,
- 0xdb, 0x98, 0xf5, 0x91, 0x8c, 0x5c, 0x27, 0xd7, 0x2b, 0x5b, 0x3f, 0x8c,
- 0x70, 0xf0, 0xb1, 0x69, 0x13, 0xf5, 0xdb, 0xbf, 0x43, 0xc7, 0x69, 0xa9,
- 0x76, 0xf7, 0x70, 0x14, 0xf7, 0xb2, 0x6c, 0xca, 0xf0, 0xbd, 0xf4, 0xba,
- 0xa7, 0xc2, 0x0f, 0xb2, 0xbb, 0xf3, 0xe8, 0xff, 0x16, 0x1a, 0xef, 0xd7,
- 0x67, 0x27, 0xd9, 0x3e, 0x71, 0x56, 0x26, 0xda, 0x47, 0x4e, 0xbb, 0xcf,
- 0x33, 0x9a, 0xfa, 0x5e, 0x3c, 0xb1, 0xc7, 0x5f, 0x5d, 0x7d, 0x41, 0xe0,
- 0x29, 0xc2, 0xf6, 0x71, 0x4d, 0x82, 0xbf, 0x9b, 0x5f, 0xef, 0xcb, 0xe0,
- 0xb3, 0x90, 0xaf, 0x96, 0x26, 0x24, 0x1b, 0xf1, 0x63, 0xd9, 0xae, 0x44,
- 0xe8, 0xf2, 0x90, 0x74, 0x44, 0xb8, 0x4f, 0x93, 0xc1, 0xeb, 0xe9, 0x4a,
- 0x06, 0x2c, 0xa7, 0x5f, 0xca, 0xb6, 0x69, 0x57, 0xa1, 0xa2, 0x3a, 0xf4,
- 0x54, 0xa4, 0x66, 0x74, 0xbf, 0xdb, 0x07, 0x87, 0x10, 0x16, 0x3e, 0xc8,
- 0x24, 0x51, 0xa1, 0xbe, 0xad, 0xee, 0x88, 0xf0, 0xe8, 0x27, 0xe9, 0x63,
- 0xbe, 0xe0, 0xf8, 0xe7, 0x44, 0x87, 0x79, 0x0d, 0xb3, 0x8c, 0xbc, 0xdb,
- 0xc9, 0x7a, 0x9d, 0x95, 0xfb, 0x60, 0xdf, 0x61, 0x68, 0xcb, 0x23, 0x2d,
- 0x1e, 0x9c, 0xaa, 0xbb, 0xd0, 0xf0, 0x37, 0x37, 0x24, 0x68, 0xc2, 0xd2,
- 0xb8, 0xc1, 0x7c, 0x95, 0xc9, 0x7f, 0x56, 0x65, 0xa8, 0x9a, 0xeb, 0x9e,
- 0xb2, 0xad, 0x4a, 0x5c, 0xd7, 0x5f, 0x17, 0xf1, 0xcc, 0x93, 0x18, 0x65,
- 0x28, 0xa3, 0x7e, 0xad, 0xd3, 0xd5, 0xc4, 0xe3, 0x6f, 0x16, 0xc7, 0x1c,
- 0x61, 0xb8, 0x90, 0x18, 0x3c, 0xa2, 0x12, 0xc9, 0x8c, 0x33, 0x2a, 0x4b,
- 0x84, 0xc7, 0xa2, 0xc2, 0x04, 0xae, 0xeb, 0xd0, 0x3d, 0xb2, 0xf1, 0xb2,
- 0xcd, 0x3a, 0x47, 0xf7, 0x20, 0x36, 0x56, 0xfb, 0xbb, 0x09, 0x29, 0x0b,
- 0x11, 0xea, 0x97, 0x6d, 0x94, 0x76, 0xdb, 0x53, 0xc2, 0x1b, 0x61, 0xab,
- 0x1e, 0xc1, 0xfb, 0xe0, 0x8e, 0x28, 0x60, 0x33, 0x62, 0x82, 0xa6, 0xfa,
- 0xe6, 0x17, 0xb9, 0x0f, 0x0d, 0x3e, 0x0b, 0x43, 0x12, 0x1d, 0x4c, 0x3f,
- 0x2b, 0x55, 0x88, 0xa6, 0x0c, 0xe8, 0xb2, 0x8c, 0x8f, 0x27, 0x12, 0x81,
- 0x7b, 0xa0, 0x13, 0x1d, 0xb4, 0xf0, 0xc8, 0x4c, 0xc5, 0xaa, 0x6c, 0x43,
- 0x87, 0x95, 0x0c, 0x74, 0xf8, 0x78, 0x0e, 0xbb, 0xe0, 0xc8, 0x7d, 0x63,
- 0x69, 0xec, 0x75, 0x20, 0xa4, 0x83, 0xf7, 0xa2, 0x32, 0xdb, 0x8a, 0xe0,
- 0x92, 0xba, 0x6a, 0x20, 0x83, 0x9c, 0x64, 0xa9, 0x6c, 0x4a, 0x66, 0xc6,
- 0x26, 0xbe, 0x54, 0xdb, 0x23, 0x21, 0xd5, 0xcf, 0x1f, 0xfa, 0xff, 0xfc,
- 0xaf, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xb7, 0xc7, 0x59, 0xfe, 0xdb,
- 0xcf, 0x01, 0x00,
- },
- "data/referers.json",
- )
-}
-
-// Asset loads and returns the asset for the given name.
-// It returns an error if the asset could not be found or
-// could not be loaded.
-func Asset(name string) ([]byte, error) {
- cannonicalName := strings.Replace(name, "\\", "/", -1)
- if f, ok := _bindata[cannonicalName]; ok {
- return f()
- }
- return nil, fmt.Errorf("Asset %s not found", name)
-}
-
-// AssetNames returns the names of the assets.
-func AssetNames() []string {
- names := make([]string, 0, len(_bindata))
- for name := range _bindata {
- names = append(names, name)
- }
- return names
-}
-
-// _bindata is a table, holding each asset generator, mapped to its name.
-var _bindata = map[string]func() ([]byte, error){
- "data/referers.json": data_referers_json,
-}
-// AssetDir returns the file names below a certain
-// directory embedded in the file by go-bindata.
-// For example if you run go-bindata on data/... and data contains the
-// following hierarchy:
-// data/
-// foo.txt
-// img/
-// a.png
-// b.png
-// then AssetDir("data") would return []string{"foo.txt", "img"}
-// AssetDir("data/img") would return []string{"a.png", "b.png"}
-// AssetDir("foo.txt") and AssetDir("notexist") would return an error
-func AssetDir(name string) ([]string, error) {
- cannonicalName := strings.Replace(name, "\\", "/", -1)
- pathList := strings.Split(cannonicalName, "/")
- node := _bintree
- for _, p := range pathList {
- node = node.Children[p]
- if node == nil {
- return nil, fmt.Errorf("Asset %s not found", name)
- }
- }
- if node.Func != nil {
- return nil, fmt.Errorf("Asset %s not found", name)
- }
- rv := make([]string, 0, len(node.Children))
- for name := range node.Children {
- rv = append(rv, name)
- }
- return rv, nil
-}
-
-type _bintree_t struct {
- Func func() ([]byte, error)
- Children map[string]*_bintree_t
-}
-var _bintree = &_bintree_t{nil, map[string]*_bintree_t{
- "data": &_bintree_t{nil, map[string]*_bintree_t{
- "referers.json": &_bintree_t{data_referers_json, map[string]*_bintree_t{
- }},
- }},
-}}
diff --git a/vendor/snowplow/referer-parser/go/data/referers.json b/vendor/snowplow/referer-parser/go/data/referers.json
deleted file mode 100644
index 460975ef2..000000000
--- a/vendor/snowplow/referer-parser/go/data/referers.json
+++ /dev/null
@@ -1,4090 +0,0 @@
-{
- "unknown": {
- "Outbrain": {
- "domains": [
- "paid.outbrain.com"
- ]
- },
- "Google": {
- "domains": [
- "support.google.com",
- "developers.google.com",
- "maps.google.com",
- "accounts.google.com",
- "drive.google.com",
- "sites.google.com",
- "groups.google.com",
- "groups.google.co.uk",
- "news.google.co.uk"
- ]
- },
- "Taboola": {
- "domains": [
- "trc.taboola.com",
- "api.taboola.com"
- ]
- },
- "Yahoo!": {
- "domains": [
- "finance.yahoo.com",
- "news.yahoo.com",
- "eurosport.yahoo.com",
- "sports.yahoo.com",
- "astrology.yahoo.com",
- "travel.yahoo.com",
- "answers.yahoo.com",
- "screen.yahoo.com",
- "weather.yahoo.com",
- "messenger.yahoo.com",
- "games.yahoo.com",
- "shopping.yahoo.net",
- "movies.yahoo.com",
- "cars.yahoo.com",
- "lifestyle.yahoo.com",
- "omg.yahoo.com",
- "match.yahoo.net"
- ]
- }
- },
- "search": {
- "TalkTalk": {
- "domains": [
- "www.talktalk.co.uk"
- ],
- "parameters": [
- "query"
- ]
- },
- "1.cz": {
- "domains": [
- "1.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Softonic": {
- "domains": [
- "search.softonic.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "GAIS": {
- "domains": [
- "gais.cs.ccu.edu.tw"
- ],
- "parameters": [
- "q"
- ]
- },
- "Freecause": {
- "domains": [
- "search.freecause.com"
- ],
- "parameters": [
- "p"
- ]
- },
- "360.cn": {
- "domains": [
- "so.360.cn",
- "www.so.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "RPMFind": {
- "domains": [
- "rpmfind.net",
- "fr2.rpmfind.net"
- ],
- "parameters": [
- "query"
- ]
- },
- "Comcast": {
- "domains": [
- "serach.comcast.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Voila": {
- "domains": [
- "search.ke.voila.fr",
- "www.lemoteur.fr"
- ],
- "parameters": [
- "rdata",
- "kw"
- ]
- },
- "Nifty": {
- "domains": [
- "search.nifty.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Atlas": {
- "domains": [
- "searchatlas.centrum.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Lo.st": {
- "domains": [
- "lo.st"
- ],
- "parameters": [
- "x_query"
- ]
- },
- "DasTelefonbuch": {
- "domains": [
- "www1.dastelefonbuch.de"
- ],
- "parameters": [
- "kw"
- ]
- },
- "Fireball": {
- "domains": [
- "www.fireball.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "1und1": {
- "domains": [
- "search.1und1.de"
- ],
- "parameters": [
- "su"
- ]
- },
- "Virgilio": {
- "domains": [
- "ricerca.virgilio.it",
- "ricercaimmagini.virgilio.it",
- "ricercavideo.virgilio.it",
- "ricercanews.virgilio.it",
- "mobile.virgilio.it"
- ],
- "parameters": [
- "qs"
- ]
- },
- "Web.nl": {
- "domains": [
- "www.web.nl"
- ],
- "parameters": [
- "zoekwoord"
- ]
- },
- "Plazoo": {
- "domains": [
- "www.plazoo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Goyellow.de": {
- "domains": [
- "www.goyellow.de"
- ],
- "parameters": [
- "MDN"
- ]
- },
- "AOL": {
- "domains": [
- "search.aol.com",
- "search.aol.it",
- "aolsearch.aol.com",
- "aolsearch.com",
- "www.aolrecherche.aol.fr",
- "www.aolrecherches.aol.fr",
- "www.aolimages.aol.fr",
- "aim.search.aol.com",
- "www.recherche.aol.fr",
- "find.web.aol.com",
- "recherche.aol.ca",
- "aolsearch.aol.co.uk",
- "search.aol.co.uk",
- "aolrecherche.aol.fr",
- "sucheaol.aol.de",
- "suche.aol.de",
- "suche.aolsvc.de",
- "aolbusqueda.aol.com.mx",
- "alicesuche.aol.de",
- "alicesuchet.aol.de",
- "suchet2.aol.de",
- "search.hp.my.aol.com.au",
- "search.hp.my.aol.de",
- "search.hp.my.aol.it",
- "search-intl.netscape.com"
- ],
- "parameters": [
- "q",
- "query"
- ]
- },
- "Acoon": {
- "domains": [
- "www.acoon.de"
- ],
- "parameters": [
- "begriff"
- ]
- },
- "Free": {
- "domains": [
- "search.free.fr",
- "search1-2.free.fr",
- "search1-1.free.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "Apollo Latvia": {
- "domains": [
- "apollo.lv/portal/search/"
- ],
- "parameters": [
- "q"
- ]
- },
- "HighBeam": {
- "domains": [
- "www.highbeam.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "I-play": {
- "domains": [
- "start.iplay.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "FriendFeed": {
- "domains": [
- "friendfeed.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yasni": {
- "domains": [
- "www.yasni.de",
- "www.yasni.com",
- "www.yasni.co.uk",
- "www.yasni.ch",
- "www.yasni.at"
- ],
- "parameters": [
- "query"
- ]
- },
- "Gigablast": {
- "domains": [
- "www.gigablast.com",
- "dir.gigablast.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "arama": {
- "domains": [
- "arama.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Fixsuche": {
- "domains": [
- "www.fixsuche.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Apontador": {
- "domains": [
- "apontador.com.br",
- "www.apontador.com.br"
- ],
- "parameters": [
- "q"
- ]
- },
- "Search.com": {
- "domains": [
- "www.search.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Monstercrawler": {
- "domains": [
- "www.monstercrawler.com"
- ],
- "parameters": [
- "qry"
- ]
- },
- "Google Images": {
- "domains": [
- "google.ac/imgres",
- "google.ad/imgres",
- "google.ae/imgres",
- "google.am/imgres",
- "google.as/imgres",
- "google.at/imgres",
- "google.az/imgres",
- "google.ba/imgres",
- "google.be/imgres",
- "google.bf/imgres",
- "google.bg/imgres",
- "google.bi/imgres",
- "google.bj/imgres",
- "google.bs/imgres",
- "google.by/imgres",
- "google.ca/imgres",
- "google.cat/imgres",
- "google.cc/imgres",
- "google.cd/imgres",
- "google.cf/imgres",
- "google.cg/imgres",
- "google.ch/imgres",
- "google.ci/imgres",
- "google.cl/imgres",
- "google.cm/imgres",
- "google.cn/imgres",
- "google.co.bw/imgres",
- "google.co.ck/imgres",
- "google.co.cr/imgres",
- "google.co.id/imgres",
- "google.co.il/imgres",
- "google.co.in/imgres",
- "google.co.jp/imgres",
- "google.co.ke/imgres",
- "google.co.kr/imgres",
- "google.co.ls/imgres",
- "google.co.ma/imgres",
- "google.co.mz/imgres",
- "google.co.nz/imgres",
- "google.co.th/imgres",
- "google.co.tz/imgres",
- "google.co.ug/imgres",
- "google.co.uk/imgres",
- "google.co.uz/imgres",
- "google.co.ve/imgres",
- "google.co.vi/imgres",
- "google.co.za/imgres",
- "google.co.zm/imgres",
- "google.co.zw/imgres",
- "google.com/imgres",
- "google.com.af/imgres",
- "google.com.ag/imgres",
- "google.com.ai/imgres",
- "google.com.ar/imgres",
- "google.com.au/imgres",
- "google.com.bd/imgres",
- "google.com.bh/imgres",
- "google.com.bn/imgres",
- "google.com.bo/imgres",
- "google.com.br/imgres",
- "google.com.by/imgres",
- "google.com.bz/imgres",
- "google.com.co/imgres",
- "google.com.cu/imgres",
- "google.com.cy/imgres",
- "google.com.do/imgres",
- "google.com.ec/imgres",
- "google.com.eg/imgres",
- "google.com.et/imgres",
- "google.com.fj/imgres",
- "google.com.gh/imgres",
- "google.com.gi/imgres",
- "google.com.gt/imgres",
- "google.com.hk/imgres",
- "google.com.jm/imgres",
- "google.com.kh/imgres",
- "google.com.kw/imgres",
- "google.com.lb/imgres",
- "google.com.lc/imgres",
- "google.com.ly/imgres",
- "google.com.mt/imgres",
- "google.com.mx/imgres",
- "google.com.my/imgres",
- "google.com.na/imgres",
- "google.com.nf/imgres",
- "google.com.ng/imgres",
- "google.com.ni/imgres",
- "google.com.np/imgres",
- "google.com.om/imgres",
- "google.com.pa/imgres",
- "google.com.pe/imgres",
- "google.com.ph/imgres",
- "google.com.pk/imgres",
- "google.com.pr/imgres",
- "google.com.py/imgres",
- "google.com.qa/imgres",
- "google.com.sa/imgres",
- "google.com.sb/imgres",
- "google.com.sg/imgres",
- "google.com.sl/imgres",
- "google.com.sv/imgres",
- "google.com.tj/imgres",
- "google.com.tn/imgres",
- "google.com.tr/imgres",
- "google.com.tw/imgres",
- "google.com.ua/imgres",
- "google.com.uy/imgres",
- "google.com.vc/imgres",
- "google.com.vn/imgres",
- "google.cv/imgres",
- "google.cz/imgres",
- "google.de/imgres",
- "google.dj/imgres",
- "google.dk/imgres",
- "google.dm/imgres",
- "google.dz/imgres",
- "google.ee/imgres",
- "google.es/imgres",
- "google.fi/imgres",
- "google.fm/imgres",
- "google.fr/imgres",
- "google.ga/imgres",
- "google.gd/imgres",
- "google.ge/imgres",
- "google.gf/imgres",
- "google.gg/imgres",
- "google.gl/imgres",
- "google.gm/imgres",
- "google.gp/imgres",
- "google.gr/imgres",
- "google.gy/imgres",
- "google.hn/imgres",
- "google.hr/imgres",
- "google.ht/imgres",
- "google.hu/imgres",
- "google.ie/imgres",
- "google.im/imgres",
- "google.io/imgres",
- "google.iq/imgres",
- "google.is/imgres",
- "google.it/imgres",
- "google.it.ao/imgres",
- "google.je/imgres",
- "google.jo/imgres",
- "google.kg/imgres",
- "google.ki/imgres",
- "google.kz/imgres",
- "google.la/imgres",
- "google.li/imgres",
- "google.lk/imgres",
- "google.lt/imgres",
- "google.lu/imgres",
- "google.lv/imgres",
- "google.md/imgres",
- "google.me/imgres",
- "google.mg/imgres",
- "google.mk/imgres",
- "google.ml/imgres",
- "google.mn/imgres",
- "google.ms/imgres",
- "google.mu/imgres",
- "google.mv/imgres",
- "google.mw/imgres",
- "google.ne/imgres",
- "google.nl/imgres",
- "google.no/imgres",
- "google.nr/imgres",
- "google.nu/imgres",
- "google.pl/imgres",
- "google.pn/imgres",
- "google.ps/imgres",
- "google.pt/imgres",
- "google.ro/imgres",
- "google.rs/imgres",
- "google.ru/imgres",
- "google.rw/imgres",
- "google.sc/imgres",
- "google.se/imgres",
- "google.sh/imgres",
- "google.si/imgres",
- "google.sk/imgres",
- "google.sm/imgres",
- "google.sn/imgres",
- "google.so/imgres",
- "google.st/imgres",
- "google.td/imgres",
- "google.tg/imgres",
- "google.tk/imgres",
- "google.tl/imgres",
- "google.tm/imgres",
- "google.to/imgres",
- "google.tt/imgres",
- "google.us/imgres",
- "google.vg/imgres",
- "google.vu/imgres",
- "images.google.ws",
- "images.google.ac",
- "images.google.ad",
- "images.google.ae",
- "images.google.am",
- "images.google.as",
- "images.google.at",
- "images.google.az",
- "images.google.ba",
- "images.google.be",
- "images.google.bf",
- "images.google.bg",
- "images.google.bi",
- "images.google.bj",
- "images.google.bs",
- "images.google.by",
- "images.google.ca",
- "images.google.cat",
- "images.google.cc",
- "images.google.cd",
- "images.google.cf",
- "images.google.cg",
- "images.google.ch",
- "images.google.ci",
- "images.google.cl",
- "images.google.cm",
- "images.google.cn",
- "images.google.co.bw",
- "images.google.co.ck",
- "images.google.co.cr",
- "images.google.co.id",
- "images.google.co.il",
- "images.google.co.in",
- "images.google.co.jp",
- "images.google.co.ke",
- "images.google.co.kr",
- "images.google.co.ls",
- "images.google.co.ma",
- "images.google.co.mz",
- "images.google.co.nz",
- "images.google.co.th",
- "images.google.co.tz",
- "images.google.co.ug",
- "images.google.co.uk",
- "images.google.co.uz",
- "images.google.co.ve",
- "images.google.co.vi",
- "images.google.co.za",
- "images.google.co.zm",
- "images.google.co.zw",
- "images.google.com",
- "images.google.com.af",
- "images.google.com.ag",
- "images.google.com.ai",
- "images.google.com.ar",
- "images.google.com.au",
- "images.google.com.bd",
- "images.google.com.bh",
- "images.google.com.bn",
- "images.google.com.bo",
- "images.google.com.br",
- "images.google.com.by",
- "images.google.com.bz",
- "images.google.com.co",
- "images.google.com.cu",
- "images.google.com.cy",
- "images.google.com.do",
- "images.google.com.ec",
- "images.google.com.eg",
- "images.google.com.et",
- "images.google.com.fj",
- "images.google.com.gh",
- "images.google.com.gi",
- "images.google.com.gt",
- "images.google.com.hk",
- "images.google.com.jm",
- "images.google.com.kh",
- "images.google.com.kh",
- "images.google.com.kw",
- "images.google.com.lb",
- "images.google.com.lc",
- "images.google.com.ly",
- "images.google.com.mt",
- "images.google.com.mx",
- "images.google.com.my",
- "images.google.com.na",
- "images.google.com.nf",
- "images.google.com.ng",
- "images.google.com.ni",
- "images.google.com.np",
- "images.google.com.om",
- "images.google.com.pa",
- "images.google.com.pe",
- "images.google.com.ph",
- "images.google.com.pk",
- "images.google.com.pr",
- "images.google.com.py",
- "images.google.com.qa",
- "images.google.com.sa",
- "images.google.com.sb",
- "images.google.com.sg",
- "images.google.com.sl",
- "images.google.com.sv",
- "images.google.com.tj",
- "images.google.com.tn",
- "images.google.com.tr",
- "images.google.com.tw",
- "images.google.com.ua",
- "images.google.com.uy",
- "images.google.com.vc",
- "images.google.com.vn",
- "images.google.cv",
- "images.google.cz",
- "images.google.de",
- "images.google.dj",
- "images.google.dk",
- "images.google.dm",
- "images.google.dz",
- "images.google.ee",
- "images.google.es",
- "images.google.fi",
- "images.google.fm",
- "images.google.fr",
- "images.google.ga",
- "images.google.gd",
- "images.google.ge",
- "images.google.gf",
- "images.google.gg",
- "images.google.gl",
- "images.google.gm",
- "images.google.gp",
- "images.google.gr",
- "images.google.gy",
- "images.google.hn",
- "images.google.hr",
- "images.google.ht",
- "images.google.hu",
- "images.google.ie",
- "images.google.im",
- "images.google.io",
- "images.google.iq",
- "images.google.is",
- "images.google.it",
- "images.google.it.ao",
- "images.google.je",
- "images.google.jo",
- "images.google.kg",
- "images.google.ki",
- "images.google.kz",
- "images.google.la",
- "images.google.li",
- "images.google.lk",
- "images.google.lt",
- "images.google.lu",
- "images.google.lv",
- "images.google.md",
- "images.google.me",
- "images.google.mg",
- "images.google.mk",
- "images.google.ml",
- "images.google.mn",
- "images.google.ms",
- "images.google.mu",
- "images.google.mv",
- "images.google.mw",
- "images.google.ne",
- "images.google.nl",
- "images.google.no",
- "images.google.nr",
- "images.google.nu",
- "images.google.pl",
- "images.google.pn",
- "images.google.ps",
- "images.google.pt",
- "images.google.ro",
- "images.google.rs",
- "images.google.ru",
- "images.google.rw",
- "images.google.sc",
- "images.google.se",
- "images.google.sh",
- "images.google.si",
- "images.google.sk",
- "images.google.sm",
- "images.google.sn",
- "images.google.so",
- "images.google.st",
- "images.google.td",
- "images.google.tg",
- "images.google.tk",
- "images.google.tl",
- "images.google.tm",
- "images.google.to",
- "images.google.tt",
- "images.google.us",
- "images.google.vg",
- "images.google.vu",
- "images.google.ws"
- ],
- "parameters": [
- "q"
- ]
- },
- "ABCs\u00f8k": {
- "domains": [
- "abcsolk.no",
- "verden.abcsok.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Google Product Search": {
- "domains": [
- "google.ac/products",
- "google.ad/products",
- "google.ae/products",
- "google.am/products",
- "google.as/products",
- "google.at/products",
- "google.az/products",
- "google.ba/products",
- "google.be/products",
- "google.bf/products",
- "google.bg/products",
- "google.bi/products",
- "google.bj/products",
- "google.bs/products",
- "google.by/products",
- "google.ca/products",
- "google.cat/products",
- "google.cc/products",
- "google.cd/products",
- "google.cf/products",
- "google.cg/products",
- "google.ch/products",
- "google.ci/products",
- "google.cl/products",
- "google.cm/products",
- "google.cn/products",
- "google.co.bw/products",
- "google.co.ck/products",
- "google.co.cr/products",
- "google.co.id/products",
- "google.co.il/products",
- "google.co.in/products",
- "google.co.jp/products",
- "google.co.ke/products",
- "google.co.kr/products",
- "google.co.ls/products",
- "google.co.ma/products",
- "google.co.mz/products",
- "google.co.nz/products",
- "google.co.th/products",
- "google.co.tz/products",
- "google.co.ug/products",
- "google.co.uk/products",
- "google.co.uz/products",
- "google.co.ve/products",
- "google.co.vi/products",
- "google.co.za/products",
- "google.co.zm/products",
- "google.co.zw/products",
- "google.com/products",
- "google.com.af/products",
- "google.com.ag/products",
- "google.com.ai/products",
- "google.com.ar/products",
- "google.com.au/products",
- "google.com.bd/products",
- "google.com.bh/products",
- "google.com.bn/products",
- "google.com.bo/products",
- "google.com.br/products",
- "google.com.by/products",
- "google.com.bz/products",
- "google.com.co/products",
- "google.com.cu/products",
- "google.com.cy/products",
- "google.com.do/products",
- "google.com.ec/products",
- "google.com.eg/products",
- "google.com.et/products",
- "google.com.fj/products",
- "google.com.gh/products",
- "google.com.gi/products",
- "google.com.gt/products",
- "google.com.hk/products",
- "google.com.jm/products",
- "google.com.kh/products",
- "google.com.kh/products",
- "google.com.kw/products",
- "google.com.lb/products",
- "google.com.lc/products",
- "google.com.ly/products",
- "google.com.mt/products",
- "google.com.mx/products",
- "google.com.my/products",
- "google.com.na/products",
- "google.com.nf/products",
- "google.com.ng/products",
- "google.com.ni/products",
- "google.com.np/products",
- "google.com.om/products",
- "google.com.pa/products",
- "google.com.pe/products",
- "google.com.ph/products",
- "google.com.pk/products",
- "google.com.pr/products",
- "google.com.py/products",
- "google.com.qa/products",
- "google.com.sa/products",
- "google.com.sb/products",
- "google.com.sg/products",
- "google.com.sl/products",
- "google.com.sv/products",
- "google.com.tj/products",
- "google.com.tn/products",
- "google.com.tr/products",
- "google.com.tw/products",
- "google.com.ua/products",
- "google.com.uy/products",
- "google.com.vc/products",
- "google.com.vn/products",
- "google.cv/products",
- "google.cz/products",
- "google.de/products",
- "google.dj/products",
- "google.dk/products",
- "google.dm/products",
- "google.dz/products",
- "google.ee/products",
- "google.es/products",
- "google.fi/products",
- "google.fm/products",
- "google.fr/products",
- "google.ga/products",
- "google.gd/products",
- "google.ge/products",
- "google.gf/products",
- "google.gg/products",
- "google.gl/products",
- "google.gm/products",
- "google.gp/products",
- "google.gr/products",
- "google.gy/products",
- "google.hn/products",
- "google.hr/products",
- "google.ht/products",
- "google.hu/products",
- "google.ie/products",
- "google.im/products",
- "google.io/products",
- "google.iq/products",
- "google.is/products",
- "google.it/products",
- "google.it.ao/products",
- "google.je/products",
- "google.jo/products",
- "google.kg/products",
- "google.ki/products",
- "google.kz/products",
- "google.la/products",
- "google.li/products",
- "google.lk/products",
- "google.lt/products",
- "google.lu/products",
- "google.lv/products",
- "google.md/products",
- "google.me/products",
- "google.mg/products",
- "google.mk/products",
- "google.ml/products",
- "google.mn/products",
- "google.ms/products",
- "google.mu/products",
- "google.mv/products",
- "google.mw/products",
- "google.ne/products",
- "google.nl/products",
- "google.no/products",
- "google.nr/products",
- "google.nu/products",
- "google.pl/products",
- "google.pn/products",
- "google.ps/products",
- "google.pt/products",
- "google.ro/products",
- "google.rs/products",
- "google.ru/products",
- "google.rw/products",
- "google.sc/products",
- "google.se/products",
- "google.sh/products",
- "google.si/products",
- "google.sk/products",
- "google.sm/products",
- "google.sn/products",
- "google.so/products",
- "google.st/products",
- "google.td/products",
- "google.tg/products",
- "google.tk/products",
- "google.tl/products",
- "google.tm/products",
- "google.to/products",
- "google.tt/products",
- "google.us/products",
- "google.vg/products",
- "google.vu/products",
- "google.ws/products",
- "www.google.ac/products",
- "www.google.ad/products",
- "www.google.ae/products",
- "www.google.am/products",
- "www.google.as/products",
- "www.google.at/products",
- "www.google.az/products",
- "www.google.ba/products",
- "www.google.be/products",
- "www.google.bf/products",
- "www.google.bg/products",
- "www.google.bi/products",
- "www.google.bj/products",
- "www.google.bs/products",
- "www.google.by/products",
- "www.google.ca/products",
- "www.google.cat/products",
- "www.google.cc/products",
- "www.google.cd/products",
- "www.google.cf/products",
- "www.google.cg/products",
- "www.google.ch/products",
- "www.google.ci/products",
- "www.google.cl/products",
- "www.google.cm/products",
- "www.google.cn/products",
- "www.google.co.bw/products",
- "www.google.co.ck/products",
- "www.google.co.cr/products",
- "www.google.co.id/products",
- "www.google.co.il/products",
- "www.google.co.in/products",
- "www.google.co.jp/products",
- "www.google.co.ke/products",
- "www.google.co.kr/products",
- "www.google.co.ls/products",
- "www.google.co.ma/products",
- "www.google.co.mz/products",
- "www.google.co.nz/products",
- "www.google.co.th/products",
- "www.google.co.tz/products",
- "www.google.co.ug/products",
- "www.google.co.uk/products",
- "www.google.co.uz/products",
- "www.google.co.ve/products",
- "www.google.co.vi/products",
- "www.google.co.za/products",
- "www.google.co.zm/products",
- "www.google.co.zw/products",
- "www.google.com/products",
- "www.google.com.af/products",
- "www.google.com.ag/products",
- "www.google.com.ai/products",
- "www.google.com.ar/products",
- "www.google.com.au/products",
- "www.google.com.bd/products",
- "www.google.com.bh/products",
- "www.google.com.bn/products",
- "www.google.com.bo/products",
- "www.google.com.br/products",
- "www.google.com.by/products",
- "www.google.com.bz/products",
- "www.google.com.co/products",
- "www.google.com.cu/products",
- "www.google.com.cy/products",
- "www.google.com.do/products",
- "www.google.com.ec/products",
- "www.google.com.eg/products",
- "www.google.com.et/products",
- "www.google.com.fj/products",
- "www.google.com.gh/products",
- "www.google.com.gi/products",
- "www.google.com.gt/products",
- "www.google.com.hk/products",
- "www.google.com.jm/products",
- "www.google.com.kh/products",
- "www.google.com.kh/products",
- "www.google.com.kw/products",
- "www.google.com.lb/products",
- "www.google.com.lc/products",
- "www.google.com.ly/products",
- "www.google.com.mt/products",
- "www.google.com.mx/products",
- "www.google.com.my/products",
- "www.google.com.na/products",
- "www.google.com.nf/products",
- "www.google.com.ng/products",
- "www.google.com.ni/products",
- "www.google.com.np/products",
- "www.google.com.om/products",
- "www.google.com.pa/products",
- "www.google.com.pe/products",
- "www.google.com.ph/products",
- "www.google.com.pk/products",
- "www.google.com.pr/products",
- "www.google.com.py/products",
- "www.google.com.qa/products",
- "www.google.com.sa/products",
- "www.google.com.sb/products",
- "www.google.com.sg/products",
- "www.google.com.sl/products",
- "www.google.com.sv/products",
- "www.google.com.tj/products",
- "www.google.com.tn/products",
- "www.google.com.tr/products",
- "www.google.com.tw/products",
- "www.google.com.ua/products",
- "www.google.com.uy/products",
- "www.google.com.vc/products",
- "www.google.com.vn/products",
- "www.google.cv/products",
- "www.google.cz/products",
- "www.google.de/products",
- "www.google.dj/products",
- "www.google.dk/products",
- "www.google.dm/products",
- "www.google.dz/products",
- "www.google.ee/products",
- "www.google.es/products",
- "www.google.fi/products",
- "www.google.fm/products",
- "www.google.fr/products",
- "www.google.ga/products",
- "www.google.gd/products",
- "www.google.ge/products",
- "www.google.gf/products",
- "www.google.gg/products",
- "www.google.gl/products",
- "www.google.gm/products",
- "www.google.gp/products",
- "www.google.gr/products",
- "www.google.gy/products",
- "www.google.hn/products",
- "www.google.hr/products",
- "www.google.ht/products",
- "www.google.hu/products",
- "www.google.ie/products",
- "www.google.im/products",
- "www.google.io/products",
- "www.google.iq/products",
- "www.google.is/products",
- "www.google.it/products",
- "www.google.it.ao/products",
- "www.google.je/products",
- "www.google.jo/products",
- "www.google.kg/products",
- "www.google.ki/products",
- "www.google.kz/products",
- "www.google.la/products",
- "www.google.li/products",
- "www.google.lk/products",
- "www.google.lt/products",
- "www.google.lu/products",
- "www.google.lv/products",
- "www.google.md/products",
- "www.google.me/products",
- "www.google.mg/products",
- "www.google.mk/products",
- "www.google.ml/products",
- "www.google.mn/products",
- "www.google.ms/products",
- "www.google.mu/products",
- "www.google.mv/products",
- "www.google.mw/products",
- "www.google.ne/products",
- "www.google.nl/products",
- "www.google.no/products",
- "www.google.nr/products",
- "www.google.nu/products",
- "www.google.pl/products",
- "www.google.pn/products",
- "www.google.ps/products",
- "www.google.pt/products",
- "www.google.ro/products",
- "www.google.rs/products",
- "www.google.ru/products",
- "www.google.rw/products",
- "www.google.sc/products",
- "www.google.se/products",
- "www.google.sh/products",
- "www.google.si/products",
- "www.google.sk/products",
- "www.google.sm/products",
- "www.google.sn/products",
- "www.google.so/products",
- "www.google.st/products",
- "www.google.td/products",
- "www.google.tg/products",
- "www.google.tk/products",
- "www.google.tl/products",
- "www.google.tm/products",
- "www.google.to/products",
- "www.google.tt/products",
- "www.google.us/products",
- "www.google.vg/products",
- "www.google.vu/products",
- "www.google.ws/products"
- ],
- "parameters": [
- "q"
- ]
- },
- "DasOertliche": {
- "domains": [
- "www.dasoertliche.de"
- ],
- "parameters": [
- "kw"
- ]
- },
- "InfoSpace": {
- "domains": [
- "infospace.com",
- "dogpile.com",
- "www.dogpile.com",
- "metacrawler.com",
- "webfetch.com",
- "webcrawler.com",
- "search.kiwee.com",
- "isearch.babylon.com",
- "start.facemoods.com",
- "search.magnetic.com",
- "search.searchcompletion.com",
- "clusty.com"
- ],
- "parameters": [
- "q",
- "s"
- ]
- },
- "Weborama": {
- "domains": [
- "www.weborama.com"
- ],
- "parameters": [
- "QUERY"
- ]
- },
- "Bluewin": {
- "domains": [
- "search.bluewin.ch"
- ],
- "parameters": [
- "searchTerm"
- ]
- },
- "Neti": {
- "domains": [
- "www.neti.ee"
- ],
- "parameters": [
- "query"
- ]
- },
- "Winamp": {
- "domains": [
- "search.winamp.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Nigma": {
- "domains": [
- "nigma.ru"
- ],
- "parameters": [
- "s"
- ]
- },
- "Yahoo! Images": {
- "domains": [
- "image.yahoo.cn",
- "images.search.yahoo.com"
- ],
- "parameters": [
- "p",
- "q"
- ]
- },
- "Exalead": {
- "domains": [
- "www.exalead.fr",
- "www.exalead.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Teoma": {
- "domains": [
- "www.teoma.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Needtofind": {
- "domains": [
- "ko.search.need2find.com"
- ],
- "parameters": [
- "searchfor"
- ]
- },
- "Looksmart": {
- "domains": [
- "www.looksmart.com"
- ],
- "parameters": [
- "key"
- ]
- },
- "Wirtualna Polska": {
- "domains": [
- "szukaj.wp.pl"
- ],
- "parameters": [
- "szukaj"
- ]
- },
- "Toolbarhome": {
- "domains": [
- "www.toolbarhome.com",
- "vshare.toolbarhome.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Searchalot": {
- "domains": [
- "searchalot.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yandex": {
- "domains": [
- "yandex.ru",
- "yandex.ua",
- "yandex.com",
- "yandex.by",
- "www.yandex.ru",
- "www.yandex.ua",
- "www.yandex.com",
- "www.yandex.by"
- ],
- "parameters": [
- "text"
- ]
- },
- "canoe.ca": {
- "domains": [
- "web.canoe.ca"
- ],
- "parameters": [
- "q"
- ]
- },
- "Compuserve": {
- "domains": [
- "websearch.cs.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Blogdigger": {
- "domains": [
- "www.blogdigger.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Startpagina": {
- "domains": [
- "startgoogle.startpagina.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "eo": {
- "domains": [
- "eo.st"
- ],
- "parameters": [
- "x_query"
- ]
- },
- "Zhongsou": {
- "domains": [
- "p.zhongsou.com"
- ],
- "parameters": [
- "w"
- ]
- },
- "La Toile Du Quebec Via Google": {
- "domains": [
- "www.toile.com",
- "web.toile.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Paperball": {
- "domains": [
- "www.paperball.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Jungle Spider": {
- "domains": [
- "www.jungle-spider.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "PeoplePC": {
- "domains": [
- "search.peoplepc.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "MetaCrawler.de": {
- "domains": [
- "s1.metacrawler.de",
- "s2.metacrawler.de",
- "s3.metacrawler.de"
- ],
- "parameters": [
- "qry"
- ]
- },
- "Orange": {
- "domains": [
- "busca.orange.es",
- "search.orange.co.uk"
- ],
- "parameters": [
- "q"
- ]
- },
- "Gule Sider": {
- "domains": [
- "www.gulesider.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Francite": {
- "domains": [
- "recherche.francite.com"
- ],
- "parameters": [
- "name"
- ]
- },
- "Ask Toolbar": {
- "domains": [
- "search.tb.ask.com"
- ],
- "parameters": [
- "searchfor"
- ]
- },
- "Trusted-Search": {
- "domains": [
- "www.trusted--search.com"
- ],
- "parameters": [
- "w"
- ]
- },
- "goo": {
- "domains": [
- "search.goo.ne.jp",
- "ocnsearch.goo.ne.jp"
- ],
- "parameters": [
- "MT"
- ]
- },
- "Fast Browser Search": {
- "domains": [
- "www.fastbrowsersearch.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Blogpulse": {
- "domains": [
- "www.blogpulse.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Volny": {
- "domains": [
- "web.volny.cz"
- ],
- "parameters": [
- "search"
- ]
- },
- "Icerockeet": {
- "domains": [
- "blogs.icerocket.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Terra": {
- "domains": [
- "buscador.terra.es",
- "buscador.terra.cl",
- "buscador.terra.com.br"
- ],
- "parameters": [
- "query"
- ]
- },
- "Amazon": {
- "domains": [
- "amazon.com",
- "www.amazon.com"
- ],
- "parameters": [
- "keywords"
- ]
- },
- "Onet": {
- "domains": [
- "szukaj.onet.pl"
- ],
- "parameters": [
- "qt"
- ]
- },
- "Digg": {
- "domains": [
- "digg.com"
- ],
- "parameters": [
- "s"
- ]
- },
- "Abacho": {
- "domains": [
- "www.abacho.de",
- "www.abacho.com",
- "www.abacho.co.uk",
- "www.se.abacho.com",
- "www.tr.abacho.com",
- "www.abacho.at",
- "www.abacho.fr",
- "www.abacho.es",
- "www.abacho.ch",
- "www.abacho.it"
- ],
- "parameters": [
- "q"
- ]
- },
- "maailm": {
- "domains": [
- "www.maailm.com"
- ],
- "parameters": [
- "tekst"
- ]
- },
- "Flix": {
- "domains": [
- "www.flix.de"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Suchnase": {
- "domains": [
- "www.suchnase.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Freenet": {
- "domains": [
- "suche.freenet.de"
- ],
- "parameters": [
- "query",
- "Keywords"
- ]
- },
- "Poisk.ru": {
- "domains": [
- "www.plazoo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Sharelook": {
- "domains": [
- "www.sharelook.fr"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Najdi": {
- "domains": [
- "www.najdi.si"
- ],
- "parameters": [
- "q"
- ]
- },
- "Picsearch": {
- "domains": [
- "www.picsearch.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Mail.ru": {
- "domains": [
- "go.mail.ru"
- ],
- "parameters": [
- "q"
- ]
- },
- "Alexa": {
- "domains": [
- "alexa.com",
- "search.toolbars.alexa.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Metager": {
- "domains": [
- "meta.rrzn.uni-hannover.de",
- "www.metager.de"
- ],
- "parameters": [
- "eingabe"
- ]
- },
- "Technorati": {
- "domains": [
- "technorati.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Globososo": {
- "domains": [
- "searches.globososo.com",
- "search.globososo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "WWW": {
- "domains": [
- "search.www.ee"
- ],
- "parameters": [
- "query"
- ]
- },
- "Trouvez.com": {
- "domains": [
- "www.trouvez.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "IXquick": {
- "domains": [
- "ixquick.com",
- "www.eu.ixquick.com",
- "ixquick.de",
- "www.ixquick.de",
- "us.ixquick.com",
- "s1.us.ixquick.com",
- "s2.us.ixquick.com",
- "s3.us.ixquick.com",
- "s4.us.ixquick.com",
- "s5.us.ixquick.com",
- "eu.ixquick.com",
- "s8-eu.ixquick.com",
- "s1-eu.ixquick.de"
- ],
- "parameters": [
- "query"
- ]
- },
- "Naver Images": {
- "domains": [
- "image.search.naver.com",
- "imagesearch.naver.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Zapmeta": {
- "domains": [
- "www.zapmeta.com",
- "www.zapmeta.nl",
- "www.zapmeta.de",
- "uk.zapmeta.com"
- ],
- "parameters": [
- "q",
- "query"
- ]
- },
- "Yippy": {
- "domains": [
- "search.yippy.com"
- ],
- "parameters": [
- "q",
- "query"
- ]
- },
- "Gomeo": {
- "domains": [
- "www.gomeo.com"
- ],
- "parameters": [
- "Keywords"
- ]
- },
- "Walhello": {
- "domains": [
- "www.walhello.info",
- "www.walhello.com",
- "www.walhello.de",
- "www.walhello.nl"
- ],
- "parameters": [
- "key"
- ]
- },
- "Meta": {
- "domains": [
- "meta.ua"
- ],
- "parameters": [
- "q"
- ]
- },
- "Skynet": {
- "domains": [
- "www.skynet.be"
- ],
- "parameters": [
- "q"
- ]
- },
- "Searchy": {
- "domains": [
- "www.searchy.co.uk"
- ],
- "parameters": [
- "q"
- ]
- },
- "Findwide": {
- "domains": [
- "search.findwide.com"
- ],
- "parameters": [
- "k"
- ]
- },
- "WebSearch": {
- "domains": [
- "www.websearch.com"
- ],
- "parameters": [
- "qkw",
- "q"
- ]
- },
- "Rambler": {
- "domains": [
- "nova.rambler.ru"
- ],
- "parameters": [
- "query",
- "words"
- ]
- },
- "Latne": {
- "domains": [
- "www.latne.lv"
- ],
- "parameters": [
- "q"
- ]
- },
- "MySearch": {
- "domains": [
- "www.mysearch.com",
- "ms114.mysearch.com",
- "ms146.mysearch.com",
- "kf.mysearch.myway.com",
- "ki.mysearch.myway.com",
- "search.myway.com",
- "search.mywebsearch.com"
- ],
- "parameters": [
- "searchfor",
- "searchFor"
- ]
- },
- "Cuil": {
- "domains": [
- "www.cuil.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Tixuma": {
- "domains": [
- "www.tixuma.de"
- ],
- "parameters": [
- "sc"
- ]
- },
- "Sapo": {
- "domains": [
- "pesquisa.sapo.pt"
- ],
- "parameters": [
- "q"
- ]
- },
- "Gnadenmeer": {
- "domains": [
- "www.gnadenmeer.de"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Arcor": {
- "domains": [
- "www.arcor.de"
- ],
- "parameters": [
- "Keywords"
- ]
- },
- "Naver": {
- "domains": [
- "search.naver.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Zoeken": {
- "domains": [
- "www.zoeken.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Startsiden": {
- "domains": [
- "www.startsiden.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yam": {
- "domains": [
- "search.yam.com"
- ],
- "parameters": [
- "k"
- ]
- },
- "Eniro": {
- "domains": [
- "www.eniro.se"
- ],
- "parameters": [
- "q",
- "search_word"
- ]
- },
- "APOLL07": {
- "domains": [
- "apollo7.de"
- ],
- "parameters": [
- "query"
- ]
- },
- "Biglobe": {
- "domains": [
- "cgi.search.biglobe.ne.jp"
- ],
- "parameters": [
- "q"
- ]
- },
- "Mozbot": {
- "domains": [
- "www.mozbot.fr",
- "www.mozbot.co.uk",
- "www.mozbot.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "ICQ": {
- "domains": [
- "www.icq.com",
- "search.icq.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Baidu": {
- "domains": [
- "www.baidu.com",
- "www1.baidu.com",
- "zhidao.baidu.com",
- "tieba.baidu.com",
- "news.baidu.com",
- "web.gougou.com"
- ],
- "parameters": [
- "wd",
- "word",
- "kw",
- "k"
- ]
- },
- "Conduit": {
- "domains": [
- "search.conduit.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Vindex": {
- "domains": [
- "www.vindex.nl",
- "search.vindex.nl"
- ],
- "parameters": [
- "search_for"
- ]
- },
- "Babylon": {
- "domains": [
- "search.babylon.com",
- "searchassist.babylon.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "TrovaRapido": {
- "domains": [
- "www.trovarapido.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Suchmaschine.com": {
- "domains": [
- "www.suchmaschine.com"
- ],
- "parameters": [
- "suchstr"
- ]
- },
- "Lycos": {
- "domains": [
- "search.lycos.com",
- "www.lycos.com",
- "lycos.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Vinden": {
- "domains": [
- "www.vinden.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Altavista": {
- "domains": [
- "www.altavista.com",
- "search.altavista.com",
- "listings.altavista.com",
- "altavista.de",
- "altavista.fr",
- "be-nl.altavista.com",
- "be-fr.altavista.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "dmoz": {
- "domains": [
- "dmoz.org",
- "editors.dmoz.org"
- ],
- "parameters": [
- "q"
- ]
- },
- "Ecosia": {
- "domains": [
- "ecosia.org"
- ],
- "parameters": [
- "q"
- ]
- },
- "Maxwebsearch": {
- "domains": [
- "maxwebsearch.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Euroseek": {
- "domains": [
- "www.euroseek.com"
- ],
- "parameters": [
- "string"
- ]
- },
- "Bing": {
- "domains": [
- "bing.com",
- "www.bing.com",
- "msnbc.msn.com",
- "dizionario.it.msn.com",
- "cc.bingj.com",
- "m.bing.com"
- ],
- "parameters": [
- "q",
- "Q"
- ]
- },
- "X-recherche": {
- "domains": [
- "www.x-recherche.com"
- ],
- "parameters": [
- "MOTS"
- ]
- },
- "Yandex Images": {
- "domains": [
- "images.yandex.ru",
- "images.yandex.ua",
- "images.yandex.com"
- ],
- "parameters": [
- "text"
- ]
- },
- "GMX": {
- "domains": [
- "suche.gmx.net"
- ],
- "parameters": [
- "su"
- ]
- },
- "Daemon search": {
- "domains": [
- "daemon-search.com",
- "my.daemon-search.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Jungle Key": {
- "domains": [
- "junglekey.com",
- "junglekey.fr"
- ],
- "parameters": [
- "query"
- ]
- },
- "Firstfind": {
- "domains": [
- "www.firstsfind.com"
- ],
- "parameters": [
- "qry"
- ]
- },
- "Crawler": {
- "domains": [
- "www.crawler.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Holmes": {
- "domains": [
- "holmes.ge"
- ],
- "parameters": [
- "q"
- ]
- },
- "Charter": {
- "domains": [
- "www.charter.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Ilse": {
- "domains": [
- "www.ilse.nl"
- ],
- "parameters": [
- "search_for"
- ]
- },
- "earthlink": {
- "domains": [
- "search.earthlink.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Qualigo": {
- "domains": [
- "www.qualigo.at",
- "www.qualigo.ch",
- "www.qualigo.de",
- "www.qualigo.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "El Mundo": {
- "domains": [
- "ariadna.elmundo.es"
- ],
- "parameters": [
- "q"
- ]
- },
- "Metager2": {
- "domains": [
- "metager2.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Forestle": {
- "domains": [
- "forestle.org",
- "www.forestle.org",
- "forestle.mobi"
- ],
- "parameters": [
- "q"
- ]
- },
- "Search.ch": {
- "domains": [
- "www.search.ch"
- ],
- "parameters": [
- "q"
- ]
- },
- "Meinestadt": {
- "domains": [
- "www.meinestadt.de"
- ],
- "parameters": [
- "words"
- ]
- },
- "Freshweather": {
- "domains": [
- "www.fresh-weather.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "AllTheWeb": {
- "domains": [
- "www.alltheweb.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Snapdo": {
- "domains": [
- "search.snapdo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Zoek": {
- "domains": [
- "www3.zoek.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Daum": {
- "domains": [
- "search.daum.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Marktplaats": {
- "domains": [
- "www.marktplaats.nl"
- ],
- "parameters": [
- "query"
- ]
- },
- "suche.info": {
- "domains": [
- "suche.info"
- ],
- "parameters": [
- "q"
- ]
- },
- "Google News": {
- "domains": [
- "news.google.ac",
- "news.google.ad",
- "news.google.ae",
- "news.google.am",
- "news.google.as",
- "news.google.at",
- "news.google.az",
- "news.google.ba",
- "news.google.be",
- "news.google.bf",
- "news.google.bg",
- "news.google.bi",
- "news.google.bj",
- "news.google.bs",
- "news.google.by",
- "news.google.ca",
- "news.google.cat",
- "news.google.cc",
- "news.google.cd",
- "news.google.cf",
- "news.google.cg",
- "news.google.ch",
- "news.google.ci",
- "news.google.cl",
- "news.google.cm",
- "news.google.cn",
- "news.google.co.bw",
- "news.google.co.ck",
- "news.google.co.cr",
- "news.google.co.id",
- "news.google.co.il",
- "news.google.co.in",
- "news.google.co.jp",
- "news.google.co.ke",
- "news.google.co.kr",
- "news.google.co.ls",
- "news.google.co.ma",
- "news.google.co.mz",
- "news.google.co.nz",
- "news.google.co.th",
- "news.google.co.tz",
- "news.google.co.ug",
- "news.google.co.uk",
- "news.google.co.uz",
- "news.google.co.ve",
- "news.google.co.vi",
- "news.google.co.za",
- "news.google.co.zm",
- "news.google.co.zw",
- "news.google.com",
- "news.google.com.af",
- "news.google.com.ag",
- "news.google.com.ai",
- "news.google.com.ar",
- "news.google.com.au",
- "news.google.com.bd",
- "news.google.com.bh",
- "news.google.com.bn",
- "news.google.com.bo",
- "news.google.com.br",
- "news.google.com.by",
- "news.google.com.bz",
- "news.google.com.co",
- "news.google.com.cu",
- "news.google.com.cy",
- "news.google.com.do",
- "news.google.com.ec",
- "news.google.com.eg",
- "news.google.com.et",
- "news.google.com.fj",
- "news.google.com.gh",
- "news.google.com.gi",
- "news.google.com.gt",
- "news.google.com.hk",
- "news.google.com.jm",
- "news.google.com.kh",
- "news.google.com.kh",
- "news.google.com.kw",
- "news.google.com.lb",
- "news.google.com.lc",
- "news.google.com.ly",
- "news.google.com.mt",
- "news.google.com.mx",
- "news.google.com.my",
- "news.google.com.na",
- "news.google.com.nf",
- "news.google.com.ng",
- "news.google.com.ni",
- "news.google.com.np",
- "news.google.com.om",
- "news.google.com.pa",
- "news.google.com.pe",
- "news.google.com.ph",
- "news.google.com.pk",
- "news.google.com.pr",
- "news.google.com.py",
- "news.google.com.qa",
- "news.google.com.sa",
- "news.google.com.sb",
- "news.google.com.sg",
- "news.google.com.sl",
- "news.google.com.sv",
- "news.google.com.tj",
- "news.google.com.tn",
- "news.google.com.tr",
- "news.google.com.tw",
- "news.google.com.ua",
- "news.google.com.uy",
- "news.google.com.vc",
- "news.google.com.vn",
- "news.google.cv",
- "news.google.cz",
- "news.google.de",
- "news.google.dj",
- "news.google.dk",
- "news.google.dm",
- "news.google.dz",
- "news.google.ee",
- "news.google.es",
- "news.google.fi",
- "news.google.fm",
- "news.google.fr",
- "news.google.ga",
- "news.google.gd",
- "news.google.ge",
- "news.google.gf",
- "news.google.gg",
- "news.google.gl",
- "news.google.gm",
- "news.google.gp",
- "news.google.gr",
- "news.google.gy",
- "news.google.hn",
- "news.google.hr",
- "news.google.ht",
- "news.google.hu",
- "news.google.ie",
- "news.google.im",
- "news.google.io",
- "news.google.iq",
- "news.google.is",
- "news.google.it",
- "news.google.it.ao",
- "news.google.je",
- "news.google.jo",
- "news.google.kg",
- "news.google.ki",
- "news.google.kz",
- "news.google.la",
- "news.google.li",
- "news.google.lk",
- "news.google.lt",
- "news.google.lu",
- "news.google.lv",
- "news.google.md",
- "news.google.me",
- "news.google.mg",
- "news.google.mk",
- "news.google.ml",
- "news.google.mn",
- "news.google.ms",
- "news.google.mu",
- "news.google.mv",
- "news.google.mw",
- "news.google.ne",
- "news.google.nl",
- "news.google.no",
- "news.google.nr",
- "news.google.nu",
- "news.google.pl",
- "news.google.pn",
- "news.google.ps",
- "news.google.pt",
- "news.google.ro",
- "news.google.rs",
- "news.google.ru",
- "news.google.rw",
- "news.google.sc",
- "news.google.se",
- "news.google.sh",
- "news.google.si",
- "news.google.sk",
- "news.google.sm",
- "news.google.sn",
- "news.google.so",
- "news.google.st",
- "news.google.td",
- "news.google.tg",
- "news.google.tk",
- "news.google.tl",
- "news.google.tm",
- "news.google.to",
- "news.google.tt",
- "news.google.us",
- "news.google.vg",
- "news.google.vu",
- "news.google.ws"
- ],
- "parameters": [
- "q"
- ]
- },
- "Zoohoo": {
- "domains": [
- "zoohoo.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Seznam": {
- "domains": [
- "search.seznam.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Online.no": {
- "domains": [
- "online.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Eurip": {
- "domains": [
- "www.eurip.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "all.by": {
- "domains": [
- "all.by"
- ],
- "parameters": [
- "query"
- ]
- },
- "Road Runner Search": {
- "domains": [
- "search.rr.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Opplysningen 1881": {
- "domains": [
- "www.1881.no"
- ],
- "parameters": [
- "Query"
- ]
- },
- "YouGoo": {
- "domains": [
- "www.yougoo.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "Bing Images": {
- "domains": [
- "bing.com/images/search",
- "www.bing.com/images/search"
- ],
- "parameters": [
- "q",
- "Q"
- ]
- },
- "Geona": {
- "domains": [
- "geona.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Nate": {
- "domains": [
- "search.nate.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "DuckDuckGo": {
- "domains": [
- "duckduckgo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Hotbot": {
- "domains": [
- "www.hotbot.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Kvasir": {
- "domains": [
- "www.kvasir.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Austronaut": {
- "domains": [
- "www2.austronaut.at",
- "www1.astronaut.at"
- ],
- "parameters": [
- "q"
- ]
- },
- "Excite": {
- "domains": [
- "search.excite.it",
- "search.excite.fr",
- "search.excite.de",
- "search.excite.co.uk",
- "serach.excite.es",
- "search.excite.nl",
- "msxml.excite.com",
- "www.excite.co.jp"
- ],
- "parameters": [
- "q",
- "search"
- ]
- },
- "qip": {
- "domains": [
- "search.qip.ru"
- ],
- "parameters": [
- "query"
- ]
- },
- "Certified-Toolbar": {
- "domains": [
- "search.certified-toolbar.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yahoo!": {
- "domains": [
- "search.yahoo.com",
- "yahoo.com",
- "ar.search.yahoo.com",
- "ar.yahoo.com",
- "au.search.yahoo.com",
- "au.yahoo.com",
- "br.search.yahoo.com",
- "br.yahoo.com",
- "cade.searchde.yahoo.com",
- "cade.yahoo.com",
- "chinese.searchinese.yahoo.com",
- "chinese.yahoo.com",
- "cn.search.yahoo.com",
- "cn.yahoo.com",
- "de.search.yahoo.com",
- "de.yahoo.com",
- "dk.search.yahoo.com",
- "dk.yahoo.com",
- "es.search.yahoo.com",
- "es.yahoo.com",
- "espanol.searchpanol.yahoo.com",
- "espanol.searchpanol.yahoo.com",
- "espanol.yahoo.com",
- "espanol.yahoo.com",
- "fr.search.yahoo.com",
- "fr.yahoo.com",
- "ie.search.yahoo.com",
- "ie.yahoo.com",
- "it.search.yahoo.com",
- "it.yahoo.com",
- "kr.search.yahoo.com",
- "kr.yahoo.com",
- "mx.search.yahoo.com",
- "mx.yahoo.com",
- "no.search.yahoo.com",
- "no.yahoo.com",
- "nz.search.yahoo.com",
- "nz.yahoo.com",
- "one.cn.yahoo.com",
- "one.searchn.yahoo.com",
- "qc.search.yahoo.com",
- "qc.search.yahoo.com",
- "qc.search.yahoo.com",
- "qc.yahoo.com",
- "qc.yahoo.com",
- "se.search.yahoo.com",
- "se.search.yahoo.com",
- "se.yahoo.com",
- "search.searcharch.yahoo.com",
- "search.yahoo.com",
- "uk.search.yahoo.com",
- "uk.yahoo.com",
- "www.yahoo.co.jp",
- "search.yahoo.co.jp",
- "www.cercato.it",
- "search.offerbox.com",
- "ys.mirostart.com"
- ],
- "parameters": [
- "p",
- "q"
- ]
- },
- "URL.ORGanizier": {
- "domains": [
- "www.url.org"
- ],
- "parameters": [
- "q"
- ]
- },
- "Witch": {
- "domains": [
- "www.witch.de"
- ],
- "parameters": [
- "search"
- ]
- },
- "Mister Wong": {
- "domains": [
- "www.mister-wong.com",
- "www.mister-wong.de"
- ],
- "parameters": [
- "Keywords"
- ]
- },
- "Aport": {
- "domains": [
- "sm.aport.ru"
- ],
- "parameters": [
- "r"
- ]
- },
- "Web.de": {
- "domains": [
- "suche.web.de"
- ],
- "parameters": [
- "su"
- ]
- },
- "Ask": {
- "domains": [
- "ask.com",
- "www.ask.com",
- "web.ask.com",
- "int.ask.com",
- "mws.ask.com",
- "uk.ask.com",
- "images.ask.com",
- "ask.reference.com",
- "www.askkids.com",
- "iwon.ask.com",
- "www.ask.co.uk",
- "www.qbyrd.com",
- "search-results.com",
- "uk.search-results.com",
- "www.search-results.com",
- "int.search-results.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Centrum": {
- "domains": [
- "serach.centrum.cz",
- "morfeo.centrum.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Everyclick": {
- "domains": [
- "www.everyclick.com"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Google Video": {
- "domains": [
- "video.google.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Delfi": {
- "domains": [
- "otsing.delfi.ee"
- ],
- "parameters": [
- "q"
- ]
- },
- "blekko": {
- "domains": [
- "blekko.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Jyxo": {
- "domains": [
- "jyxo.1188.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Kataweb": {
- "domains": [
- "www.kataweb.it"
- ],
- "parameters": [
- "q"
- ]
- },
- "uol.com.br": {
- "domains": [
- "busca.uol.com.br"
- ],
- "parameters": [
- "q"
- ]
- },
- "Arianna": {
- "domains": [
- "arianna.libero.it",
- "www.arianna.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Mamma": {
- "domains": [
- "www.mamma.com",
- "mamma75.mamma.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Yatedo": {
- "domains": [
- "www.yatedo.com",
- "www.yatedo.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "Twingly": {
- "domains": [
- "www.twingly.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Delfi latvia": {
- "domains": [
- "smart.delfi.lv"
- ],
- "parameters": [
- "q"
- ]
- },
- "PriceRunner": {
- "domains": [
- "www.pricerunner.co.uk"
- ],
- "parameters": [
- "q"
- ]
- },
- "Rakuten": {
- "domains": [
- "websearch.rakuten.co.jp"
- ],
- "parameters": [
- "qt"
- ]
- },
- "Google": {
- "domains": [
- "www.google.com",
- "www.google.ac",
- "www.google.ad",
- "www.google.com.af",
- "www.google.com.ag",
- "www.google.com.ai",
- "www.google.am",
- "www.google.it.ao",
- "www.google.com.ar",
- "www.google.as",
- "www.google.at",
- "www.google.com.au",
- "www.google.az",
- "www.google.ba",
- "www.google.com.bd",
- "www.google.be",
- "www.google.bf",
- "www.google.bg",
- "www.google.com.bh",
- "www.google.bi",
- "www.google.bj",
- "www.google.com.bn",
- "www.google.com.bo",
- "www.google.com.br",
- "www.google.bs",
- "www.google.co.bw",
- "www.google.com.by",
- "www.google.by",
- "www.google.com.bz",
- "www.google.ca",
- "www.google.com.kh",
- "www.google.cc",
- "www.google.cd",
- "www.google.cf",
- "www.google.cat",
- "www.google.cg",
- "www.google.ch",
- "www.google.ci",
- "www.google.co.ck",
- "www.google.cl",
- "www.google.cm",
- "www.google.cn",
- "www.google.com.co",
- "www.google.co.cr",
- "www.google.com.cu",
- "www.google.cv",
- "www.google.com.cy",
- "www.google.cz",
- "www.google.de",
- "www.google.dj",
- "www.google.dk",
- "www.google.dm",
- "www.google.com.do",
- "www.google.dz",
- "www.google.com.ec",
- "www.google.ee",
- "www.google.com.eg",
- "www.google.es",
- "www.google.com.et",
- "www.google.fi",
- "www.google.com.fj",
- "www.google.fm",
- "www.google.fr",
- "www.google.ga",
- "www.google.gd",
- "www.google.ge",
- "www.google.gf",
- "www.google.gg",
- "www.google.com.gh",
- "www.google.com.gi",
- "www.google.gl",
- "www.google.gm",
- "www.google.gp",
- "www.google.gr",
- "www.google.com.gt",
- "www.google.gy",
- "www.google.com.hk",
- "www.google.hn",
- "www.google.hr",
- "www.google.ht",
- "www.google.hu",
- "www.google.co.id",
- "www.google.iq",
- "www.google.ie",
- "www.google.co.il",
- "www.google.im",
- "www.google.co.in",
- "www.google.io",
- "www.google.is",
- "www.google.it",
- "www.google.je",
- "www.google.com.jm",
- "www.google.jo",
- "www.google.co.jp",
- "www.google.co.ke",
- "www.google.com.kh",
- "www.google.ki",
- "www.google.kg",
- "www.google.co.kr",
- "www.google.com.kw",
- "www.google.kz",
- "www.google.la",
- "www.google.com.lb",
- "www.google.com.lc",
- "www.google.li",
- "www.google.lk",
- "www.google.co.ls",
- "www.google.lt",
- "www.google.lu",
- "www.google.lv",
- "www.google.com.ly",
- "www.google.co.ma",
- "www.google.md",
- "www.google.me",
- "www.google.mg",
- "www.google.mk",
- "www.google.ml",
- "www.google.mn",
- "www.google.ms",
- "www.google.com.mt",
- "www.google.mu",
- "www.google.mv",
- "www.google.mw",
- "www.google.com.mx",
- "www.google.com.my",
- "www.google.co.mz",
- "www.google.com.na",
- "www.google.ne",
- "www.google.com.nf",
- "www.google.com.ng",
- "www.google.com.ni",
- "www.google.nl",
- "www.google.no",
- "www.google.com.np",
- "www.google.nr",
- "www.google.nu",
- "www.google.co.nz",
- "www.google.com.om",
- "www.google.com.pa",
- "www.google.com.pe",
- "www.google.com.ph",
- "www.google.com.pk",
- "www.google.pl",
- "www.google.pn",
- "www.google.com.pr",
- "www.google.ps",
- "www.google.pt",
- "www.google.com.py",
- "www.google.com.qa",
- "www.google.ro",
- "www.google.rs",
- "www.google.ru",
- "www.google.rw",
- "www.google.com.sa",
- "www.google.com.sb",
- "www.google.sc",
- "www.google.se",
- "www.google.com.sg",
- "www.google.sh",
- "www.google.si",
- "www.google.sk",
- "www.google.com.sl",
- "www.google.sn",
- "www.google.sm",
- "www.google.so",
- "www.google.st",
- "www.google.com.sv",
- "www.google.td",
- "www.google.tg",
- "www.google.co.th",
- "www.google.com.tj",
- "www.google.tk",
- "www.google.tl",
- "www.google.tm",
- "www.google.to",
- "www.google.com.tn",
- "www.google.com.tr",
- "www.google.tt",
- "www.google.com.tw",
- "www.google.co.tz",
- "www.google.com.ua",
- "www.google.co.ug",
- "www.google.ae",
- "www.google.co.uk",
- "www.google.us",
- "www.google.com.uy",
- "www.google.co.uz",
- "www.google.com.vc",
- "www.google.co.ve",
- "www.google.vg",
- "www.google.co.vi",
- "www.google.com.vn",
- "www.google.vu",
- "www.google.ws",
- "www.google.co.za",
- "www.google.co.zm",
- "www.google.co.zw",
- "google.com",
- "google.ac",
- "google.ad",
- "google.com.af",
- "google.com.ag",
- "google.com.ai",
- "google.am",
- "google.it.ao",
- "google.com.ar",
- "google.as",
- "google.at",
- "google.com.au",
- "google.az",
- "google.ba",
- "google.com.bd",
- "google.be",
- "google.bf",
- "google.bg",
- "google.com.bh",
- "google.bi",
- "google.bj",
- "google.com.bn",
- "google.com.bo",
- "google.com.br",
- "google.bs",
- "google.co.bw",
- "google.com.by",
- "google.by",
- "google.com.bz",
- "google.ca",
- "google.com.kh",
- "google.cc",
- "google.cd",
- "google.cf",
- "google.cat",
- "google.cg",
- "google.ch",
- "google.ci",
- "google.co.ck",
- "google.cl",
- "google.cm",
- "google.cn",
- "google.com.co",
- "google.co.cr",
- "google.com.cu",
- "google.cv",
- "google.com.cy",
- "google.cz",
- "google.de",
- "google.dj",
- "google.dk",
- "google.dm",
- "google.com.do",
- "google.dz",
- "google.com.ec",
- "google.ee",
- "google.com.eg",
- "google.es",
- "google.com.et",
- "google.fi",
- "google.com.fj",
- "google.fm",
- "google.fr",
- "google.ga",
- "google.gd",
- "google.ge",
- "google.gf",
- "google.gg",
- "google.com.gh",
- "google.com.gi",
- "google.gl",
- "google.gm",
- "google.gp",
- "google.gr",
- "google.com.gt",
- "google.gy",
- "google.com.hk",
- "google.hn",
- "google.hr",
- "google.ht",
- "google.hu",
- "google.co.id",
- "google.iq",
- "google.ie",
- "google.co.il",
- "google.im",
- "google.co.in",
- "google.io",
- "google.is",
- "google.it",
- "google.je",
- "google.com.jm",
- "google.jo",
- "google.co.jp",
- "google.co.ke",
- "google.com.kh",
- "google.ki",
- "google.kg",
- "google.co.kr",
- "google.com.kw",
- "google.kz",
- "google.la",
- "google.com.lb",
- "google.com.lc",
- "google.li",
- "google.lk",
- "google.co.ls",
- "google.lt",
- "google.lu",
- "google.lv",
- "google.com.ly",
- "google.co.ma",
- "google.md",
- "google.me",
- "google.mg",
- "google.mk",
- "google.ml",
- "google.mn",
- "google.ms",
- "google.com.mt",
- "google.mu",
- "google.mv",
- "google.mw",
- "google.com.mx",
- "google.com.my",
- "google.co.mz",
- "google.com.na",
- "google.ne",
- "google.com.nf",
- "google.com.ng",
- "google.com.ni",
- "google.nl",
- "google.no",
- "google.com.np",
- "google.nr",
- "google.nu",
- "google.co.nz",
- "google.com.om",
- "google.com.pa",
- "google.com.pe",
- "google.com.ph",
- "google.com.pk",
- "google.pl",
- "google.pn",
- "google.com.pr",
- "google.ps",
- "google.pt",
- "google.com.py",
- "google.com.qa",
- "google.ro",
- "google.rs",
- "google.ru",
- "google.rw",
- "google.com.sa",
- "google.com.sb",
- "google.sc",
- "google.se",
- "google.com.sg",
- "google.sh",
- "google.si",
- "google.sk",
- "google.com.sl",
- "google.sn",
- "google.sm",
- "google.so",
- "google.st",
- "google.com.sv",
- "google.td",
- "google.tg",
- "google.co.th",
- "google.com.tj",
- "google.tk",
- "google.tl",
- "google.tm",
- "google.to",
- "google.com.tn",
- "google.com.tr",
- "google.tt",
- "google.com.tw",
- "google.co.tz",
- "google.com.ua",
- "google.co.ug",
- "google.ae",
- "google.co.uk",
- "google.us",
- "google.com.uy",
- "google.co.uz",
- "google.com.vc",
- "google.co.ve",
- "google.vg",
- "google.co.vi",
- "google.com.vn",
- "google.vu",
- "google.ws",
- "google.co.za",
- "google.co.zm",
- "google.co.zw",
- "search.avg.com",
- "isearch.avg.com",
- "www.cnn.com",
- "darkoogle.com",
- "search.darkoogle.com",
- "search.foxtab.com",
- "www.gooofullsearch.com",
- "search.hiyo.com",
- "search.incredimail.com",
- "search1.incredimail.com",
- "search2.incredimail.com",
- "search3.incredimail.com",
- "search4.incredimail.com",
- "search.incredibar.com",
- "search.sweetim.com",
- "www.fastweb.it",
- "search.juno.com",
- "find.tdc.dk",
- "searchresults.verizon.com",
- "search.walla.co.il",
- "search.alot.com",
- "www.googleearth.de",
- "www.googleearth.fr",
- "webcache.googleusercontent.com",
- "encrypted.google.com",
- "googlesyndicatedsearch.com"
- ],
- "parameters": [
- "q",
- "query",
- "Keywords"
- ]
- },
- "Google Blogsearch": {
- "domains": [
- "blogsearch.google.ac",
- "blogsearch.google.ad",
- "blogsearch.google.ae",
- "blogsearch.google.am",
- "blogsearch.google.as",
- "blogsearch.google.at",
- "blogsearch.google.az",
- "blogsearch.google.ba",
- "blogsearch.google.be",
- "blogsearch.google.bf",
- "blogsearch.google.bg",
- "blogsearch.google.bi",
- "blogsearch.google.bj",
- "blogsearch.google.bs",
- "blogsearch.google.by",
- "blogsearch.google.ca",
- "blogsearch.google.cat",
- "blogsearch.google.cc",
- "blogsearch.google.cd",
- "blogsearch.google.cf",
- "blogsearch.google.cg",
- "blogsearch.google.ch",
- "blogsearch.google.ci",
- "blogsearch.google.cl",
- "blogsearch.google.cm",
- "blogsearch.google.cn",
- "blogsearch.google.co.bw",
- "blogsearch.google.co.ck",
- "blogsearch.google.co.cr",
- "blogsearch.google.co.id",
- "blogsearch.google.co.il",
- "blogsearch.google.co.in",
- "blogsearch.google.co.jp",
- "blogsearch.google.co.ke",
- "blogsearch.google.co.kr",
- "blogsearch.google.co.ls",
- "blogsearch.google.co.ma",
- "blogsearch.google.co.mz",
- "blogsearch.google.co.nz",
- "blogsearch.google.co.th",
- "blogsearch.google.co.tz",
- "blogsearch.google.co.ug",
- "blogsearch.google.co.uk",
- "blogsearch.google.co.uz",
- "blogsearch.google.co.ve",
- "blogsearch.google.co.vi",
- "blogsearch.google.co.za",
- "blogsearch.google.co.zm",
- "blogsearch.google.co.zw",
- "blogsearch.google.com",
- "blogsearch.google.com.af",
- "blogsearch.google.com.ag",
- "blogsearch.google.com.ai",
- "blogsearch.google.com.ar",
- "blogsearch.google.com.au",
- "blogsearch.google.com.bd",
- "blogsearch.google.com.bh",
- "blogsearch.google.com.bn",
- "blogsearch.google.com.bo",
- "blogsearch.google.com.br",
- "blogsearch.google.com.by",
- "blogsearch.google.com.bz",
- "blogsearch.google.com.co",
- "blogsearch.google.com.cu",
- "blogsearch.google.com.cy",
- "blogsearch.google.com.do",
- "blogsearch.google.com.ec",
- "blogsearch.google.com.eg",
- "blogsearch.google.com.et",
- "blogsearch.google.com.fj",
- "blogsearch.google.com.gh",
- "blogsearch.google.com.gi",
- "blogsearch.google.com.gt",
- "blogsearch.google.com.hk",
- "blogsearch.google.com.jm",
- "blogsearch.google.com.kh",
- "blogsearch.google.com.kh",
- "blogsearch.google.com.kw",
- "blogsearch.google.com.lb",
- "blogsearch.google.com.lc",
- "blogsearch.google.com.ly",
- "blogsearch.google.com.mt",
- "blogsearch.google.com.mx",
- "blogsearch.google.com.my",
- "blogsearch.google.com.na",
- "blogsearch.google.com.nf",
- "blogsearch.google.com.ng",
- "blogsearch.google.com.ni",
- "blogsearch.google.com.np",
- "blogsearch.google.com.om",
- "blogsearch.google.com.pa",
- "blogsearch.google.com.pe",
- "blogsearch.google.com.ph",
- "blogsearch.google.com.pk",
- "blogsearch.google.com.pr",
- "blogsearch.google.com.py",
- "blogsearch.google.com.qa",
- "blogsearch.google.com.sa",
- "blogsearch.google.com.sb",
- "blogsearch.google.com.sg",
- "blogsearch.google.com.sl",
- "blogsearch.google.com.sv",
- "blogsearch.google.com.tj",
- "blogsearch.google.com.tn",
- "blogsearch.google.com.tr",
- "blogsearch.google.com.tw",
- "blogsearch.google.com.ua",
- "blogsearch.google.com.uy",
- "blogsearch.google.com.vc",
- "blogsearch.google.com.vn",
- "blogsearch.google.cv",
- "blogsearch.google.cz",
- "blogsearch.google.de",
- "blogsearch.google.dj",
- "blogsearch.google.dk",
- "blogsearch.google.dm",
- "blogsearch.google.dz",
- "blogsearch.google.ee",
- "blogsearch.google.es",
- "blogsearch.google.fi",
- "blogsearch.google.fm",
- "blogsearch.google.fr",
- "blogsearch.google.ga",
- "blogsearch.google.gd",
- "blogsearch.google.ge",
- "blogsearch.google.gf",
- "blogsearch.google.gg",
- "blogsearch.google.gl",
- "blogsearch.google.gm",
- "blogsearch.google.gp",
- "blogsearch.google.gr",
- "blogsearch.google.gy",
- "blogsearch.google.hn",
- "blogsearch.google.hr",
- "blogsearch.google.ht",
- "blogsearch.google.hu",
- "blogsearch.google.ie",
- "blogsearch.google.im",
- "blogsearch.google.io",
- "blogsearch.google.iq",
- "blogsearch.google.is",
- "blogsearch.google.it",
- "blogsearch.google.it.ao",
- "blogsearch.google.je",
- "blogsearch.google.jo",
- "blogsearch.google.kg",
- "blogsearch.google.ki",
- "blogsearch.google.kz",
- "blogsearch.google.la",
- "blogsearch.google.li",
- "blogsearch.google.lk",
- "blogsearch.google.lt",
- "blogsearch.google.lu",
- "blogsearch.google.lv",
- "blogsearch.google.md",
- "blogsearch.google.me",
- "blogsearch.google.mg",
- "blogsearch.google.mk",
- "blogsearch.google.ml",
- "blogsearch.google.mn",
- "blogsearch.google.ms",
- "blogsearch.google.mu",
- "blogsearch.google.mv",
- "blogsearch.google.mw",
- "blogsearch.google.ne",
- "blogsearch.google.nl",
- "blogsearch.google.no",
- "blogsearch.google.nr",
- "blogsearch.google.nu",
- "blogsearch.google.pl",
- "blogsearch.google.pn",
- "blogsearch.google.ps",
- "blogsearch.google.pt",
- "blogsearch.google.ro",
- "blogsearch.google.rs",
- "blogsearch.google.ru",
- "blogsearch.google.rw",
- "blogsearch.google.sc",
- "blogsearch.google.se",
- "blogsearch.google.sh",
- "blogsearch.google.si",
- "blogsearch.google.sk",
- "blogsearch.google.sm",
- "blogsearch.google.sn",
- "blogsearch.google.so",
- "blogsearch.google.st",
- "blogsearch.google.td",
- "blogsearch.google.tg",
- "blogsearch.google.tk",
- "blogsearch.google.tl",
- "blogsearch.google.tm",
- "blogsearch.google.to",
- "blogsearch.google.tt",
- "blogsearch.google.us",
- "blogsearch.google.vg",
- "blogsearch.google.vu",
- "blogsearch.google.ws"
- ],
- "parameters": [
- "q"
- ]
- },
- "Hooseek.com": {
- "domains": [
- "www.hooseek.com"
- ],
- "parameters": [
- "recherche"
- ]
- },
- "Dalesearch": {
- "domains": [
- "www.dalesearch.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Alice Adsl": {
- "domains": [
- "rechercher.aliceadsl.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "T-Online": {
- "domains": [
- "suche.t-online.de",
- "brisbane.t-online.de",
- "navigationshilfe.t-online.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "soso.com": {
- "domains": [
- "www.soso.com"
- ],
- "parameters": [
- "w"
- ]
- },
- "Sogou": {
- "domains": [
- "www.sougou.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Hit-Parade": {
- "domains": [
- "req.-hit-parade.com",
- "class.hit-parade.com",
- "www.hit-parade.com"
- ],
- "parameters": [
- "p7"
- ]
- },
- "SearchCanvas": {
- "domains": [
- "www.searchcanvas.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Interia": {
- "domains": [
- "www.google.interia.pl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Genieo": {
- "domains": [
- "search.genieo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Tiscali": {
- "domains": [
- "search.tiscali.it",
- "search-dyn.tiscali.it",
- "hledani.tiscali.cz"
- ],
- "parameters": [
- "q",
- "key"
- ]
- },
- "Clix": {
- "domains": [
- "pesquisa.clix.pt"
- ],
- "parameters": [
- "question"
- ]
- }
- },
- "email": {
- "Bigpond": {
- "domains": [
- "webmail.bigpond.com",
- "webmail2.bigpond.com"
- ]
- },
- "Naver Mail": {
- "domains": [
- "mail.naver.com"
- ]
- },
- "Optus Zoo": {
- "domains": [
- "webmail.optuszoo.com.au"
- ]
- },
- "Seznam Mail": {
- "domains": [
- "email.seznam.cz"
- ]
- },
- "126 Mail": {
- "domains": [
- "mail.126.com"
- ]
- },
- "Outlook.com": {
- "domains": [
- "mail.live.com"
- ]
- },
- "AOL Mail": {
- "domains": [
- "mail.aol.com"
- ]
- },
- "Daum Mail": {
- "domains": [
- "mail2.daum.net"
- ]
- },
- "Yahoo! Mail": {
- "domains": [
- "mail.yahoo.net",
- "mail.yahoo.com",
- "mail.yahoo.co.uk",
- "mail.yahoo.co.jp"
- ]
- },
- "163 Mail": {
- "domains": [
- "mail.163.com"
- ]
- },
- "Orange Webmail": {
- "domains": [
- "orange.fr/webmail"
- ]
- },
- "QQ Mail": {
- "domains": [
- "mail.qq.com"
- ]
- },
- "Mynet Mail": {
- "domains": [
- "mail.mynet.com"
- ]
- },
- "Gmail": {
- "domains": [
- "mail.google.com"
- ]
- }
- },
- "social": {
- "hi5": {
- "domains": [
- "hi5.com"
- ]
- },
- "Friendster": {
- "domains": [
- "friendster.com"
- ]
- },
- "Weibo": {
- "domains": [
- "weibo.com",
- "t.cn"
- ]
- },
- "Xanga": {
- "domains": [
- "xanga.com"
- ]
- },
- "Myspace": {
- "domains": [
- "myspace.com"
- ]
- },
- "Buzznet": {
- "domains": [
- "wayn.com"
- ]
- },
- "MyLife": {
- "domains": [
- "mylife.ru"
- ]
- },
- "Flickr": {
- "domains": [
- "flickr.com"
- ]
- },
- "Sonico.com": {
- "domains": [
- "sonico.com"
- ]
- },
- "Odnoklassniki": {
- "domains": [
- "odnoklassniki.ru"
- ]
- },
- "GitHub": {
- "domains": [
- "github.com"
- ]
- },
- "Classmates": {
- "domains": [
- "classmates.com"
- ]
- },
- "Friends Reunited": {
- "domains": [
- "friendsreunited.com"
- ]
- },
- "Renren": {
- "domains": [
- "renren.com"
- ]
- },
- "Quora": {
- "domains": [
- "quora.com"
- ]
- },
- "Gaia Online": {
- "domains": [
- "gaiaonline.com"
- ]
- },
- "Netlog": {
- "domains": [
- "netlog.com"
- ]
- },
- "Orkut": {
- "domains": [
- "orkut.com"
- ]
- },
- "MyHeritage": {
- "domains": [
- "myheritage.com"
- ]
- },
- "Multiply": {
- "domains": [
- "multiply.com"
- ]
- },
- "myYearbook": {
- "domains": [
- "myyearbook.com"
- ]
- },
- "WeeWorld": {
- "domains": [
- "weeworld.com"
- ]
- },
- "Vimeo": {
- "domains": [
- "vimeo.com"
- ]
- },
- "Eksi Sozluk": {
- "domains": [
- "Sozluk.com",
- "sourtimes.org"
- ]
- },
- "Geni": {
- "domains": [
- "geni.com"
- ]
- },
- "Uludag Sozluk": {
- "domains": [
- "uludagsozluk.com",
- "ulusozluk.com"
- ]
- },
- "SourceForge": {
- "domains": [
- "sourceforge.net"
- ]
- },
- "Plaxo": {
- "domains": [
- "plaxo.com"
- ]
- },
- "Taringa!": {
- "domains": [
- "taringa.net"
- ]
- },
- "Tagged": {
- "domains": [
- "login.tagged.com"
- ]
- },
- "XING": {
- "domains": [
- "xing.com"
- ]
- },
- "Instagram": {
- "domains": [
- "instagram.com"
- ]
- },
- "Vkontakte": {
- "domains": [
- "vk.com",
- "vkontakte.ru"
- ]
- },
- "Twitter": {
- "domains": [
- "twitter.com",
- "t.co"
- ]
- },
- "vKruguDruzei.ru": {
- "domains": [
- "vkrugudruzei.ru"
- ]
- },
- "Donanimhaber": {
- "domains": [
- "donanimhaber.com"
- ]
- },
- "WAYN": {
- "domains": [
- "wayn.com"
- ]
- },
- "Tuenti": {
- "domains": [
- "tuenti.com"
- ]
- },
- "Mail.ru": {
- "domains": [
- "my.mail.ru"
- ]
- },
- "Badoo": {
- "domains": [
- "badoo.com"
- ]
- },
- "Instela": {
- "domains": [
- "instela.com"
- ]
- },
- "Habbo": {
- "domains": [
- "habbo.com"
- ]
- },
- "Pinterest": {
- "domains": [
- "pinterest.com"
- ]
- },
- "LinkedIn": {
- "domains": [
- "linkedin.com",
- "lnkd.in"
- ]
- },
- "Foursquare": {
- "domains": [
- "foursquare.com"
- ]
- },
- "Flixster": {
- "domains": [
- "flixster.com"
- ]
- },
- "Windows Live Spaces": {
- "domains": [
- "login.live.com"
- ]
- },
- "BlackPlanet": {
- "domains": [
- "blackplanet.com"
- ]
- },
- "Cyworld": {
- "domains": [
- "global.cyworld.com"
- ]
- },
- "Pocket": {
- "domains": [
- "itusozluk.com"
- ],
- "ITU Sozluk": null
- },
- "Skyrock": {
- "domains": [
- "skyrock.com"
- ]
- },
- "Facebook": {
- "domains": [
- "facebook.com",
- "fb.me",
- "m.facebook.com",
- "l.facebook.com",
- "lm.facebook.com"
- ]
- },
- "Disqus": {
- "domains": [
- "redirect.disqus.com",
- "disq.us",
- "disqus.com"
- ]
- },
- "StudiVZ": {
- "domains": [
- "studivz.net"
- ]
- },
- "Fotolog": {
- "domains": [
- "fotolog.com"
- ]
- },
- "Google+": {
- "domains": [
- "url.google.com",
- "plus.google.com"
- ]
- },
- "Nasza-klasa.pl": {
- "domains": [
- "nk.pl"
- ]
- },
- "Qzone": {
- "domains": [
- "qzone.qq.com"
- ]
- },
- "Douban": {
- "domains": [
- "douban.com"
- ]
- },
- "Bebo": {
- "domains": [
- "bebo.com"
- ]
- },
- "Youtube": {
- "domains": [
- "youtube.com",
- "youtu.be"
- ]
- },
- "Reddit": {
- "domains": [
- "reddit.com"
- ]
- },
- "Identi.ca": {
- "domains": [
- "identi.ca"
- ]
- },
- "StackOverflow": {
- "domains": [
- "stackoverflow.com"
- ]
- },
- "Mixi": {
- "domains": [
- "mixi.jp"
- ]
- },
- "StumbleUpon": {
- "domains": [
- "stumbleupon.com"
- ]
- },
- "Inci Sozluk": {
- "domains": [
- "inci.sozlukspot.com",
- "incisozluk.com",
- "incisozluk.cc"
- ]
- },
- "Viadeo": {
- "domains": [
- "viadeo.com"
- ]
- },
- "Last.fm": {
- "domains": [
- "lastfm.ru"
- ]
- },
- "LiveJournal": {
- "domains": [
- "livejournal.ru"
- ]
- },
- "Tumblr": {
- "domains": [
- "tumblr.com"
- ]
- },
- "Hacker News": {
- "domains": [
- "news.ycombinator.com"
- ]
- },
- "Hocam.com": {
- "domains": [
- "hocam.com"
- ]
- },
- "Delicious": {
- "domains": [
- "delicious.com"
- ]
- },
- "Hyves": {
- "domains": [
- "hyves.nl"
- ]
- },
- "Paper.li": {
- "domains": [
- "paper.li"
- ]
- },
- "MoiKrug.ru": {
- "domains": [
- "moikrug.ru"
- ]
- }
- }
-}
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/go/data/referers.yml b/vendor/snowplow/referer-parser/go/data/referers.yml
deleted file mode 100644
index e1ecf54f7..000000000
--- a/vendor/snowplow/referer-parser/go/data/referers.yml
+++ /dev/null
@@ -1,3621 +0,0 @@
-# #######################################################################################################
-#
-# ALL SUPPORTED REFERERS
-#
-# Broken down into:
-#
-# 1. Medium-unknown providers
-# 2. Email providers
-# 3. Social providers
-# 4. Search providers
-
-
-# #######################################################################################################
-#
-# MEDIUM-UNKNOWN PROVIDERS
-#
-# We know the source, but not the medium.
-# This section is useful for reducing false positives in the other sections
-
-unknown:
-
- Google:
- domains:
- - support.google.com
- - developers.google.com
- - maps.google.com
- - accounts.google.com
- - drive.google.com
- - sites.google.com
- - groups.google.com
- - groups.google.co.uk
- - news.google.co.uk
-
- Yahoo!:
- domains:
- - finance.yahoo.com
- - news.yahoo.com
- - eurosport.yahoo.com
- - sports.yahoo.com
- - astrology.yahoo.com
- - travel.yahoo.com
- - answers.yahoo.com
- - screen.yahoo.com
- - weather.yahoo.com
- - messenger.yahoo.com
- - games.yahoo.com
- - shopping.yahoo.net
- - movies.yahoo.com
- - cars.yahoo.com
- - lifestyle.yahoo.com
- - omg.yahoo.com
- - match.yahoo.net
-
- Taboola:
- domains:
- - trc.taboola.com
- - api.taboola.com
-
- Outbrain:
- domains:
- - paid.outbrain.com
-
-
-# #######################################################################################################
-#
-# EMAIL PROVIDERS
-
-email:
-
- 126 Mail:
- domains:
- - mail.126.com
-
- 163 Mail:
- domains:
- - mail.163.com
-
- AOL Mail:
- domains:
- - mail.aol.com
-
- Bigpond:
- domains:
- - webmail.bigpond.com
- - webmail2.bigpond.com
-
- Daum Mail:
- domains:
- - mail2.daum.net
-
- Gmail:
- domains:
- - mail.google.com
-
- Naver Mail:
- domains:
- - mail.naver.com
-
- Optus Zoo:
- domains:
- - webmail.optuszoo.com.au
-
- Orange Webmail:
- domains:
- - orange.fr/webmail
-
- Outlook.com:
- domains:
- - mail.live.com
-
- QQ Mail:
- domains:
- - mail.qq.com
-
- Seznam Mail:
- domains:
- - email.seznam.cz
-
- Yahoo! Mail:
- domains:
- - mail.yahoo.net
- - mail.yahoo.com
- - mail.yahoo.co.uk
- - mail.yahoo.co.jp
-
- Mynet Mail:
- domains:
- - mail.mynet.com
-
-
-# #######################################################################################################
-#
-# SOCIAL PROVIDERS
-
-social:
-
- Facebook:
- domains:
- - facebook.com
- - fb.me
- - m.facebook.com
- - l.facebook.com
- - lm.facebook.com
-
- Qzone:
- domains:
- - qzone.qq.com
-
- Habbo:
- domains:
- - habbo.com
-
- Twitter:
- domains:
- - twitter.com
- - t.co
-
- Instagram:
- domains:
- - instagram.com
-
- Youtube:
- domains:
- - youtube.com
- - youtu.be
-
- Vimeo:
- domains:
- - vimeo.com
-
- Renren:
- domains:
- - renren.com
-
- Windows Live Spaces:
- domains:
- - login.live.com
-
- LinkedIn:
- domains:
- - linkedin.com
- - lnkd.in
-
- Bebo:
- domains:
- - bebo.com
-
- Vkontakte:
- domains:
- - vk.com
- - vkontakte.ru
-
- Tagged:
- domains:
- - login.tagged.com
-
- Orkut:
- domains:
- - orkut.com
-
- Myspace:
- domains:
- - myspace.com
-
- Friendster:
- domains:
- - friendster.com
-
- Badoo:
- domains:
- - badoo.com
-
- hi5:
- domains:
- - hi5.com
-
- Netlog:
- domains:
- - netlog.com
-
- Flixster:
- domains:
- - flixster.com
-
- MyLife:
- domains:
- - mylife.ru
-
- Paper.li:
- domains:
- - paper.li
-
- Classmates:
- domains:
- - classmates.com
-
- GitHub:
- domains:
- - github.com
-
- Google+:
- domains:
- - url.google.com
- - plus.google.com
-
- Douban:
- domains:
- - douban.com
-
- Odnoklassniki:
- domains:
- - odnoklassniki.ru
-
- Viadeo:
- domains:
- - viadeo.com
-
- Flickr:
- domains:
- - flickr.com
-
- WeeWorld:
- domains:
- - weeworld.com
-
- Last.fm:
- domains:
- - lastfm.ru
-
- MyHeritage:
- domains:
- - myheritage.com
-
- Xanga:
- domains:
- - xanga.com
-
- Mixi:
- domains:
- - mixi.jp
-
- Cyworld:
- domains:
- - global.cyworld.com
-
- Gaia Online:
- domains:
- - gaiaonline.com
-
- Skyrock:
- domains:
- - skyrock.com
-
- BlackPlanet:
- domains:
- - blackplanet.com
-
- myYearbook:
- domains:
- - myyearbook.com
-
- Fotolog:
- domains:
- - fotolog.com
-
- Friends Reunited:
- domains:
- - friendsreunited.com
-
- LiveJournal:
- domains:
- - livejournal.ru
-
- StudiVZ:
- domains:
- - studivz.net
-
- StackOverflow:
- domains:
- - stackoverflow.com
-
- Sonico.com:
- domains:
- - sonico.com
-
- Pinterest:
- domains:
- - pinterest.com
-
- Plaxo:
- domains:
- - plaxo.com
-
- Geni:
- domains:
- - geni.com
-
- Tuenti:
- domains:
- - tuenti.com
-
- XING:
- domains:
- - xing.com
-
- Taringa!:
- domains:
- - taringa.net
-
- Tumblr:
- domains:
- - tumblr.com
-
- Nasza-klasa.pl:
- domains:
- - nk.pl
-
- StumbleUpon:
- domains:
- - stumbleupon.com
-
- SourceForge:
- domains:
- - sourceforge.net
-
- Hyves:
- domains:
- - hyves.nl
-
- WAYN:
- domains:
- - wayn.com
-
- Buzznet:
- domains:
- - wayn.com
-
- Multiply:
- domains:
- - multiply.com
-
- Foursquare:
- domains:
- - foursquare.com
-
- vKruguDruzei.ru:
- domains:
- - vkrugudruzei.ru
-
- Mail.ru:
- domains:
- - my.mail.ru
-
- MoiKrug.ru:
- domains:
- - moikrug.ru
-
- Reddit:
- domains:
- - reddit.com
-
- Hacker News:
- domains:
- - news.ycombinator.com
-
- Identi.ca:
- domains:
- - identi.ca
-
- Weibo:
- domains:
- - weibo.com
- - t.cn
-
- Delicious:
- domains:
- - delicious.com
-
- Pocket:
- domains:
- - getpocket.com
-
- ITU Sozluk:
- domains:
- - itusozluk.com
-
- Instela:
- domains:
- - instela.com
-
- Eksi Sozluk:
- domains:
- - Sozluk.com
- - sourtimes.org
-
- Uludag Sozluk:
- domains:
- - uludagsozluk.com
- - ulusozluk.com
-
- Inci Sozluk:
- domains:
- - inci.sozlukspot.com
- - incisozluk.com
- - incisozluk.cc
-
- Hocam.com:
- domains:
- - hocam.com
-
- Donanimhaber:
- domains:
- - donanimhaber.com
-
- Disqus:
- domains:
- - redirect.disqus.com
- - disq.us
- - disqus.com
-
- Quora:
- domains:
- - quora.com
-
-# #######################################################################################################
-#
-# SEARCH PROVIDERS
-
-search:
-
- 1.cz:
- parameters:
- - q
- domains:
- - 1.cz
-
- # 123people TODO
-
- 1und1:
- parameters:
- - su
- domains:
- - search.1und1.de
-
- 360.cn:
- parameters:
- - q
- domains:
- - so.360.cn
- - www.so.com
-
- Abacho:
- parameters:
- - q
- domains:
- - www.abacho.de
- - www.abacho.com
- - www.abacho.co.uk
- - www.se.abacho.com
- - www.tr.abacho.com
- - www.abacho.at
- - www.abacho.fr
- - www.abacho.es
- - www.abacho.ch
- - www.abacho.it
-
- ABCsøk:
- parameters:
- - q
- domains:
- - abcsolk.no
- - verden.abcsok.no
-
- Acoon:
- parameters:
- - begriff
- domains:
- - www.acoon.de
-
- Alexa:
- parameters:
- - q
- domains:
- - alexa.com
- - search.toolbars.alexa.com
-
- Alice Adsl:
- parameters:
- - q
- domains:
- - rechercher.aliceadsl.fr
-
- AllTheWeb:
- parameters:
- - q
- domains:
- - www.alltheweb.com
-
- all.by:
- parameters:
- - query
- domains:
- - all.by
-
- Altavista:
- parameters:
- - q
- domains:
- - www.altavista.com
- - search.altavista.com
- - listings.altavista.com
- - altavista.de
- - altavista.fr
- - be-nl.altavista.com
- - be-fr.altavista.com
-
- Amazon:
- parameters:
- - keywords
- domains:
- - amazon.com
- - www.amazon.com
-
- AOL:
- parameters:
- - q
- - query
- domains:
- - search.aol.com
- - search.aol.it
- - aolsearch.aol.com
- - aolsearch.com
- - www.aolrecherche.aol.fr
- - www.aolrecherches.aol.fr
- - www.aolimages.aol.fr
- - aim.search.aol.com
- - www.recherche.aol.fr
- - find.web.aol.com
- - recherche.aol.ca
- - aolsearch.aol.co.uk
- - search.aol.co.uk
- - aolrecherche.aol.fr
- - sucheaol.aol.de
- - suche.aol.de
- - suche.aolsvc.de
- - aolbusqueda.aol.com.mx
- - alicesuche.aol.de
- - alicesuchet.aol.de
- - suchet2.aol.de
- - search.hp.my.aol.com.au
- - search.hp.my.aol.de
- - search.hp.my.aol.it
- - search-intl.netscape.com
-
- Apollo Latvia:
- parameters:
- - q
- domains:
- - apollo.lv/portal/search/
-
- APOLL07:
- parameters:
- - query
- domains:
- - apollo7.de
-
- Apontador:
- parameters:
- - q
- domains:
- - apontador.com.br
- - www.apontador.com.br
-
- Aport:
- parameters:
- - r
- domains:
- - sm.aport.ru
-
- arama:
- parameters:
- - q
- domains:
- - arama.com
-
- Arcor:
- parameters:
- - Keywords
- domains:
- - www.arcor.de
-
- Arianna:
- parameters:
- - query
- domains:
- - arianna.libero.it
- - www.arianna.com
-
- Ask:
- parameters:
- - q
- domains:
- - ask.com
- - www.ask.com
- - web.ask.com
- - int.ask.com
- - mws.ask.com
- - uk.ask.com
- - images.ask.com
- - ask.reference.com
- - www.askkids.com
- - iwon.ask.com
- - www.ask.co.uk
- - www.qbyrd.com
- - search-results.com
- - uk.search-results.com
- - www.search-results.com
- - int.search-results.com
-
- Ask Toolbar:
- parameters:
- - searchfor
- domains:
- - search.tb.ask.com
-
- Atlas:
- parameters:
- - q
- domains:
- - searchatlas.centrum.cz
-
- Austronaut:
- parameters:
- - q
- domains:
- - www2.austronaut.at
- - www1.astronaut.at
-
- Babylon:
- parameters:
- - q
- domains:
- - search.babylon.com
- - searchassist.babylon.com
-
- Baidu:
- parameters:
- - wd
- - word
- - kw
- - k
- domains:
- - www.baidu.com
- - www1.baidu.com
- - zhidao.baidu.com
- - tieba.baidu.com
- - news.baidu.com
- - web.gougou.com
-
- Biglobe:
- parameters:
- - q
- domains:
- - cgi.search.biglobe.ne.jp
-
- Bing:
- parameters:
- - q
- - Q
- domains:
- - bing.com
- - www.bing.com
- - msnbc.msn.com
- - dizionario.it.msn.com
- - cc.bingj.com
- - m.bing.com
-
- Bing Images:
- parameters:
- - q
- - Q
- domains:
- - bing.com/images/search
- - www.bing.com/images/search
-
- blekko:
- parameters:
- - q
- domains:
- - blekko.com
-
- Blogdigger:
- parameters:
- - q
- domains:
- - www.blogdigger.com
-
- Blogpulse:
- parameters:
- - query
- domains:
- - www.blogpulse.com
-
- Bluewin:
- parameters:
- - searchTerm
- domains:
- - search.bluewin.ch
-
- canoe.ca:
- parameters:
- - q
- domains:
- - web.canoe.ca
-
- Centrum:
- parameters:
- - q
- domains:
- - serach.centrum.cz
- - morfeo.centrum.cz
-
- Certified-Toolbar:
- parameters:
- - q
- domains:
- - search.certified-toolbar.com
-
- Charter:
- parameters:
- - q
- domains:
- - www.charter.net
-
- Clix:
- parameters:
- - question
- domains:
- - pesquisa.clix.pt
-
- Comcast:
- parameters:
- - q
- domains:
- - search.comcast.net
-
- Conduit:
- parameters:
- - q
- domains:
- - search.conduit.com
-
- Comcast:
- parameters:
- - q
- domains:
- - serach.comcast.net
-
- Crawler:
- parameters:
- - q
- domains:
- - www.crawler.com
-
- Compuserve:
- parameters:
- - query
- domains:
- - websearch.cs.com
-
- Cuil:
- parameters:
- - q
- domains:
- - www.cuil.com
-
- Daemon search:
- parameters:
- - q
- domains:
- - daemon-search.com
- - my.daemon-search.com
-
- Dalesearch:
- parameters:
- - q
- domains:
- - www.dalesearch.com
-
- DasOertliche:
- parameters:
- - kw
- domains:
- - www.dasoertliche.de
-
- DasTelefonbuch:
- parameters:
- - kw
- domains:
- - www1.dastelefonbuch.de
-
- Daum:
- parameters:
- - q
- domains:
- - search.daum.net
-
- Delfi latvia:
- parameters:
- - q
- domains:
- - smart.delfi.lv
-
- Delfi:
- parameters:
- - q
- domains:
- - otsing.delfi.ee
-
- Digg:
- parameters:
- - s
- domains:
- - digg.com
-
- dmoz:
- parameters:
- - q
- domains:
- - dmoz.org
- - editors.dmoz.org
-
- DuckDuckGo:
- parameters:
- - q
- domains:
- - duckduckgo.com
-
- earthlink:
- parameters:
- - q
- domains:
- - search.earthlink.net
-
- Ecosia:
- parameters:
- - q
- domains:
- - ecosia.org
-
- Eniro:
- parameters:
- - q
- - search_word
- domains:
- - www.eniro.se
-
- Eurip:
- parameters:
- - q
- domains:
- - www.eurip.com
-
- Euroseek:
- parameters:
- - string
- domains:
- - www.euroseek.com
-
- Everyclick:
- parameters:
- - keyword
- domains:
- - www.everyclick.com
-
- Excite:
- parameters:
- - q
- - search
- domains:
- - search.excite.it
- - search.excite.fr
- - search.excite.de
- - search.excite.co.uk
- - serach.excite.es
- - search.excite.nl
- - msxml.excite.com
- - www.excite.co.jp
-
- Exalead:
- parameters:
- - q
- domains:
- - www.exalead.fr
- - www.exalead.com
-
- eo:
- parameters:
- - x_query
- domains:
- - eo.st
-
- Fast Browser Search:
- parameters:
- - q
- domains:
- - www.fastbrowsersearch.com
-
- Francite:
- parameters:
- - name
- domains:
- - recherche.francite.com
-
- Findwide:
- parameters:
- - k
- domains:
- - search.findwide.com
-
- Fireball:
- parameters:
- - q
- domains:
- - www.fireball.de
-
- Firstfind:
- parameters:
- - qry
- domains:
- - www.firstsfind.com
-
- Fixsuche:
- parameters:
- - q
- domains:
- - www.fixsuche.de
-
- Flix:
- parameters:
- - keyword
- domains:
- - www.flix.de
-
- Forestle:
- parameters:
- - q
- domains:
- - forestle.org
- - www.forestle.org
- - forestle.mobi
-
- Free:
- parameters:
- - q
- domains:
- - search.free.fr
- - search1-2.free.fr
- - search1-1.free.fr
-
- Freecause:
- parameters:
- - p
- domains:
- - search.freecause.com
-
- Freenet:
- parameters:
- - query
- - Keywords
- domains:
- - suche.freenet.de
-
- Freshweather:
- parameters:
- - q
- domains:
- - www.fresh-weather.com
-
- FriendFeed:
- parameters:
- - q
- domains:
- - friendfeed.com
-
- GAIS:
- parameters:
- - q
- domains:
- - gais.cs.ccu.edu.tw
-
- Geona:
- parameters:
- - q
- domains:
- - geona.net
-
- Genieo:
- parameters:
- - q
- domains:
- - search.genieo.com
-
- Gigablast:
- parameters:
- - q
- domains:
- - www.gigablast.com
- - dir.gigablast.com
-
- Globososo:
- parameters:
- - q
- domains:
- - searches.globososo.com
- - search.globososo.com
-
- GMX:
- parameters:
- - su
- domains:
- - suche.gmx.net
-
- Gnadenmeer:
- parameters:
- - keyword
- domains:
- - www.gnadenmeer.de
-
- Gomeo:
- parameters:
- - Keywords
- domains:
- - www.gomeo.com
-
- goo:
- parameters:
- - MT
- domains:
- - search.goo.ne.jp
- - ocnsearch.goo.ne.jp
-
- Google:
- parameters:
- - q
- - query # For www.cnn.com (powered by Google)
- - Keywords # For gooofullsearch.com (powered by Google)
- domains:
- - www.google.com
- - www.google.ac
- - www.google.ad
- - www.google.com.af
- - www.google.com.ag
- - www.google.com.ai
- - www.google.am
- - www.google.it.ao
- - www.google.com.ar
- - www.google.as
- - www.google.at
- - www.google.com.au
- - www.google.az
- - www.google.ba
- - www.google.com.bd
- - www.google.be
- - www.google.bf
- - www.google.bg
- - www.google.com.bh
- - www.google.bi
- - www.google.bj
- - www.google.com.bn
- - www.google.com.bo
- - www.google.com.br
- - www.google.bs
- - www.google.co.bw
- - www.google.com.by
- - www.google.by
- - www.google.com.bz
- - www.google.ca
- - www.google.com.kh
- - www.google.cc
- - www.google.cd
- - www.google.cf
- - www.google.cat
- - www.google.cg
- - www.google.ch
- - www.google.ci
- - www.google.co.ck
- - www.google.cl
- - www.google.cm
- - www.google.cn
- - www.google.com.co
- - www.google.co.cr
- - www.google.com.cu
- - www.google.cv
- - www.google.com.cy
- - www.google.cz
- - www.google.de
- - www.google.dj
- - www.google.dk
- - www.google.dm
- - www.google.com.do
- - www.google.dz
- - www.google.com.ec
- - www.google.ee
- - www.google.com.eg
- - www.google.es
- - www.google.com.et
- - www.google.fi
- - www.google.com.fj
- - www.google.fm
- - www.google.fr
- - www.google.ga
- - www.google.gd
- - www.google.ge
- - www.google.gf
- - www.google.gg
- - www.google.com.gh
- - www.google.com.gi
- - www.google.gl
- - www.google.gm
- - www.google.gp
- - www.google.gr
- - www.google.com.gt
- - www.google.gy
- - www.google.com.hk
- - www.google.hn
- - www.google.hr
- - www.google.ht
- - www.google.hu
- - www.google.co.id
- - www.google.iq
- - www.google.ie
- - www.google.co.il
- - www.google.im
- - www.google.co.in
- - www.google.io
- - www.google.is
- - www.google.it
- - www.google.je
- - www.google.com.jm
- - www.google.jo
- - www.google.co.jp
- - www.google.co.ke
- - www.google.com.kh
- - www.google.ki
- - www.google.kg
- - www.google.co.kr
- - www.google.com.kw
- - www.google.kz
- - www.google.la
- - www.google.com.lb
- - www.google.com.lc
- - www.google.li
- - www.google.lk
- - www.google.co.ls
- - www.google.lt
- - www.google.lu
- - www.google.lv
- - www.google.com.ly
- - www.google.co.ma
- - www.google.md
- - www.google.me
- - www.google.mg
- - www.google.mk
- - www.google.ml
- - www.google.mn
- - www.google.ms
- - www.google.com.mt
- - www.google.mu
- - www.google.mv
- - www.google.mw
- - www.google.com.mx
- - www.google.com.my
- - www.google.co.mz
- - www.google.com.na
- - www.google.ne
- - www.google.com.nf
- - www.google.com.ng
- - www.google.com.ni
- - www.google.nl
- - www.google.no
- - www.google.com.np
- - www.google.nr
- - www.google.nu
- - www.google.co.nz
- - www.google.com.om
- - www.google.com.pa
- - www.google.com.pe
- - www.google.com.ph
- - www.google.com.pk
- - www.google.pl
- - www.google.pn
- - www.google.com.pr
- - www.google.ps
- - www.google.pt
- - www.google.com.py
- - www.google.com.qa
- - www.google.ro
- - www.google.rs
- - www.google.ru
- - www.google.rw
- - www.google.com.sa
- - www.google.com.sb
- - www.google.sc
- - www.google.se
- - www.google.com.sg
- - www.google.sh
- - www.google.si
- - www.google.sk
- - www.google.com.sl
- - www.google.sn
- - www.google.sm
- - www.google.so
- - www.google.st
- - www.google.com.sv
- - www.google.td
- - www.google.tg
- - www.google.co.th
- - www.google.com.tj
- - www.google.tk
- - www.google.tl
- - www.google.tm
- - www.google.to
- - www.google.com.tn
- - www.google.com.tr
- - www.google.tt
- - www.google.com.tw
- - www.google.co.tz
- - www.google.com.ua
- - www.google.co.ug
- - www.google.ae
- - www.google.co.uk
- - www.google.us
- - www.google.com.uy
- - www.google.co.uz
- - www.google.com.vc
- - www.google.co.ve
- - www.google.vg
- - www.google.co.vi
- - www.google.com.vn
- - www.google.vu
- - www.google.ws
- - www.google.co.za
- - www.google.co.zm
- - www.google.co.zw
- - google.com
- - google.ac
- - google.ad
- - google.com.af
- - google.com.ag
- - google.com.ai
- - google.am
- - google.it.ao
- - google.com.ar
- - google.as
- - google.at
- - google.com.au
- - google.az
- - google.ba
- - google.com.bd
- - google.be
- - google.bf
- - google.bg
- - google.com.bh
- - google.bi
- - google.bj
- - google.com.bn
- - google.com.bo
- - google.com.br
- - google.bs
- - google.co.bw
- - google.com.by
- - google.by
- - google.com.bz
- - google.ca
- - google.com.kh
- - google.cc
- - google.cd
- - google.cf
- - google.cat
- - google.cg
- - google.ch
- - google.ci
- - google.co.ck
- - google.cl
- - google.cm
- - google.cn
- - google.com.co
- - google.co.cr
- - google.com.cu
- - google.cv
- - google.com.cy
- - google.cz
- - google.de
- - google.dj
- - google.dk
- - google.dm
- - google.com.do
- - google.dz
- - google.com.ec
- - google.ee
- - google.com.eg
- - google.es
- - google.com.et
- - google.fi
- - google.com.fj
- - google.fm
- - google.fr
- - google.ga
- - google.gd
- - google.ge
- - google.gf
- - google.gg
- - google.com.gh
- - google.com.gi
- - google.gl
- - google.gm
- - google.gp
- - google.gr
- - google.com.gt
- - google.gy
- - google.com.hk
- - google.hn
- - google.hr
- - google.ht
- - google.hu
- - google.co.id
- - google.iq
- - google.ie
- - google.co.il
- - google.im
- - google.co.in
- - google.io
- - google.is
- - google.it
- - google.je
- - google.com.jm
- - google.jo
- - google.co.jp
- - google.co.ke
- - google.com.kh
- - google.ki
- - google.kg
- - google.co.kr
- - google.com.kw
- - google.kz
- - google.la
- - google.com.lb
- - google.com.lc
- - google.li
- - google.lk
- - google.co.ls
- - google.lt
- - google.lu
- - google.lv
- - google.com.ly
- - google.co.ma
- - google.md
- - google.me
- - google.mg
- - google.mk
- - google.ml
- - google.mn
- - google.ms
- - google.com.mt
- - google.mu
- - google.mv
- - google.mw
- - google.com.mx
- - google.com.my
- - google.co.mz
- - google.com.na
- - google.ne
- - google.com.nf
- - google.com.ng
- - google.com.ni
- - google.nl
- - google.no
- - google.com.np
- - google.nr
- - google.nu
- - google.co.nz
- - google.com.om
- - google.com.pa
- - google.com.pe
- - google.com.ph
- - google.com.pk
- - google.pl
- - google.pn
- - google.com.pr
- - google.ps
- - google.pt
- - google.com.py
- - google.com.qa
- - google.ro
- - google.rs
- - google.ru
- - google.rw
- - google.com.sa
- - google.com.sb
- - google.sc
- - google.se
- - google.com.sg
- - google.sh
- - google.si
- - google.sk
- - google.com.sl
- - google.sn
- - google.sm
- - google.so
- - google.st
- - google.com.sv
- - google.td
- - google.tg
- - google.co.th
- - google.com.tj
- - google.tk
- - google.tl
- - google.tm
- - google.to
- - google.com.tn
- - google.com.tr
- - google.tt
- - google.com.tw
- - google.co.tz
- - google.com.ua
- - google.co.ug
- - google.ae
- - google.co.uk
- - google.us
- - google.com.uy
- - google.co.uz
- - google.com.vc
- - google.co.ve
- - google.vg
- - google.co.vi
- - google.com.vn
- - google.vu
- - google.ws
- - google.co.za
- - google.co.zm
- - google.co.zw
- # powered by Google
- - search.avg.com
- - isearch.avg.com
- - www.cnn.com
- - darkoogle.com
- - search.darkoogle.com
- - search.foxtab.com
- - www.gooofullsearch.com
- - search.hiyo.com
- - search.incredimail.com
- - search1.incredimail.com
- - search2.incredimail.com
- - search3.incredimail.com
- - search4.incredimail.com
- - search.incredibar.com
- - search.sweetim.com
- - www.fastweb.it
- - search.juno.com
- - find.tdc.dk
- - searchresults.verizon.com
- - search.walla.co.il
- - search.alot.com
- # Google Earch
- - www.googleearth.de
- - www.googleearth.fr
- # Google Cache
- - webcache.googleusercontent.com
- # Google SSL
- - encrypted.google.com
- # Syndicated search
- - googlesyndicatedsearch.com
-
- Google Blogsearch:
- parameters:
- - q
- domains:
- - blogsearch.google.ac
- - blogsearch.google.ad
- - blogsearch.google.ae
- - blogsearch.google.am
- - blogsearch.google.as
- - blogsearch.google.at
- - blogsearch.google.az
- - blogsearch.google.ba
- - blogsearch.google.be
- - blogsearch.google.bf
- - blogsearch.google.bg
- - blogsearch.google.bi
- - blogsearch.google.bj
- - blogsearch.google.bs
- - blogsearch.google.by
- - blogsearch.google.ca
- - blogsearch.google.cat
- - blogsearch.google.cc
- - blogsearch.google.cd
- - blogsearch.google.cf
- - blogsearch.google.cg
- - blogsearch.google.ch
- - blogsearch.google.ci
- - blogsearch.google.cl
- - blogsearch.google.cm
- - blogsearch.google.cn
- - blogsearch.google.co.bw
- - blogsearch.google.co.ck
- - blogsearch.google.co.cr
- - blogsearch.google.co.id
- - blogsearch.google.co.il
- - blogsearch.google.co.in
- - blogsearch.google.co.jp
- - blogsearch.google.co.ke
- - blogsearch.google.co.kr
- - blogsearch.google.co.ls
- - blogsearch.google.co.ma
- - blogsearch.google.co.mz
- - blogsearch.google.co.nz
- - blogsearch.google.co.th
- - blogsearch.google.co.tz
- - blogsearch.google.co.ug
- - blogsearch.google.co.uk
- - blogsearch.google.co.uz
- - blogsearch.google.co.ve
- - blogsearch.google.co.vi
- - blogsearch.google.co.za
- - blogsearch.google.co.zm
- - blogsearch.google.co.zw
- - blogsearch.google.com
- - blogsearch.google.com.af
- - blogsearch.google.com.ag
- - blogsearch.google.com.ai
- - blogsearch.google.com.ar
- - blogsearch.google.com.au
- - blogsearch.google.com.bd
- - blogsearch.google.com.bh
- - blogsearch.google.com.bn
- - blogsearch.google.com.bo
- - blogsearch.google.com.br
- - blogsearch.google.com.by
- - blogsearch.google.com.bz
- - blogsearch.google.com.co
- - blogsearch.google.com.cu
- - blogsearch.google.com.cy
- - blogsearch.google.com.do
- - blogsearch.google.com.ec
- - blogsearch.google.com.eg
- - blogsearch.google.com.et
- - blogsearch.google.com.fj
- - blogsearch.google.com.gh
- - blogsearch.google.com.gi
- - blogsearch.google.com.gt
- - blogsearch.google.com.hk
- - blogsearch.google.com.jm
- - blogsearch.google.com.kh
- - blogsearch.google.com.kh
- - blogsearch.google.com.kw
- - blogsearch.google.com.lb
- - blogsearch.google.com.lc
- - blogsearch.google.com.ly
- - blogsearch.google.com.mt
- - blogsearch.google.com.mx
- - blogsearch.google.com.my
- - blogsearch.google.com.na
- - blogsearch.google.com.nf
- - blogsearch.google.com.ng
- - blogsearch.google.com.ni
- - blogsearch.google.com.np
- - blogsearch.google.com.om
- - blogsearch.google.com.pa
- - blogsearch.google.com.pe
- - blogsearch.google.com.ph
- - blogsearch.google.com.pk
- - blogsearch.google.com.pr
- - blogsearch.google.com.py
- - blogsearch.google.com.qa
- - blogsearch.google.com.sa
- - blogsearch.google.com.sb
- - blogsearch.google.com.sg
- - blogsearch.google.com.sl
- - blogsearch.google.com.sv
- - blogsearch.google.com.tj
- - blogsearch.google.com.tn
- - blogsearch.google.com.tr
- - blogsearch.google.com.tw
- - blogsearch.google.com.ua
- - blogsearch.google.com.uy
- - blogsearch.google.com.vc
- - blogsearch.google.com.vn
- - blogsearch.google.cv
- - blogsearch.google.cz
- - blogsearch.google.de
- - blogsearch.google.dj
- - blogsearch.google.dk
- - blogsearch.google.dm
- - blogsearch.google.dz
- - blogsearch.google.ee
- - blogsearch.google.es
- - blogsearch.google.fi
- - blogsearch.google.fm
- - blogsearch.google.fr
- - blogsearch.google.ga
- - blogsearch.google.gd
- - blogsearch.google.ge
- - blogsearch.google.gf
- - blogsearch.google.gg
- - blogsearch.google.gl
- - blogsearch.google.gm
- - blogsearch.google.gp
- - blogsearch.google.gr
- - blogsearch.google.gy
- - blogsearch.google.hn
- - blogsearch.google.hr
- - blogsearch.google.ht
- - blogsearch.google.hu
- - blogsearch.google.ie
- - blogsearch.google.im
- - blogsearch.google.io
- - blogsearch.google.iq
- - blogsearch.google.is
- - blogsearch.google.it
- - blogsearch.google.it.ao
- - blogsearch.google.je
- - blogsearch.google.jo
- - blogsearch.google.kg
- - blogsearch.google.ki
- - blogsearch.google.kz
- - blogsearch.google.la
- - blogsearch.google.li
- - blogsearch.google.lk
- - blogsearch.google.lt
- - blogsearch.google.lu
- - blogsearch.google.lv
- - blogsearch.google.md
- - blogsearch.google.me
- - blogsearch.google.mg
- - blogsearch.google.mk
- - blogsearch.google.ml
- - blogsearch.google.mn
- - blogsearch.google.ms
- - blogsearch.google.mu
- - blogsearch.google.mv
- - blogsearch.google.mw
- - blogsearch.google.ne
- - blogsearch.google.nl
- - blogsearch.google.no
- - blogsearch.google.nr
- - blogsearch.google.nu
- - blogsearch.google.pl
- - blogsearch.google.pn
- - blogsearch.google.ps
- - blogsearch.google.pt
- - blogsearch.google.ro
- - blogsearch.google.rs
- - blogsearch.google.ru
- - blogsearch.google.rw
- - blogsearch.google.sc
- - blogsearch.google.se
- - blogsearch.google.sh
- - blogsearch.google.si
- - blogsearch.google.sk
- - blogsearch.google.sm
- - blogsearch.google.sn
- - blogsearch.google.so
- - blogsearch.google.st
- - blogsearch.google.td
- - blogsearch.google.tg
- - blogsearch.google.tk
- - blogsearch.google.tl
- - blogsearch.google.tm
- - blogsearch.google.to
- - blogsearch.google.tt
- - blogsearch.google.us
- - blogsearch.google.vg
- - blogsearch.google.vu
- - blogsearch.google.ws
-
- Google Images:
- parameters:
- - q
- domains:
- - google.ac/imgres
- - google.ad/imgres
- - google.ae/imgres
- - google.am/imgres
- - google.as/imgres
- - google.at/imgres
- - google.az/imgres
- - google.ba/imgres
- - google.be/imgres
- - google.bf/imgres
- - google.bg/imgres
- - google.bi/imgres
- - google.bj/imgres
- - google.bs/imgres
- - google.by/imgres
- - google.ca/imgres
- - google.cat/imgres
- - google.cc/imgres
- - google.cd/imgres
- - google.cf/imgres
- - google.cg/imgres
- - google.ch/imgres
- - google.ci/imgres
- - google.cl/imgres
- - google.cm/imgres
- - google.cn/imgres
- - google.co.bw/imgres
- - google.co.ck/imgres
- - google.co.cr/imgres
- - google.co.id/imgres
- - google.co.il/imgres
- - google.co.in/imgres
- - google.co.jp/imgres
- - google.co.ke/imgres
- - google.co.kr/imgres
- - google.co.ls/imgres
- - google.co.ma/imgres
- - google.co.mz/imgres
- - google.co.nz/imgres
- - google.co.th/imgres
- - google.co.tz/imgres
- - google.co.ug/imgres
- - google.co.uk/imgres
- - google.co.uz/imgres
- - google.co.ve/imgres
- - google.co.vi/imgres
- - google.co.za/imgres
- - google.co.zm/imgres
- - google.co.zw/imgres
- - google.com/imgres
- - google.com.af/imgres
- - google.com.ag/imgres
- - google.com.ai/imgres
- - google.com.ar/imgres
- - google.com.au/imgres
- - google.com.bd/imgres
- - google.com.bh/imgres
- - google.com.bn/imgres
- - google.com.bo/imgres
- - google.com.br/imgres
- - google.com.by/imgres
- - google.com.bz/imgres
- - google.com.co/imgres
- - google.com.cu/imgres
- - google.com.cy/imgres
- - google.com.do/imgres
- - google.com.ec/imgres
- - google.com.eg/imgres
- - google.com.et/imgres
- - google.com.fj/imgres
- - google.com.gh/imgres
- - google.com.gi/imgres
- - google.com.gt/imgres
- - google.com.hk/imgres
- - google.com.jm/imgres
- - google.com.kh/imgres
- - google.com.kw/imgres
- - google.com.lb/imgres
- - google.com.lc/imgres
- - google.com.ly/imgres
- - google.com.mt/imgres
- - google.com.mx/imgres
- - google.com.my/imgres
- - google.com.na/imgres
- - google.com.nf/imgres
- - google.com.ng/imgres
- - google.com.ni/imgres
- - google.com.np/imgres
- - google.com.om/imgres
- - google.com.pa/imgres
- - google.com.pe/imgres
- - google.com.ph/imgres
- - google.com.pk/imgres
- - google.com.pr/imgres
- - google.com.py/imgres
- - google.com.qa/imgres
- - google.com.sa/imgres
- - google.com.sb/imgres
- - google.com.sg/imgres
- - google.com.sl/imgres
- - google.com.sv/imgres
- - google.com.tj/imgres
- - google.com.tn/imgres
- - google.com.tr/imgres
- - google.com.tw/imgres
- - google.com.ua/imgres
- - google.com.uy/imgres
- - google.com.vc/imgres
- - google.com.vn/imgres
- - google.cv/imgres
- - google.cz/imgres
- - google.de/imgres
- - google.dj/imgres
- - google.dk/imgres
- - google.dm/imgres
- - google.dz/imgres
- - google.ee/imgres
- - google.es/imgres
- - google.fi/imgres
- - google.fm/imgres
- - google.fr/imgres
- - google.ga/imgres
- - google.gd/imgres
- - google.ge/imgres
- - google.gf/imgres
- - google.gg/imgres
- - google.gl/imgres
- - google.gm/imgres
- - google.gp/imgres
- - google.gr/imgres
- - google.gy/imgres
- - google.hn/imgres
- - google.hr/imgres
- - google.ht/imgres
- - google.hu/imgres
- - google.ie/imgres
- - google.im/imgres
- - google.io/imgres
- - google.iq/imgres
- - google.is/imgres
- - google.it/imgres
- - google.it.ao/imgres
- - google.je/imgres
- - google.jo/imgres
- - google.kg/imgres
- - google.ki/imgres
- - google.kz/imgres
- - google.la/imgres
- - google.li/imgres
- - google.lk/imgres
- - google.lt/imgres
- - google.lu/imgres
- - google.lv/imgres
- - google.md/imgres
- - google.me/imgres
- - google.mg/imgres
- - google.mk/imgres
- - google.ml/imgres
- - google.mn/imgres
- - google.ms/imgres
- - google.mu/imgres
- - google.mv/imgres
- - google.mw/imgres
- - google.ne/imgres
- - google.nl/imgres
- - google.no/imgres
- - google.nr/imgres
- - google.nu/imgres
- - google.pl/imgres
- - google.pn/imgres
- - google.ps/imgres
- - google.pt/imgres
- - google.ro/imgres
- - google.rs/imgres
- - google.ru/imgres
- - google.rw/imgres
- - google.sc/imgres
- - google.se/imgres
- - google.sh/imgres
- - google.si/imgres
- - google.sk/imgres
- - google.sm/imgres
- - google.sn/imgres
- - google.so/imgres
- - google.st/imgres
- - google.td/imgres
- - google.tg/imgres
- - google.tk/imgres
- - google.tl/imgres
- - google.tm/imgres
- - google.to/imgres
- - google.tt/imgres
- - google.us/imgres
- - google.vg/imgres
- - google.vu/imgres
- - images.google.ws
- - images.google.ac
- - images.google.ad
- - images.google.ae
- - images.google.am
- - images.google.as
- - images.google.at
- - images.google.az
- - images.google.ba
- - images.google.be
- - images.google.bf
- - images.google.bg
- - images.google.bi
- - images.google.bj
- - images.google.bs
- - images.google.by
- - images.google.ca
- - images.google.cat
- - images.google.cc
- - images.google.cd
- - images.google.cf
- - images.google.cg
- - images.google.ch
- - images.google.ci
- - images.google.cl
- - images.google.cm
- - images.google.cn
- - images.google.co.bw
- - images.google.co.ck
- - images.google.co.cr
- - images.google.co.id
- - images.google.co.il
- - images.google.co.in
- - images.google.co.jp
- - images.google.co.ke
- - images.google.co.kr
- - images.google.co.ls
- - images.google.co.ma
- - images.google.co.mz
- - images.google.co.nz
- - images.google.co.th
- - images.google.co.tz
- - images.google.co.ug
- - images.google.co.uk
- - images.google.co.uz
- - images.google.co.ve
- - images.google.co.vi
- - images.google.co.za
- - images.google.co.zm
- - images.google.co.zw
- - images.google.com
- - images.google.com.af
- - images.google.com.ag
- - images.google.com.ai
- - images.google.com.ar
- - images.google.com.au
- - images.google.com.bd
- - images.google.com.bh
- - images.google.com.bn
- - images.google.com.bo
- - images.google.com.br
- - images.google.com.by
- - images.google.com.bz
- - images.google.com.co
- - images.google.com.cu
- - images.google.com.cy
- - images.google.com.do
- - images.google.com.ec
- - images.google.com.eg
- - images.google.com.et
- - images.google.com.fj
- - images.google.com.gh
- - images.google.com.gi
- - images.google.com.gt
- - images.google.com.hk
- - images.google.com.jm
- - images.google.com.kh
- - images.google.com.kh
- - images.google.com.kw
- - images.google.com.lb
- - images.google.com.lc
- - images.google.com.ly
- - images.google.com.mt
- - images.google.com.mx
- - images.google.com.my
- - images.google.com.na
- - images.google.com.nf
- - images.google.com.ng
- - images.google.com.ni
- - images.google.com.np
- - images.google.com.om
- - images.google.com.pa
- - images.google.com.pe
- - images.google.com.ph
- - images.google.com.pk
- - images.google.com.pr
- - images.google.com.py
- - images.google.com.qa
- - images.google.com.sa
- - images.google.com.sb
- - images.google.com.sg
- - images.google.com.sl
- - images.google.com.sv
- - images.google.com.tj
- - images.google.com.tn
- - images.google.com.tr
- - images.google.com.tw
- - images.google.com.ua
- - images.google.com.uy
- - images.google.com.vc
- - images.google.com.vn
- - images.google.cv
- - images.google.cz
- - images.google.de
- - images.google.dj
- - images.google.dk
- - images.google.dm
- - images.google.dz
- - images.google.ee
- - images.google.es
- - images.google.fi
- - images.google.fm
- - images.google.fr
- - images.google.ga
- - images.google.gd
- - images.google.ge
- - images.google.gf
- - images.google.gg
- - images.google.gl
- - images.google.gm
- - images.google.gp
- - images.google.gr
- - images.google.gy
- - images.google.hn
- - images.google.hr
- - images.google.ht
- - images.google.hu
- - images.google.ie
- - images.google.im
- - images.google.io
- - images.google.iq
- - images.google.is
- - images.google.it
- - images.google.it.ao
- - images.google.je
- - images.google.jo
- - images.google.kg
- - images.google.ki
- - images.google.kz
- - images.google.la
- - images.google.li
- - images.google.lk
- - images.google.lt
- - images.google.lu
- - images.google.lv
- - images.google.md
- - images.google.me
- - images.google.mg
- - images.google.mk
- - images.google.ml
- - images.google.mn
- - images.google.ms
- - images.google.mu
- - images.google.mv
- - images.google.mw
- - images.google.ne
- - images.google.nl
- - images.google.no
- - images.google.nr
- - images.google.nu
- - images.google.pl
- - images.google.pn
- - images.google.ps
- - images.google.pt
- - images.google.ro
- - images.google.rs
- - images.google.ru
- - images.google.rw
- - images.google.sc
- - images.google.se
- - images.google.sh
- - images.google.si
- - images.google.sk
- - images.google.sm
- - images.google.sn
- - images.google.so
- - images.google.st
- - images.google.td
- - images.google.tg
- - images.google.tk
- - images.google.tl
- - images.google.tm
- - images.google.to
- - images.google.tt
- - images.google.us
- - images.google.vg
- - images.google.vu
- - images.google.ws
-
- Google News:
- parameters:
- - q
- domains:
- - news.google.ac
- - news.google.ad
- - news.google.ae
- - news.google.am
- - news.google.as
- - news.google.at
- - news.google.az
- - news.google.ba
- - news.google.be
- - news.google.bf
- - news.google.bg
- - news.google.bi
- - news.google.bj
- - news.google.bs
- - news.google.by
- - news.google.ca
- - news.google.cat
- - news.google.cc
- - news.google.cd
- - news.google.cf
- - news.google.cg
- - news.google.ch
- - news.google.ci
- - news.google.cl
- - news.google.cm
- - news.google.cn
- - news.google.co.bw
- - news.google.co.ck
- - news.google.co.cr
- - news.google.co.id
- - news.google.co.il
- - news.google.co.in
- - news.google.co.jp
- - news.google.co.ke
- - news.google.co.kr
- - news.google.co.ls
- - news.google.co.ma
- - news.google.co.mz
- - news.google.co.nz
- - news.google.co.th
- - news.google.co.tz
- - news.google.co.ug
- - news.google.co.uk
- - news.google.co.uz
- - news.google.co.ve
- - news.google.co.vi
- - news.google.co.za
- - news.google.co.zm
- - news.google.co.zw
- - news.google.com
- - news.google.com.af
- - news.google.com.ag
- - news.google.com.ai
- - news.google.com.ar
- - news.google.com.au
- - news.google.com.bd
- - news.google.com.bh
- - news.google.com.bn
- - news.google.com.bo
- - news.google.com.br
- - news.google.com.by
- - news.google.com.bz
- - news.google.com.co
- - news.google.com.cu
- - news.google.com.cy
- - news.google.com.do
- - news.google.com.ec
- - news.google.com.eg
- - news.google.com.et
- - news.google.com.fj
- - news.google.com.gh
- - news.google.com.gi
- - news.google.com.gt
- - news.google.com.hk
- - news.google.com.jm
- - news.google.com.kh
- - news.google.com.kh
- - news.google.com.kw
- - news.google.com.lb
- - news.google.com.lc
- - news.google.com.ly
- - news.google.com.mt
- - news.google.com.mx
- - news.google.com.my
- - news.google.com.na
- - news.google.com.nf
- - news.google.com.ng
- - news.google.com.ni
- - news.google.com.np
- - news.google.com.om
- - news.google.com.pa
- - news.google.com.pe
- - news.google.com.ph
- - news.google.com.pk
- - news.google.com.pr
- - news.google.com.py
- - news.google.com.qa
- - news.google.com.sa
- - news.google.com.sb
- - news.google.com.sg
- - news.google.com.sl
- - news.google.com.sv
- - news.google.com.tj
- - news.google.com.tn
- - news.google.com.tr
- - news.google.com.tw
- - news.google.com.ua
- - news.google.com.uy
- - news.google.com.vc
- - news.google.com.vn
- - news.google.cv
- - news.google.cz
- - news.google.de
- - news.google.dj
- - news.google.dk
- - news.google.dm
- - news.google.dz
- - news.google.ee
- - news.google.es
- - news.google.fi
- - news.google.fm
- - news.google.fr
- - news.google.ga
- - news.google.gd
- - news.google.ge
- - news.google.gf
- - news.google.gg
- - news.google.gl
- - news.google.gm
- - news.google.gp
- - news.google.gr
- - news.google.gy
- - news.google.hn
- - news.google.hr
- - news.google.ht
- - news.google.hu
- - news.google.ie
- - news.google.im
- - news.google.io
- - news.google.iq
- - news.google.is
- - news.google.it
- - news.google.it.ao
- - news.google.je
- - news.google.jo
- - news.google.kg
- - news.google.ki
- - news.google.kz
- - news.google.la
- - news.google.li
- - news.google.lk
- - news.google.lt
- - news.google.lu
- - news.google.lv
- - news.google.md
- - news.google.me
- - news.google.mg
- - news.google.mk
- - news.google.ml
- - news.google.mn
- - news.google.ms
- - news.google.mu
- - news.google.mv
- - news.google.mw
- - news.google.ne
- - news.google.nl
- - news.google.no
- - news.google.nr
- - news.google.nu
- - news.google.pl
- - news.google.pn
- - news.google.ps
- - news.google.pt
- - news.google.ro
- - news.google.rs
- - news.google.ru
- - news.google.rw
- - news.google.sc
- - news.google.se
- - news.google.sh
- - news.google.si
- - news.google.sk
- - news.google.sm
- - news.google.sn
- - news.google.so
- - news.google.st
- - news.google.td
- - news.google.tg
- - news.google.tk
- - news.google.tl
- - news.google.tm
- - news.google.to
- - news.google.tt
- - news.google.us
- - news.google.vg
- - news.google.vu
- - news.google.ws
-
- Google Product Search:
- parameters:
- - q
- domains:
- - google.ac/products
- - google.ad/products
- - google.ae/products
- - google.am/products
- - google.as/products
- - google.at/products
- - google.az/products
- - google.ba/products
- - google.be/products
- - google.bf/products
- - google.bg/products
- - google.bi/products
- - google.bj/products
- - google.bs/products
- - google.by/products
- - google.ca/products
- - google.cat/products
- - google.cc/products
- - google.cd/products
- - google.cf/products
- - google.cg/products
- - google.ch/products
- - google.ci/products
- - google.cl/products
- - google.cm/products
- - google.cn/products
- - google.co.bw/products
- - google.co.ck/products
- - google.co.cr/products
- - google.co.id/products
- - google.co.il/products
- - google.co.in/products
- - google.co.jp/products
- - google.co.ke/products
- - google.co.kr/products
- - google.co.ls/products
- - google.co.ma/products
- - google.co.mz/products
- - google.co.nz/products
- - google.co.th/products
- - google.co.tz/products
- - google.co.ug/products
- - google.co.uk/products
- - google.co.uz/products
- - google.co.ve/products
- - google.co.vi/products
- - google.co.za/products
- - google.co.zm/products
- - google.co.zw/products
- - google.com/products
- - google.com.af/products
- - google.com.ag/products
- - google.com.ai/products
- - google.com.ar/products
- - google.com.au/products
- - google.com.bd/products
- - google.com.bh/products
- - google.com.bn/products
- - google.com.bo/products
- - google.com.br/products
- - google.com.by/products
- - google.com.bz/products
- - google.com.co/products
- - google.com.cu/products
- - google.com.cy/products
- - google.com.do/products
- - google.com.ec/products
- - google.com.eg/products
- - google.com.et/products
- - google.com.fj/products
- - google.com.gh/products
- - google.com.gi/products
- - google.com.gt/products
- - google.com.hk/products
- - google.com.jm/products
- - google.com.kh/products
- - google.com.kh/products
- - google.com.kw/products
- - google.com.lb/products
- - google.com.lc/products
- - google.com.ly/products
- - google.com.mt/products
- - google.com.mx/products
- - google.com.my/products
- - google.com.na/products
- - google.com.nf/products
- - google.com.ng/products
- - google.com.ni/products
- - google.com.np/products
- - google.com.om/products
- - google.com.pa/products
- - google.com.pe/products
- - google.com.ph/products
- - google.com.pk/products
- - google.com.pr/products
- - google.com.py/products
- - google.com.qa/products
- - google.com.sa/products
- - google.com.sb/products
- - google.com.sg/products
- - google.com.sl/products
- - google.com.sv/products
- - google.com.tj/products
- - google.com.tn/products
- - google.com.tr/products
- - google.com.tw/products
- - google.com.ua/products
- - google.com.uy/products
- - google.com.vc/products
- - google.com.vn/products
- - google.cv/products
- - google.cz/products
- - google.de/products
- - google.dj/products
- - google.dk/products
- - google.dm/products
- - google.dz/products
- - google.ee/products
- - google.es/products
- - google.fi/products
- - google.fm/products
- - google.fr/products
- - google.ga/products
- - google.gd/products
- - google.ge/products
- - google.gf/products
- - google.gg/products
- - google.gl/products
- - google.gm/products
- - google.gp/products
- - google.gr/products
- - google.gy/products
- - google.hn/products
- - google.hr/products
- - google.ht/products
- - google.hu/products
- - google.ie/products
- - google.im/products
- - google.io/products
- - google.iq/products
- - google.is/products
- - google.it/products
- - google.it.ao/products
- - google.je/products
- - google.jo/products
- - google.kg/products
- - google.ki/products
- - google.kz/products
- - google.la/products
- - google.li/products
- - google.lk/products
- - google.lt/products
- - google.lu/products
- - google.lv/products
- - google.md/products
- - google.me/products
- - google.mg/products
- - google.mk/products
- - google.ml/products
- - google.mn/products
- - google.ms/products
- - google.mu/products
- - google.mv/products
- - google.mw/products
- - google.ne/products
- - google.nl/products
- - google.no/products
- - google.nr/products
- - google.nu/products
- - google.pl/products
- - google.pn/products
- - google.ps/products
- - google.pt/products
- - google.ro/products
- - google.rs/products
- - google.ru/products
- - google.rw/products
- - google.sc/products
- - google.se/products
- - google.sh/products
- - google.si/products
- - google.sk/products
- - google.sm/products
- - google.sn/products
- - google.so/products
- - google.st/products
- - google.td/products
- - google.tg/products
- - google.tk/products
- - google.tl/products
- - google.tm/products
- - google.to/products
- - google.tt/products
- - google.us/products
- - google.vg/products
- - google.vu/products
- - google.ws/products
- - www.google.ac/products
- - www.google.ad/products
- - www.google.ae/products
- - www.google.am/products
- - www.google.as/products
- - www.google.at/products
- - www.google.az/products
- - www.google.ba/products
- - www.google.be/products
- - www.google.bf/products
- - www.google.bg/products
- - www.google.bi/products
- - www.google.bj/products
- - www.google.bs/products
- - www.google.by/products
- - www.google.ca/products
- - www.google.cat/products
- - www.google.cc/products
- - www.google.cd/products
- - www.google.cf/products
- - www.google.cg/products
- - www.google.ch/products
- - www.google.ci/products
- - www.google.cl/products
- - www.google.cm/products
- - www.google.cn/products
- - www.google.co.bw/products
- - www.google.co.ck/products
- - www.google.co.cr/products
- - www.google.co.id/products
- - www.google.co.il/products
- - www.google.co.in/products
- - www.google.co.jp/products
- - www.google.co.ke/products
- - www.google.co.kr/products
- - www.google.co.ls/products
- - www.google.co.ma/products
- - www.google.co.mz/products
- - www.google.co.nz/products
- - www.google.co.th/products
- - www.google.co.tz/products
- - www.google.co.ug/products
- - www.google.co.uk/products
- - www.google.co.uz/products
- - www.google.co.ve/products
- - www.google.co.vi/products
- - www.google.co.za/products
- - www.google.co.zm/products
- - www.google.co.zw/products
- - www.google.com/products
- - www.google.com.af/products
- - www.google.com.ag/products
- - www.google.com.ai/products
- - www.google.com.ar/products
- - www.google.com.au/products
- - www.google.com.bd/products
- - www.google.com.bh/products
- - www.google.com.bn/products
- - www.google.com.bo/products
- - www.google.com.br/products
- - www.google.com.by/products
- - www.google.com.bz/products
- - www.google.com.co/products
- - www.google.com.cu/products
- - www.google.com.cy/products
- - www.google.com.do/products
- - www.google.com.ec/products
- - www.google.com.eg/products
- - www.google.com.et/products
- - www.google.com.fj/products
- - www.google.com.gh/products
- - www.google.com.gi/products
- - www.google.com.gt/products
- - www.google.com.hk/products
- - www.google.com.jm/products
- - www.google.com.kh/products
- - www.google.com.kh/products
- - www.google.com.kw/products
- - www.google.com.lb/products
- - www.google.com.lc/products
- - www.google.com.ly/products
- - www.google.com.mt/products
- - www.google.com.mx/products
- - www.google.com.my/products
- - www.google.com.na/products
- - www.google.com.nf/products
- - www.google.com.ng/products
- - www.google.com.ni/products
- - www.google.com.np/products
- - www.google.com.om/products
- - www.google.com.pa/products
- - www.google.com.pe/products
- - www.google.com.ph/products
- - www.google.com.pk/products
- - www.google.com.pr/products
- - www.google.com.py/products
- - www.google.com.qa/products
- - www.google.com.sa/products
- - www.google.com.sb/products
- - www.google.com.sg/products
- - www.google.com.sl/products
- - www.google.com.sv/products
- - www.google.com.tj/products
- - www.google.com.tn/products
- - www.google.com.tr/products
- - www.google.com.tw/products
- - www.google.com.ua/products
- - www.google.com.uy/products
- - www.google.com.vc/products
- - www.google.com.vn/products
- - www.google.cv/products
- - www.google.cz/products
- - www.google.de/products
- - www.google.dj/products
- - www.google.dk/products
- - www.google.dm/products
- - www.google.dz/products
- - www.google.ee/products
- - www.google.es/products
- - www.google.fi/products
- - www.google.fm/products
- - www.google.fr/products
- - www.google.ga/products
- - www.google.gd/products
- - www.google.ge/products
- - www.google.gf/products
- - www.google.gg/products
- - www.google.gl/products
- - www.google.gm/products
- - www.google.gp/products
- - www.google.gr/products
- - www.google.gy/products
- - www.google.hn/products
- - www.google.hr/products
- - www.google.ht/products
- - www.google.hu/products
- - www.google.ie/products
- - www.google.im/products
- - www.google.io/products
- - www.google.iq/products
- - www.google.is/products
- - www.google.it/products
- - www.google.it.ao/products
- - www.google.je/products
- - www.google.jo/products
- - www.google.kg/products
- - www.google.ki/products
- - www.google.kz/products
- - www.google.la/products
- - www.google.li/products
- - www.google.lk/products
- - www.google.lt/products
- - www.google.lu/products
- - www.google.lv/products
- - www.google.md/products
- - www.google.me/products
- - www.google.mg/products
- - www.google.mk/products
- - www.google.ml/products
- - www.google.mn/products
- - www.google.ms/products
- - www.google.mu/products
- - www.google.mv/products
- - www.google.mw/products
- - www.google.ne/products
- - www.google.nl/products
- - www.google.no/products
- - www.google.nr/products
- - www.google.nu/products
- - www.google.pl/products
- - www.google.pn/products
- - www.google.ps/products
- - www.google.pt/products
- - www.google.ro/products
- - www.google.rs/products
- - www.google.ru/products
- - www.google.rw/products
- - www.google.sc/products
- - www.google.se/products
- - www.google.sh/products
- - www.google.si/products
- - www.google.sk/products
- - www.google.sm/products
- - www.google.sn/products
- - www.google.so/products
- - www.google.st/products
- - www.google.td/products
- - www.google.tg/products
- - www.google.tk/products
- - www.google.tl/products
- - www.google.tm/products
- - www.google.to/products
- - www.google.tt/products
- - www.google.us/products
- - www.google.vg/products
- - www.google.vu/products
- - www.google.ws/products
-
- Google Video:
- parameters:
- - q
- domains:
- - video.google.com
-
- Goyellow.de:
- parameters:
- - MDN
- domains:
- - www.goyellow.de
-
- Gule Sider:
- parameters:
- - q
- domains:
- - www.gulesider.no
-
- HighBeam:
- parameters:
- - q
- domains:
- - www.highbeam.com
-
- Hit-Parade:
- parameters:
- - p7
- domains:
- - req.-hit-parade.com
- - class.hit-parade.com
- - www.hit-parade.com
-
- Holmes:
- parameters:
- - q
- domains:
- - holmes.ge
-
- Hooseek.com:
- parameters:
- - recherche
- domains:
- - www.hooseek.com
-
- Hotbot:
- parameters:
- - query
- domains:
- - www.hotbot.com
-
- Icerockeet:
- parameters:
- - q
- domains:
- - blogs.icerocket.com
-
- ICQ:
- parameters:
- - q
- domains:
- - www.icq.com
- - search.icq.com
-
- Ilse:
- parameters:
- - search_for
- domains:
- - www.ilse.nl
-
- InfoSpace:
- parameters:
- - q
- - s
- domains:
- - infospace.com
- - dogpile.com
- - www.dogpile.com
- - metacrawler.com
- - webfetch.com
- - webcrawler.com
- - search.kiwee.com
- # powered by InfoSpace
- - isearch.babylon.com
- - start.facemoods.com
- - search.magnetic.com
- - search.searchcompletion.com
- - clusty.com
-
- Interia:
- parameters:
- - q
- domains:
- - www.google.interia.pl
-
- I-play:
- parameters:
- - q
- domains:
- - start.iplay.com
-
- IXquick:
- parameters:
- - query
- domains:
- - ixquick.com
- - www.eu.ixquick.com
- - ixquick.de
- - www.ixquick.de
- - us.ixquick.com
- - s1.us.ixquick.com
- - s2.us.ixquick.com
- - s3.us.ixquick.com
- - s4.us.ixquick.com
- - s5.us.ixquick.com
- - eu.ixquick.com
- - s8-eu.ixquick.com
- - s1-eu.ixquick.de
-
- Jyxo:
- parameters:
- - q
- domains:
- - jyxo.1188.cz
-
- Jungle Spider:
- parameters:
- - q
- domains:
- - www.jungle-spider.de
-
- Jungle Key:
- parameters:
- - query
- domains:
- - junglekey.com
- - junglekey.fr
-
- Kataweb:
- parameters:
- - q
- domains:
- - www.kataweb.it
-
- Kvasir:
- parameters:
- - q
- domains:
- - www.kvasir.no
-
- Latne:
- parameters:
- - q
- domains:
- - www.latne.lv
-
- La Toile Du Quebec Via Google:
- parameters:
- - q
- domains:
- - www.toile.com
- - web.toile.com
-
- Looksmart:
- parameters:
- - key
- domains:
- - www.looksmart.com
-
- Lo.st:
- parameters:
- - x_query
- domains:
- - lo.st
-
- Lycos:
- parameters:
- - query
- domains:
- - search.lycos.com
- - www.lycos.com
- - lycos.com
-
- maailm:
- parameters:
- - tekst
- domains:
- - www.maailm.com
-
- Mail.ru:
- parameters:
- - q
- domains:
- - go.mail.ru
-
- Mamma:
- parameters:
- - query
- domains:
- - www.mamma.com
- - mamma75.mamma.com
-
- Marktplaats:
- parameters:
- - query
- domains:
- - www.marktplaats.nl
-
- Maxwebsearch:
- parameters:
- - query
- domains:
- - maxwebsearch.com
-
- Meta:
- parameters:
- - q
- domains:
- - meta.ua
-
- MetaCrawler.de:
- parameters:
- - qry
- domains:
- - s1.metacrawler.de
- - s2.metacrawler.de
- - s3.metacrawler.de
-
- Metager:
- parameters:
- - eingabe
- domains:
- - meta.rrzn.uni-hannover.de
- - www.metager.de
-
- Metager2:
- parameters:
- - q
- domains:
- - metager2.de
-
- Meinestadt:
- parameters:
- - words
- domains:
- - www.meinestadt.de
-
- Mister Wong:
- parameters:
- - Keywords
- domains:
- - www.mister-wong.com
- - www.mister-wong.de
-
- Monstercrawler:
- parameters:
- - qry
- domains:
- - www.monstercrawler.com
-
- Mozbot:
- parameters:
- - q
- domains:
- - www.mozbot.fr
- - www.mozbot.co.uk
- - www.mozbot.com
-
- El Mundo:
- parameters:
- - q
- domains:
- - ariadna.elmundo.es
-
- MySearch:
- parameters:
- - searchfor
- - searchFor
- domains:
- - www.mysearch.com
- - ms114.mysearch.com
- - ms146.mysearch.com
- - kf.mysearch.myway.com
- - ki.mysearch.myway.com
- - search.myway.com
- - search.mywebsearch.com
-
- Najdi:
- parameters:
- - q
- domains:
- - www.najdi.si
-
- Nate:
- parameters:
- - q
- domains:
- - search.nate.com
-
- Naver:
- parameters:
- - query
- domains:
- - search.naver.com
-
- Naver Images:
- parameters:
- - query
- domains:
- - image.search.naver.com
- - imagesearch.naver.com
-
- Needtofind:
- parameters:
- - searchfor
- domains:
- - ko.search.need2find.com
-
- Neti:
- parameters:
- - query
- domains:
- - www.neti.ee
-
- Nifty:
- parameters:
- - q
- domains:
- - search.nifty.com
-
- Nigma:
- parameters:
- - s
- domains:
- - nigma.ru
-
- Onet:
- parameters:
- - qt
- domains:
- - szukaj.onet.pl
-
- Online.no:
- parameters:
- - q
- domains:
- - online.no
-
- Opplysningen 1881:
- parameters:
- - Query
- domains:
- - www.1881.no
-
- Orange:
- parameters:
- - q
- domains:
- - busca.orange.es
- - search.orange.co.uk
-
- Paperball:
- parameters:
- - q
- domains:
- - www.paperball.de
-
- PeoplePC:
- parameters:
- - q
- domains:
- - search.peoplepc.com
-
- Picsearch:
- parameters:
- - q
- domains:
- - www.picsearch.com
-
- Plazoo:
- parameters:
- - q
- domains:
- - www.plazoo.com
-
- Poisk.ru:
- parameters:
- - q
- domains:
- - www.plazoo.com
-
- PriceRunner:
- parameters:
- - q
- domains:
- - www.pricerunner.co.uk
-
- qip:
- parameters:
- - query
- domains:
- - search.qip.ru
-
- Qualigo:
- parameters:
- - q
- domains:
- - www.qualigo.at
- - www.qualigo.ch
- - www.qualigo.de
- - www.qualigo.nl
-
- Rakuten:
- parameters:
- - qt
- domains:
- - websearch.rakuten.co.jp
-
- Rambler:
- parameters:
- - query
- - words
- domains:
- - nova.rambler.ru
-
- RPMFind:
- parameters:
- - query
- domains:
- - rpmfind.net
- - fr2.rpmfind.net
-
- Road Runner Search:
- parameters:
- - q
- domains:
- - search.rr.com
-
- Sapo:
- parameters:
- - q
- domains:
- - pesquisa.sapo.pt
-
- # Add Scour.com
-
- Search.com:
- parameters:
- - q
- domains:
- - www.search.com
-
- Search.ch:
- parameters:
- - q
- domains:
- - www.search.ch
-
- Searchalot:
- parameters:
- - q
- domains:
- - searchalot.com
-
- SearchCanvas:
- parameters:
- - q
- domains:
- - www.searchcanvas.com
-
- Searchy:
- parameters:
- - q
- domains:
- - www.searchy.co.uk
-
- # Add setooz.com
-
- Seznam:
- parameters:
- - q
- domains:
- - search.seznam.cz
-
- Sharelook:
- parameters:
- - keyword
- domains:
- - www.sharelook.fr
-
- Skynet:
- parameters:
- - q
- domains:
- - www.skynet.be
-
- Sogou:
- parameters:
- - query
- domains:
- - www.sougou.com
-
- Softonic:
- parameters:
- - q
- domains:
- - search.softonic.com
-
- soso.com:
- parameters:
- - w
- domains:
- - www.soso.com
-
- Snapdo:
- parameters:
- - q
- domains:
- - search.snapdo.com
-
- Startpagina:
- parameters:
- - q
- domains:
- - startgoogle.startpagina.nl
-
- Startsiden:
- parameters:
- - q
- domains:
- - www.startsiden.no
-
- suche.info:
- parameters:
- - q
- domains:
- - suche.info
-
- Suchmaschine.com:
- parameters:
- - suchstr
- domains:
- - www.suchmaschine.com
-
- Suchnase:
- parameters:
- - q
- domains:
- - www.suchnase.de
-
- TalkTalk:
- parameters:
- - query
- domains:
- - www.talktalk.co.uk
-
- Technorati:
- parameters:
- - q
- domains:
- - technorati.com
-
- Teoma:
- parameters:
- - q
- domains:
- - www.teoma.com
-
- Terra:
- parameters:
- - query
- domains:
- - buscador.terra.es
- - buscador.terra.cl
- - buscador.terra.com.br
-
- Tiscali:
- parameters:
- - q
- - key
- domains:
- - search.tiscali.it
- - search-dyn.tiscali.it
- - hledani.tiscali.cz
-
- Tixuma:
- parameters:
- - sc
- domains:
- - www.tixuma.de
-
- T-Online:
- parameters:
- - q
- domains:
- - suche.t-online.de
- - brisbane.t-online.de
- - navigationshilfe.t-online.de
-
- Toolbarhome:
- parameters:
- - q
- domains:
- - www.toolbarhome.com
- - vshare.toolbarhome.com
-
- Trouvez.com:
- parameters:
- - query
- domains:
- - www.trouvez.com
-
- TrovaRapido:
- parameters:
- - q
- domains:
- - www.trovarapido.com
-
- Trusted-Search:
- parameters:
- - w
- domains:
- - www.trusted--search.com
-
- Twingly:
- parameters:
- - q
- domains:
- - www.twingly.com
-
- uol.com.br:
- parameters:
- - q
- domains:
- - busca.uol.com.br
-
- URL.ORGanizier:
- parameters:
- - q
- domains:
- - www.url.org
-
- Vinden:
- parameters:
- - q
- domains:
- - www.vinden.nl
-
- Vindex:
- parameters:
- - search_for
- domains:
- - www.vindex.nl
- - search.vindex.nl
-
- Virgilio:
- parameters:
- - qs
- domains:
- - ricerca.virgilio.it
- - ricercaimmagini.virgilio.it
- - ricercavideo.virgilio.it
- - ricercanews.virgilio.it
- - mobile.virgilio.it
-
- Voila:
- parameters:
- - rdata
- - kw
- domains:
- - search.ke.voila.fr
- - www.lemoteur.fr
-
- Volny:
- parameters:
- - search
- domains:
- - web.volny.cz
-
- Walhello :
- parameters:
- - key
- domains:
- - www.walhello.info
- - www.walhello.com
- - www.walhello.de
- - www.walhello.nl
-
- Web.de:
- parameters:
- - su
- domains:
- - suche.web.de
-
- Web.nl:
- parameters:
- - zoekwoord
- domains:
- - www.web.nl
-
- Weborama:
- parameters:
- - QUERY
- domains:
- - www.weborama.com
-
- WebSearch:
- parameters:
- - qkw
- - q
- domains:
- - www.websearch.com
-
- Winamp:
- parameters:
- - q
- domains:
- - search.winamp.com
-
- Witch:
- parameters:
- - search
- domains:
- - www.witch.de
-
- Wirtualna Polska:
- parameters:
- - szukaj
- domains:
- - szukaj.wp.pl
-
- WWW:
- parameters:
- - query
- domains:
- - search.www.ee
-
- X-recherche:
- parameters:
- - MOTS
- domains:
- - www.x-recherche.com
-
- Yahoo!:
- parameters:
- - p
- - q
- domains:
- - search.yahoo.com
- - yahoo.com
- - ar.search.yahoo.com
- - ar.yahoo.com
- - au.search.yahoo.com
- - au.yahoo.com
- - br.search.yahoo.com
- - br.yahoo.com
- - cade.searchde.yahoo.com
- - cade.yahoo.com
- - chinese.searchinese.yahoo.com
- - chinese.yahoo.com
- - cn.search.yahoo.com
- - cn.yahoo.com
- - de.search.yahoo.com
- - de.yahoo.com
- - dk.search.yahoo.com
- - dk.yahoo.com
- - es.search.yahoo.com
- - es.yahoo.com
- - espanol.searchpanol.yahoo.com
- - espanol.searchpanol.yahoo.com
- - espanol.yahoo.com
- - espanol.yahoo.com
- - fr.search.yahoo.com
- - fr.yahoo.com
- - ie.search.yahoo.com
- - ie.yahoo.com
- - it.search.yahoo.com
- - it.yahoo.com
- - kr.search.yahoo.com
- - kr.yahoo.com
- - mx.search.yahoo.com
- - mx.yahoo.com
- - no.search.yahoo.com
- - no.yahoo.com
- - nz.search.yahoo.com
- - nz.yahoo.com
- - one.cn.yahoo.com
- - one.searchn.yahoo.com
- - qc.search.yahoo.com
- - qc.search.yahoo.com
- - qc.search.yahoo.com
- - qc.yahoo.com
- - qc.yahoo.com
- - se.search.yahoo.com
- - se.search.yahoo.com
- - se.yahoo.com
- - search.searcharch.yahoo.com
- - search.yahoo.com
- - uk.search.yahoo.com
- - uk.yahoo.com
- - www.yahoo.co.jp
- - search.yahoo.co.jp
- # powered by Yahoo
- - www.cercato.it
- - search.offerbox.com
- - ys.mirostart.com
-
- Yahoo! Images:
- parameters:
- - p
- - q
- domains:
- - image.yahoo.cn
- - images.search.yahoo.com
-
- Yam:
- parameters:
- - k
- domains:
- - search.yam.com
-
- Yandex:
- parameters:
- - text
- domains:
- - yandex.ru
- - yandex.ua
- - yandex.com
- - yandex.by
- - www.yandex.ru
- - www.yandex.ua
- - www.yandex.com
- - www.yandex.by
-
- Yandex Images:
- parameters:
- - text
- domains:
- - images.yandex.ru
- - images.yandex.ua
- - images.yandex.com
-
- Yasni:
- parameters:
- - query
- domains:
- - www.yasni.de
- - www.yasni.com
- - www.yasni.co.uk
- - www.yasni.ch
- - www.yasni.at
-
- Yatedo:
- parameters:
- - q
- domains:
- - www.yatedo.com
- - www.yatedo.fr
-
- # Add Yellowmap:
-
- Yippy:
- parameters:
- - q
- - query
- domains:
- - search.yippy.com
-
- YouGoo:
- parameters:
- - q
- domains:
- - www.yougoo.fr
-
- Zapmeta:
- parameters:
- - q
- - query
- domains:
- - www.zapmeta.com
- - www.zapmeta.nl
- - www.zapmeta.de
- - uk.zapmeta.com
-
- Zoek:
- parameters:
- - q
- domains:
- - www3.zoek.nl
-
- Zhongsou:
- parameters:
- - w
- domains:
- - p.zhongsou.com
-
- Zoeken:
- parameters:
- - q
- domains:
- - www.zoeken.nl
-
- Zoohoo:
- parameters:
- - q
- domains:
- - zoohoo.cz
diff --git a/vendor/snowplow/referer-parser/go/example/example.go b/vendor/snowplow/referer-parser/go/example/example.go
deleted file mode 100644
index 28a42e749..000000000
--- a/vendor/snowplow/referer-parser/go/example/example.go
+++ /dev/null
@@ -1,19 +0,0 @@
-package main
-
-import (
- "log"
-
- "github.com/snowplow/referer-parser/go"
-)
-
-func main() {
- referer_url := "http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari"
- r := refererparser.Parse(referer_url)
-
- log.Printf("Known:%v", r.Known)
- log.Printf("Referer:%v", r.Referer)
- log.Printf("Medium:%v", r.Medium)
- log.Printf("Search parameter:%v", r.SearchParameter)
- log.Printf("Search term:%v", r.SearchTerm)
- log.Printf("Host:%v", r.URI)
-}
diff --git a/vendor/snowplow/referer-parser/go/refererparser.go b/vendor/snowplow/referer-parser/go/refererparser.go
deleted file mode 100644
index 0844ec7b2..000000000
--- a/vendor/snowplow/referer-parser/go/refererparser.go
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
-
-Package refererparser implements referer extraction using a shared 'database' of known referers found in referers.yml [1].
-
-Links
-
- [1] https://github.com/snowplow/referer-parser/blob/master/referers.yml
-
-*/
-package refererparser
-
-import (
- "encoding/json"
- "net/url"
- "strings"
-)
-
-type refererData map[string]map[string]map[string][]string
-
-var data refererData
-
-func init() {
- data = loadRefererData()
-}
-
-// loadRefererData loads and parses the YAML file.
-func loadRefererData() refererData {
- dat, err := Asset("data/referers.json")
- if err != nil {
- panic(err)
- }
- res := make(refererData)
- if err := json.Unmarshal(dat, &res); err != nil {
- panic(err)
- }
- return res
-}
-
-// RefererResult holds the extracted data
-type RefererResult struct {
- Known bool
- Referer string
- Medium string
- SearchParameter string
- SearchTerm string
- URI *url.URL
-}
-
-// SetCurrent is used to set the "internal" medium if needed.
-func (ref *RefererResult) SetCurrent(curl string) {
- purl, _ := url.Parse(curl)
- if purl.Host == ref.URI.Host {
- ref.Medium = "internal"
- }
-}
-
-func lookup(uri *url.URL, q string, suffix bool) (refResult *RefererResult) {
- refResult = &RefererResult{URI: uri, Medium: "unknown"}
- for medium, mediumData := range data {
- for refName, refconfig := range mediumData {
- for _, domain := range refconfig["domains"] {
- if (!suffix && q == domain) || (suffix && (strings.HasSuffix(q, domain) || strings.HasPrefix(q, domain))) {
- refResult.Known = true
- refResult.Referer = refName
- refResult.Medium = medium
- params, paramExists := refconfig["parameters"]
- if paramExists {
- for _, param := range params {
- sterm := uri.Query().Get(param)
- if sterm != "" {
- refResult.SearchParameter = param
- refResult.SearchTerm = sterm
- }
- }
- }
- return refResult
- }
- }
- }
- }
- return
-}
-
-// Parse an url and extract referer, it returns a RefererResult.
-func Parse(uri string) (refResult *RefererResult) {
- puri, _ := url.Parse(uri)
- // Split before the first dot ".".
- parts := strings.SplitAfterN(puri.Host, ".", 2)
- rhost := ""
- if len(parts) > 1 {
- rhost = parts[1]
- }
- queries := []string{puri.Host + puri.Path, rhost + puri.Path, puri.Host, rhost}
- for _, q := range queries {
- refResult = lookup(puri, q, false)
- if refResult.Known {
- return
- }
- }
- if !refResult.Known {
- for _, q := range queries {
- refResult = lookup(puri, q, true)
- if refResult.Known {
- return
- }
- }
- }
- return
-}
diff --git a/vendor/snowplow/referer-parser/go/refererparser_test.go b/vendor/snowplow/referer-parser/go/refererparser_test.go
deleted file mode 100644
index a2e022189..000000000
--- a/vendor/snowplow/referer-parser/go/refererparser_test.go
+++ /dev/null
@@ -1,272 +0,0 @@
-package refererparser
-
-import (
- "testing"
-)
-
-var testData = []struct {
- spec string
- uri string
- medium string
- source string
- term string
- known bool
-}{
- {
- "Google Images search",
- "http://www.google.fr/imgres?q=Ogham+the+celtic+oracle&hl=fr&safe=off&client=firefox-a&hs=ZDu&sa=X&rls=org.mozilla:fr-FR:unofficial&tbm=isch&prmd=imvnsa&tbnid=HUVaj-o88ZRdYM:&imgrefurl=http://www.psychicbazaar.com/oracles/101-ogham-the-celtic-oracle-set.html&docid=DY5_pPFMliYUQM&imgurl=http://mdm.pbzstatic.com/oracles/ogham-the-celtic-oracle-set/montage.png&w=734&h=250&ei=GPdWUIePCOqK0AWp3oCQBA&zoom=1&iact=hc&vpx=129&vpy=276&dur=827&hovh=131&hovw=385&tx=204&ty=71&sig=104115776612919232039&page=1&tbnh=69&tbnw=202&start=0&ndsp=26&ved=1t:429,r:13,s:0,i:114&biw=1272&bih=826",
- "search",
- "Google Images",
- "Ogham the celtic oracle",
- true,
- },
- {
- "Yahoo! Images search",
- "http://it.images.search.yahoo.com/images/view;_ylt=A0PDodgQmGBQpn4AWQgdDQx.;_ylu=X3oDMTBlMTQ4cGxyBHNlYwNzcgRzbGsDaW1n?back=http%3A%2F%2Fit.images.search.yahoo.com%2Fsearch%2Fimages%3Fp%3DEarth%2BMagic%2BOracle%2BCards%26fr%3Dmcafee%26fr2%3Dpiv-web%26tab%3Dorganic%26ri%3D5&w=1064&h=1551&imgurl=mdm.pbzstatic.com%2Foracles%2Fearth-magic-oracle-cards%2Fcard-1.png&rurl=http%3A%2F%2Fwww.psychicbazaar.com%2Foracles%2F143-earth-magic-oracle-cards.html&size=2.8+KB&name=Earth+Magic+Oracle+Cards+-+Psychic+Bazaar&p=Earth+Magic+Oracle+Cards&oid=f0a5ad5c4211efe1c07515f56cf5a78e&fr2=piv-web&fr=mcafee&tt=Earth%2BMagic%2BOracle%2BCards%2B-%2BPsychic%2BBazaar&b=0&ni=90&no=5&ts=&tab=organic&sigr=126n355ib&sigb=13hbudmkc&sigi=11ta8f0gd&.crumb=IZBOU1c0UHU",
- "search",
- "Yahoo! Images",
- "Earth Magic Oracle Cards",
- true,
- },
- {
- "Powered by Google",
- "http://isearch.avg.com/pages/images.aspx?q=tarot+card+change&sap=dsp&lang=en&mid=209215200c4147d1a9d6d1565005540b-b0d4f81a8999f5981f04537c5ec8468fd5234593&cid=%7B50F9298B-C111-4C7E-9740-363BF0015949%7D&v=12.1.0.21&ds=AVG&d=7%2F23%2F2012+10%3A31%3A08+PM&pr=fr&sba=06oENya4ZG1YS6vOLJwpLiFdjG91ICt2YE59W2p5ENc2c4w8KvJb5xbvjkj3ceMjnyTSpZq-e6pj7GQUylIQtuK4psJU60wZuI-8PbjX-OqtdX3eIcxbMoxg3qnIasP0ww2fuID1B-p2qJln8vBHxWztkpxeixjZPSppHnrb9fEcx62a9DOR0pZ-V-Kjhd-85bIL0QG5qi1OuA4M1eOP4i_NzJQVRXPQDmXb-CpIcruc2h5FE92Tc8QMUtNiTEWBbX-QiCoXlgbHLpJo5Jlq-zcOisOHNWU2RSHYJnK7IUe_SH6iQ.%2CYT0zO2s9MTA7aD1mNjZmZDBjMjVmZDAxMGU4&snd=hdr&tc=test1",
- "search",
- "Google",
- "tarot card change",
- true,
- },
- {
- "Google search #1",
- "http://www.google.com/search",
- "search",
- "Google",
- "",
- true,
- },
- {
- "Google search #2",
- "http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari",
- "search",
- "Google",
- "gateway oracle cards denise linn",
- true,
- },
- {
- "Yahoo! search",
- "http://es.search.yahoo.com/search;_ylt=A7x9QbwbZXxQ9EMAPCKT.Qt.?p=BIEDERMEIER+FORTUNE+TELLING+CARDS&ei=utf-8&type=685749&fr=chr-greentree_gc&xargs=0&pstart=1&b=11",
- "search",
- "Yahoo!",
- "BIEDERMEIER FORTUNE TELLING CARDS",
- true,
- },
- {
- "PriceRunner search",
- "http://www.pricerunner.co.uk/search?displayNoHitsMessage=1&q=wild+wisdom+of+the+faery+oracle",
- "search",
- "PriceRunner",
- "wild wisdom of the faery oracle",
- true,
- },
- {
- "Bing Images search",
- "http://www.bing.com/images/search?q=psychic+oracle+cards&view=detail&id=D268EDDEA8D3BF20AF887E62AF41E8518FE96F08",
- "search",
- "Bing Images",
- "psychic oracle cards",
- true,
- },
- {
- "IXquick search",
- "https://s3-us3.ixquick.com/do/search",
- "search",
- "IXquick",
- "",
- true,
- },
- {
- "AOL search",
- "http://aolsearch.aol.co.uk/aol/search?s_chn=hp&enabled_terms=&s_it=aoluk-homePage50&q=pendulums",
- "search",
- "AOL",
- "pendulums",
- true,
- },
- {
- "AOL search.com",
- "http://www.aolsearch.com/search?s_pt=hp&s_gl=NL&query=voorbeeld+cv+competenties&invocationType=tb50hpcnnbie7-nl-nl",
- "search",
- "AOL",
- "voorbeeld cv competenties",
- true,
- },
- {
- "Ask search",
- "http://uk.search-results.com/web?qsrc=1&o=1921&l=dis&q=pendulums&dm=ctry&atb=sysid%3D406%3Aappid%3D113%3Auid%3D8f40f651e7b608b5%3Auc%3D1346336505%3Aqu%3Dpendulums%3Asrc%3Dcrt%3Ao%3D1921&locale=en_GB",
- "search",
- "Ask",
- "pendulums",
- true,
- },
- {
- "Mail.ru search",
- "http://go.mail.ru/search?q=Gothic%20Tarot%20Cards&where=any&num=10&rch=e&sf=20",
- "search",
- "Mail.ru",
- "Gothic Tarot Cards",
- true,
- },
- {
- "Yandex search",
- "http://images.yandex.ru/yandsearch?text=Blue%20Angel%20Oracle%20Blue%20Angel%20Oracle&noreask=1&pos=16&rpt=simage&lr=45&img_url=http%3A%2F%2Fmdm.pbzstatic.com%2Foracles%2Fblue-angel-oracle%2Fbox-small.png",
- "search",
- "Yandex Images",
- "Blue Angel Oracle Blue Angel Oracle",
- true,
- },
- {
- "Ask toolbar search",
- "http://search.tb.ask.com/search/GGmain.jhtml?cb=AYY&pg=GGmain&p2=%5EAYY%5Exdm071%5EYYA%5Eid&n=77fdaa55&qid=c2678d9147654034bb8b16daa7bfb48c&ss=sub&st=hp&ptb=F9FC6C22-EAE6-4D1E-8126-A70119B6E02F&si=flvrunner&tpr=hst&searchfor=CARA+MEMASAK+CUMI+CUMI&ots=1219016089614",
- "search",
- "Ask Toolbar",
- "CARA MEMASAK CUMI CUMI",
- true,
- },
- {
- "Ask toolbar search #2",
- "http://search.tb.ask.com/search/GGmain.jhtml?&st=hp&p2=%5EZU%5Exdm458%5EYYA%5Eus&n=77fda1bd&ptb=F0B68CA5-4791-4376-BFCC-5F0100329FB6&si=CMKg9-nX07oCFSjZQgodcikACQ&tpr=hpsbsug&searchfor=test",
- "search",
- "Ask Toolbar",
- "test",
- true,
- },
- {
- "Dale search",
- "http://www.dalesearch.com/?q=+lego.nl+%2Fclub&s=web&as=0&rlz=0&babsrc=HP_ss",
- "search",
- "Dalesearch",
- " lego.nl /club",
- true,
- },
- {
- "Twitter redirect",
- "http://t.co/chrgFZDb",
- "social",
- "Twitter",
- "",
- true,
- },
- {
- "Facebook social",
- "http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.psychicbazaar.com&h=yAQHZtXxS&s=1",
- "social",
- "Facebook",
- "",
- true,
- },
- {
- "Facebook mobile",
- "http://m.facebook.com/l.php?u=http%3A%2F%2Fwww.psychicbazaar.com%2Fblog%2F2012%2F09%2Fpsychic-bazaar-reviews-tarot-foundations-31-days-to-read-tarot-with-confidence%2F&h=kAQGXKbf9&s=1",
- "social",
- "Facebook",
- "",
- true,
- },
- {
- "Odnoklassniki",
- "http://www.odnoklassniki.ru/dk?cmd=logExternal&st._aid=Conversations_Openlink&st.name=externalLinkRedirect&st.link=http%3A%2F%2Fwww.psychicbazaar.com%2Foracles%2F187-blue-angel-oracle.html",
- "social",
- "Odnoklassniki",
- "",
- true,
- },
- {
- "Tumblr social #1",
- "http://www.tumblr.com/dashboard",
- "social",
- "Tumblr",
- "",
- true,
- },
- {
- "Tumblr w subdomain",
- "http://psychicbazaar.tumblr.com/",
- "social",
- "Tumblr",
- "",
- true,
- },
- {
- "Yahoo! Mail",
- "http://36ohk6dgmcd1n-c.c.yom.mail.yahoo.net/om/api/1.0/openmail.app.invoke/36ohk6dgmcd1n/11/1.0.35/us/en-US/view.html/0",
- "email",
- "Yahoo! Mail",
- "",
- true,
- },
- {
- "Outlook.com mail",
- "http://co106w.col106.mail.live.com/default.aspx?rru=inbox",
- "email",
- "Outlook.com",
- "",
- true,
- },
- {
- "Orange Webmail",
- "http://webmail1m.orange.fr/webmail/fr_FR/read.html?FOLDER=SF_INBOX&IDMSG=8594&check=&SORTBY=31",
- "email",
- "Orange Webmail",
- "",
- true,
- },
- {
- "Internal HTTP",
- "http://www.snowplowanalytics.com/about/team",
- "internal",
- "",
- "",
- false,
- },
- {
- "Internal HTTPS",
- "https://www.snowplowanalytics.com/account/profile",
- "internal",
- "",
- "",
- false,
- },
- {
- "Referrer with no dot in host",
- "http://localhost/search?q=test",
- "unknown",
- "",
- "",
- false,
- },
-}
-
-func check(err error) {
- if err != nil {
- panic(err)
- }
-}
-
-func TestRefererParser(t *testing.T) {
- for _, tdata := range testData {
- res := Parse(tdata.uri)
- res.SetCurrent("https://www.snowplowanalytics.com/")
- if tdata.known != res.Known {
- t.Errorf("Bad known for %+v, expected:%+v, got:%v", tdata, tdata.known, res.Known)
- }
- if tdata.source != res.Referer {
- t.Errorf("Bad referer for %+v, expected:%+v, got:%v", tdata, tdata.source, res.Referer)
- }
- if tdata.medium != res.Medium {
- t.Errorf("Bad medium for %+v, expected:%+v, got:%v", tdata, tdata.medium, res.Medium)
- }
- if tdata.term != res.SearchTerm {
- t.Errorf("Bad term for %+v, expected:%+v, got:%v", tdata, tdata.term, res.SearchTerm)
- }
- }
-}
diff --git a/vendor/snowplow/referer-parser/java-scala/.gitignore b/vendor/snowplow/referer-parser/java-scala/.gitignore
deleted file mode 100644
index 21eb22ba5..000000000
--- a/vendor/snowplow/referer-parser/java-scala/.gitignore
+++ /dev/null
@@ -1,12 +0,0 @@
-*.class
-
-# Package Files #
-*.war
-*.ear
-
-# SBT Files #
-target/
-lib_managed/
-src_managed/
-project/boot/
-project/plugins/project/
diff --git a/vendor/snowplow/referer-parser/java-scala/CHANGELOG b/vendor/snowplow/referer-parser/java-scala/CHANGELOG
deleted file mode 100644
index 77388341b..000000000
--- a/vendor/snowplow/referer-parser/java-scala/CHANGELOG
+++ /dev/null
@@ -1,29 +0,0 @@
-Version 0.3.0 (2015-09-02)
---------------------------
-Added Taboola, Outbrain and other referers (#109)
-Updated vagrant up to work with latest Peru version (#110)
-Removed duplicate google.com.kh/imgres entry (#111)
-
-Version 0.2.3 (2014-02-01)
---------------------------
-Added dedicated Vagrant setup (#92)
-Added Turkish popular traffic provider platforms, thanks @cagataygurturk!
-Now building referer-parser against Java 6, not 7 (#84)
-
-Version 0.2.2 (2014-07-23)
---------------------------
-Fixed Java referer-parser doesn't work on Hadoop (#76)
-
-Version 0.2.1 (2014-07-16)
---------------------------
-Updated build process for local Maven publishing (#72)
-Bumped SBT to 0.13.2 (#73)
-Added support for Scala 2.10.4 and 2.11.1 (#75)
-
-Version 0.2.0 (2014-07-02)
---------------------------
-Added configurable list of domains which should count as "internal" (#18)
-Remove sbt-assembly and legacy Maven publish code (#71)
-Made tests JSON-driven (#4)
-Changed URI parsing to use `java.net.URL`, thanks @squeed! (#55)
-Added CHANGELOG (#68)
diff --git a/vendor/snowplow/referer-parser/java-scala/LICENSE-2.0.txt b/vendor/snowplow/referer-parser/java-scala/LICENSE-2.0.txt
deleted file mode 100644
index 7a4a3ea24..000000000
--- a/vendor/snowplow/referer-parser/java-scala/LICENSE-2.0.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/java-scala/README.md b/vendor/snowplow/referer-parser/java-scala/README.md
deleted file mode 100644
index a3f01cd26..000000000
--- a/vendor/snowplow/referer-parser/java-scala/README.md
+++ /dev/null
@@ -1,150 +0,0 @@
-# referer-parser Java/Scala library
-
-This is the Java and Scala implementation of [referer-parser] [referer-parser], the library for extracting attribution data from referer _(sic)_ URLs.
-
-The implementation uses the shared 'database' of known referers found in [`referers.yml`] [referers-yml].
-
-The Scala implementation is a core component of [Snowplow] [snowplow], the open-source web-scale analytics platform powered by Hadoop, Hive and Redshift.
-
-## Java
-
-### Usage
-
-Use referer-parser in Java like this:
-
-```java
-import com.snowplowanalytics.refererparser.Parser;
-
-...
-
-String refererUrl = "http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari";
-String pageUrl = "http:/www.psychicbazaar.com/shop" // Our current URL
-
-Parser refererParser = new Parser();
-Referer r = refererParser.parse(refererUrl, pageUrl);
-
-System.out.println(r.medium); // => "search"
-System.out.println(r.source); // => "Google"
-System.out.println(r.term); // => "gateway oracle cards denise linn"
-```
-
-### Installation
-
-Add the following code into your `HOME/.m2/settings.xml` to be able to use this repository:
-
-```xml
-
-
-
-
-
-
- com.snowplowanalytics
- SnowPlow Analytics
- http://maven.snplow.com/releases
-
- true
-
-
- true
-
-
-
-
-
-
-```
-
-Then add into your project's `pom.xml`:
-
-```xml
-
- com.snowplowanalytics
- referer-parser_2.11
- 0.3.0
-
-```
-
-## Scala
-
-### Usage
-
-Use referer-parser in Scala like this:
-
-```scala
-val refererUrl = "http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari"
-val pageUrl = "http:/www.psychicbazaar.com/shop" // Our current URL
-
-import com.snowplowanalytics.refererparser.scala.Parser
-for (r <- Parser.parse(refererUrl, pageUrl)) {
- println(r.medium) // => "search"
- for (s <- r.source) {
- println(s) // => "Google"
- }
- for (t <- r.term) {
- println(t) // => "gateway oracle cards denise linn"
- }
-}
-```
-
-You can also provide a list of domains which should be considered internal:
-
-```scala
-val refererUrl = "http://www.subdomain1.snowplowanalytics.com"
-val pageUrl = "http://www.snowplowanalytics.com"
-val internalDomains = List(
- "www.subdomain1.snowplowanalytics.com", "www.subdomain2.snowplowanalytics.com"
-)
-
-import com.snowplowanalytics.refererparser.scala.Parser
-
-for (r <- Parser.parse(refererUrl, pageUrl, internalDomains)) {
- println(r.medium) // => "internal"
- for (s <- r.source) {
- println(s) // => null
- }
- for (t <- r.term) {
- println(t) // => null
- }
-}
-```
-
-### Installation
-
-Add this to your SBT config:
-
-```scala
-// Resolver
-val snowplowRepo = "SnowPlow Repo" at "http://maven.snplow.com/releases/"
-
-// Dependency
-val refererParser = "com.snowplowanalytics" %% "referer-parser" % "0.3.0"
-```
-
-## Contributing
-
-1. Fork it
-2. Create your feature branch (`git checkout -b my-new-feature`)
-3. Commit your changes (`git commit -am 'Add some feature'`)
-4. Push to the branch (`git push origin my-new-feature`)
-5. Create new Pull Request
-
-## Copyright and license
-
-The referer-parser Java/Scala library is copyright 2012-2015 Snowplow Analytics Ltd.
-
-Licensed under the [Apache License, Version 2.0] [license] (the "License");
-you may not use this software except in compliance with the License.
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-[snowplow]: https://github.com/snowplow/snowplow
-
-[referer-parser]: https://github.com/snowplow/referer-parser
-[referers-yml]: https://github.com/snowplow/referer-parser/blob/master/referers.yml
-
-[license]: http://www.apache.org/licenses/LICENSE-2.0
diff --git a/vendor/snowplow/referer-parser/java-scala/project/BuildSettings.scala b/vendor/snowplow/referer-parser/java-scala/project/BuildSettings.scala
deleted file mode 100644
index 0ce995100..000000000
--- a/vendor/snowplow/referer-parser/java-scala/project/BuildSettings.scala
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * Copyright 2012-2013 Snowplow Analytics Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import sbt._
-import Keys._
-
-object BuildSettings {
-
- // Basic settings for our app
- lazy val basicSettings = Seq[Setting[_]](
- organization := "com.snowplowanalytics",
- version := "0.3.0",
- description := "Library for extracting marketing attribution data from referer URLs",
- scalaVersion := "2.9.1",
- crossScalaVersions := Seq("2.9.1", "2.10.4", "2.11.1"),
- scalacOptions := Seq("-deprecation", "-encoding", "utf8"),
- resolvers ++= Dependencies.resolutionRepos
- )
-
- // Publish settings
- // TODO: update with ivy credentials etc when we start using Nexus
- lazy val publishSettings = Seq[Setting[_]](
- // Enables publishing to maven repo
- publishMavenStyle := true,
-
- publishTo <<= version { version =>
- val basePath = "target/repo/%s".format {
- if (version.trim.endsWith("SNAPSHOT")) "snapshots/" else "releases/"
- }
- Some(Resolver.file("Local Maven repository", file(basePath)) transactional())
- }
- )
-
- lazy val buildSettings = basicSettings ++ publishSettings
-}
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/java-scala/project/Dependencies.scala b/vendor/snowplow/referer-parser/java-scala/project/Dependencies.scala
deleted file mode 100644
index 2bda4c017..000000000
--- a/vendor/snowplow/referer-parser/java-scala/project/Dependencies.scala
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * Copyright 2012-2013 Snowplow Analytics Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import sbt._
-import Keys._
-
-object Dependencies {
- val resolutionRepos = Seq(
- "SnowPlow Analytics Maven repo" at "http://maven.snplow.com/releases/"
- )
-
- object V {
- val yaml = "1.10"
- val http = "4.3.3"
- object specs2 {
- val _29 = "1.12.1"
- val _210 = "1.14"
- val _211 = "2.3.13"
- }
- val scalaCheck = "1.10.0"
- val scalaUtil = "0.1.0"
- val junit = "4.11"
- val json = "20140107"
- val json4s = "3.2.9"
- }
-
- object Libraries {
- val yaml = "org.yaml" % "snakeyaml" % V.yaml
- val httpClient = "org.apache.httpcomponents" % "httpclient" % V.http
- object specs2 {
- val _29 = "org.specs2" %% "specs2" % V.specs2._29 % "test"
- val _210 = "org.specs2" %% "specs2" % V.specs2._210 % "test"
- val _211 = "org.specs2" %% "specs2" % V.specs2._211 % "test"
- }
- val junit = "junit" % "junit" % V.junit % "test"
- val json = "org.json" % "json" % V.json % "test"
- val scalaCheck = "org.scalacheck" %% "scalacheck" % V.scalaCheck % "test"
- val scalaUtil = "com.snowplowanalytics" % "scala-util" % V.scalaUtil % "test"
- val json4sJackson = "org.json4s" %% "json4s-jackson" % V.json4s % "test"
- val json4sScalaz = "org.json4s" %% "json4s-scalaz" % V.json4s % "test"
- }
-
- def onVersion[A](all: Seq[A] = Seq(), on29: => Seq[A] = Seq(), on210: => Seq[A] = Seq(), on211: => Seq[A] = Seq()) =
- scalaVersion(v => all ++ (if (v.contains("2.9.")) {
- on29
- } else if (v.contains("2.10.")) {
- on210
- } else {
- on211
- }))
-}
diff --git a/vendor/snowplow/referer-parser/java-scala/project/RefererParserBuild.scala b/vendor/snowplow/referer-parser/java-scala/project/RefererParserBuild.scala
deleted file mode 100644
index 6a4e8cf32..000000000
--- a/vendor/snowplow/referer-parser/java-scala/project/RefererParserBuild.scala
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * Copyright 2012-2013 Snowplow Analytics Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import sbt._
-import Keys._
-
-object RefererParserBuild extends Build {
-
- import Dependencies._
- import BuildSettings._
-
- // Configure prompt to show current project
- override lazy val settings = super.settings :+ {
- shellPrompt := { s => Project.extract(s).currentProject.id + " > " }
- }
-
- // Define our project, with basic project information and library dependencies
- lazy val project = Project("referer-parser", file("."))
- .settings(buildSettings: _*)
- .settings(
- libraryDependencies <++= Dependencies.onVersion(
- all = Seq(
- Libraries.yaml,
- Libraries.httpClient,
- Libraries.scalaCheck,
- Libraries.scalaUtil,
- Libraries.junit,
- Libraries.json,
- Libraries.json4sJackson),
- on29 = Seq(Libraries.specs2._29),
- on210 = Seq(Libraries.specs2._210),
- on211 = Seq(Libraries.specs2._211)
- )
- )
-}
diff --git a/vendor/snowplow/referer-parser/java-scala/project/build.properties b/vendor/snowplow/referer-parser/java-scala/project/build.properties
deleted file mode 100644
index 8ac605a3d..000000000
--- a/vendor/snowplow/referer-parser/java-scala/project/build.properties
+++ /dev/null
@@ -1 +0,0 @@
-sbt.version=0.13.2
diff --git a/vendor/snowplow/referer-parser/java-scala/project/plugins.sbt b/vendor/snowplow/referer-parser/java-scala/project/plugins.sbt
deleted file mode 100644
index e69de29bb..000000000
diff --git a/vendor/snowplow/referer-parser/java-scala/src/main/java/com/snowplowanalytics/refererparser/CorruptYamlException.java b/vendor/snowplow/referer-parser/java-scala/src/main/java/com/snowplowanalytics/refererparser/CorruptYamlException.java
deleted file mode 100644
index 6f848401f..000000000
--- a/vendor/snowplow/referer-parser/java-scala/src/main/java/com/snowplowanalytics/refererparser/CorruptYamlException.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Copyright 2012-2013 Snowplow Analytics Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.snowplowanalytics.refererparser;
-
-public class CorruptYamlException extends Exception {
- public CorruptYamlException(String message) {
- super(message);
- }
-}
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/java-scala/src/main/java/com/snowplowanalytics/refererparser/Medium.java b/vendor/snowplow/referer-parser/java-scala/src/main/java/com/snowplowanalytics/refererparser/Medium.java
deleted file mode 100644
index 7465911bc..000000000
--- a/vendor/snowplow/referer-parser/java-scala/src/main/java/com/snowplowanalytics/refererparser/Medium.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * Copyright 2012-2013 Snowplow Analytics Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.snowplowanalytics.refererparser;
-
-/**
- * Enum for the types of referer
- * that we can detect - "medium"
- * in Google's language.
- *
- * @author Alex Dean (@alexatkeplar)
- */
-public enum Medium {
- UNKNOWN,
- INTERNAL,
- SEARCH,
- SOCIAL,
- EMAIL;
-
- static public Medium fromString(String medium) {
- return Medium.valueOf(medium.toUpperCase());
- }
-
- @Override
- public String toString() {
- return super.toString().toLowerCase();
- }
-}
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/java-scala/src/main/java/com/snowplowanalytics/refererparser/Parser.java b/vendor/snowplow/referer-parser/java-scala/src/main/java/com/snowplowanalytics/refererparser/Parser.java
deleted file mode 100644
index 5e9a37e51..000000000
--- a/vendor/snowplow/referer-parser/java-scala/src/main/java/com/snowplowanalytics/refererparser/Parser.java
+++ /dev/null
@@ -1,283 +0,0 @@
-/**
- * Copyright 2012-2013 Snowplow Analytics Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.snowplowanalytics.refererparser;
-
-// Java
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.nio.charset.Charset;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.List;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.Collections;
-
-// SnakeYAML
-import org.yaml.snakeyaml.Yaml;
-import org.yaml.snakeyaml.constructor.SafeConstructor;
-
-// Apache URLEncodedUtils
-import org.apache.http.NameValuePair;
-import org.apache.http.client.utils.URLEncodedUtils;
-
-/**
- * Java implementation of Referer Parser
- *
- * @author Alex Dean (@alexatkeplar)
- */
-public class Parser {
-
- private static final String REFERERS_YAML_PATH = "/referers.yml";
- private Map referers;
-
- /**
- * Holds the structure of each referer
- * in our lookup Map.
- */
- private static class RefererLookup {
- public Medium medium;
- public String source;
- public List parameters;
-
- public RefererLookup(Medium medium, String source, List parameters) {
- this.medium = medium;
- this.source = source;
- this.parameters = parameters;
- }
- }
-
- /**
- * Construct our Parser object using the
- * bundled referers.yml
- */
- public Parser() throws IOException, CorruptYamlException {
- this(Parser.class.getResourceAsStream(REFERERS_YAML_PATH));
- }
-
- /**
- * Construct our Parser object using a
- * InputStream (in YAML format)
- *
- * @param referersYaml The referers YAML
- * to load into our Parser, in
- * InputStream format
- */
- public Parser(InputStream referersStream) throws CorruptYamlException {
- referers = loadReferers(referersStream);
- }
-
- /**
- * Construct our Parser object using a
- * custom resource String
- *
- * @param referersResource The resource pointing
- * to the referers YAML file to load
- */
- public Parser(String referersResource) throws IOException, CorruptYamlException {
- this(Parser.class.getResourceAsStream(referersResource));
- }
-
- public Referer parse(URI refererUri, URI pageUri) {
- return parse(refererUri, pageUri.getHost());
- }
-
- public Referer parse(String refererUri, URI pageUri) throws URISyntaxException {
- return parse(refererUri, pageUri.getHost());
- }
-
- public Referer parse(String refererUri, String pageHost) throws URISyntaxException {
- if (refererUri == null || refererUri == "") return null;
- final URI uri = new URI(refererUri);
- return parse(uri, pageHost);
- }
-
- public Referer parse(URI refererUri, String pageHost) {
- return parse(refererUri, pageHost, Collections.emptyList());
- }
-
- public Referer parse(URI refererUri, String pageHost, List internalDomains) {
- if (refererUri == null) { return null; }
- return parse(refererUri.getScheme(), refererUri.getHost(), refererUri.getPath(), refererUri.getRawQuery(), pageHost, internalDomains);
- }
-
- public Referer parse(URL refererUrl, String pageHost){
- if (refererUrl == null) { return null; }
- return parse(refererUrl.getProtocol(), refererUrl.getHost(), refererUrl.getPath(), refererUrl.getQuery(), pageHost);
- }
-
- private Referer parse(String scheme, String host, String path, String query, String pageHost){
- return parse(scheme, host, path, query, pageHost, Collections.emptyList());
- }
-
- private Referer parse(String scheme, String host, String path, String query, String pageHost, List internalDomains){
-
- if (scheme == null || (!scheme.equals("http") && !scheme.equals("https"))) return null;
-
- // Internal link if hosts match exactly
- // TODO: would also be nice to:
- // 1. Support a list of other hosts which count as internal
- // 2. Have an algo for stripping subdomains before checking match
- if (host == null) return null; // Not a valid URL
- if (host.equals(pageHost)) return new Referer(Medium.INTERNAL, null, null);
- for (String s : internalDomains) {
- if (s.trim().equals(host))
- return new Referer(Medium.INTERNAL, null, null);
- }
-
- // Try to lookup our referer. First check with paths, then without.
- // This is the safest way of handling lookups
- RefererLookup referer = lookupReferer(host, path, true);
- if (referer == null) {
- referer = lookupReferer(host, path, false);
- }
-
- if (referer == null) {
- return new Referer(Medium.UNKNOWN, null, null); // Unknown referer, nothing more to do
- } else {
- // Potentially add a search term
- final String term = (referer.medium == Medium.SEARCH) ? extractSearchTerm(query, referer.parameters) : null;
- return new Referer(referer.medium, referer.source, term);
- }
- }
-
- /**
- * Recursive function to lookup a host (or partial host)
- * in our referers map.
- *
- * First check the host, then the host+full path, then the host+
- * one-level path.
- *
- * If not found, remove one subdomain-level off the front
- * of the host and try again.
- *
- * @param pageHost The host of the current page
- * @param pagePath The path to the current page
- * @param includePath Whether to include the path in the lookup
- *
- * @return a RefererLookup object populated with the given
- * referer, or null if not found
- */
- private RefererLookup lookupReferer(String refererHost, String refererPath, Boolean includePath) {
-
- // Check if domain+full path matches, e.g. for apollo.lv/portal/search/
- RefererLookup referer = (includePath) ? referers.get(refererHost + refererPath) : referers.get(refererHost);
-
- // Check if domain+one-level path matches, e.g. for orange.fr/webmail/fr_FR/read.html (in our YAML it's orange.fr/webmail)
- if (includePath && referer == null) {
- final String[] pathElements = refererPath.split("/");
- if (pathElements.length > 1) {
- referer = referers.get(refererHost + "/" + pathElements[1]);
- }
- }
-
- if (referer == null) {
- final int idx = refererHost.indexOf('.');
- if (idx == -1) {
- return null; // No "."? Let's quit.
- } else {
- return lookupReferer(refererHost.substring(idx + 1), refererPath, includePath); // Recurse
- }
- } else {
- return referer;
- }
- }
-
- private String extractSearchTerm(String query, List possibleParameters) {
-
- List params;
- try {
- params = URLEncodedUtils.parse(new URI("http://localhost?" + query), "UTF-8");
- // params = URLEncodedUtils.parse(query, Charset.forName("UTF-8")); because https://github.com/snowplow/referer-parser/issues/76
- } catch (IllegalArgumentException iae) {
- return null;
- } catch (URISyntaxException use) { // For new URI
- return null;
- }
-
- for (NameValuePair pair : params) {
- final String name = pair.getName();
- final String value = pair.getValue();
-
- if (possibleParameters.contains(name)) {
- return value;
- }
- }
- return null;
- }
-
- /**
- * Builds the map of hosts to referers from the
- * input YAML file.
- *
- * @param referersYaml An InputStream containing the
- * referers database in YAML format.
- *
- * @return a Map where the key is the hostname of each
- * referer and the value (RefererLookup)
- * contains all known info about this referer
- */
- private Map loadReferers(InputStream referersYaml) throws CorruptYamlException {
-
- Yaml yaml = new Yaml(new SafeConstructor());
- Map> rawReferers = (Map>) yaml.load(referersYaml);
-
- // This will store all of our referers
- Map referers = new HashMap();
-
- // Outer loop is all referers under a given medium
- for (Map.Entry> mediumReferers : rawReferers.entrySet()) {
-
- Medium medium = Medium.fromString(mediumReferers.getKey());
-
- // Inner loop is individual referers
- for (Map.Entry referer : mediumReferers.getValue().entrySet()) {
-
- String sourceName = referer.getKey();
- Map> refererMap = referer.getValue();
-
- // Validate
- List parameters = refererMap.get("parameters");
- if (medium == Medium.SEARCH) {
- if (parameters == null) {
- throw new CorruptYamlException("No parameters found for search referer '" + sourceName + "'");
- }
- } else {
- if (parameters != null) {
- throw new CorruptYamlException("Parameters not supported for non-search referer '" + sourceName + "'");
- }
- }
- List domains = refererMap.get("domains");
- if (domains == null) {
- throw new CorruptYamlException("No domains found for referer '" + sourceName + "'");
- }
-
- // Our hash needs referer domain as the
- // key, so let's expand
- for (String domain : domains) {
- if (referers.containsValue(domain)) {
- throw new CorruptYamlException("Duplicate of domain '" + domain + "' found");
- }
- referers.put(domain, new RefererLookup(medium, sourceName, parameters));
- }
- }
- }
-
- return referers;
- }
-}
diff --git a/vendor/snowplow/referer-parser/java-scala/src/main/java/com/snowplowanalytics/refererparser/Referer.java b/vendor/snowplow/referer-parser/java-scala/src/main/java/com/snowplowanalytics/refererparser/Referer.java
deleted file mode 100644
index 177d55679..000000000
--- a/vendor/snowplow/referer-parser/java-scala/src/main/java/com/snowplowanalytics/refererparser/Referer.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * Copyright 2012-2013 Snowplow Analytics Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.snowplowanalytics.refererparser;
-
-/**
- * Referer data class
- *
- * @author Alex Dean (@alexatkeplar)
- */
-public class Referer {
- public final Medium medium;
- public final String source, term;
-
- public Referer(Medium medium, String source, String term) {
- this.medium = medium;
- this.source = source;
- this.term = term;
- }
-
- @Override
- public boolean equals(Object other) {
- if (other == this) return true;
- if (!(other instanceof Referer)) return false;
-
- Referer r = (Referer) other;
- return ((this.medium != null && this.medium.equals(r.medium)) || this.medium == r.medium) &&
- ((this.source != null && this.source.equals(r.source)) || this.source == r.source) &&
- ((this.term != null && this.term.equals(r.term)) || this.term == r.term);
- }
-
- @Override
- public int hashCode() {
- int h = medium == null ? 0 : medium.hashCode();
- h += source == null ? 0 : source.hashCode();
- h += term == null ? 0 : term.hashCode();
- return h;
- }
-
- @Override
- public String toString() {
- return String.format("{medium: %s, source: %s, term: %s}",
- medium, source, term);
- }
-}
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/java-scala/src/main/resources/referers.json b/vendor/snowplow/referer-parser/java-scala/src/main/resources/referers.json
deleted file mode 100644
index 460975ef2..000000000
--- a/vendor/snowplow/referer-parser/java-scala/src/main/resources/referers.json
+++ /dev/null
@@ -1,4090 +0,0 @@
-{
- "unknown": {
- "Outbrain": {
- "domains": [
- "paid.outbrain.com"
- ]
- },
- "Google": {
- "domains": [
- "support.google.com",
- "developers.google.com",
- "maps.google.com",
- "accounts.google.com",
- "drive.google.com",
- "sites.google.com",
- "groups.google.com",
- "groups.google.co.uk",
- "news.google.co.uk"
- ]
- },
- "Taboola": {
- "domains": [
- "trc.taboola.com",
- "api.taboola.com"
- ]
- },
- "Yahoo!": {
- "domains": [
- "finance.yahoo.com",
- "news.yahoo.com",
- "eurosport.yahoo.com",
- "sports.yahoo.com",
- "astrology.yahoo.com",
- "travel.yahoo.com",
- "answers.yahoo.com",
- "screen.yahoo.com",
- "weather.yahoo.com",
- "messenger.yahoo.com",
- "games.yahoo.com",
- "shopping.yahoo.net",
- "movies.yahoo.com",
- "cars.yahoo.com",
- "lifestyle.yahoo.com",
- "omg.yahoo.com",
- "match.yahoo.net"
- ]
- }
- },
- "search": {
- "TalkTalk": {
- "domains": [
- "www.talktalk.co.uk"
- ],
- "parameters": [
- "query"
- ]
- },
- "1.cz": {
- "domains": [
- "1.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Softonic": {
- "domains": [
- "search.softonic.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "GAIS": {
- "domains": [
- "gais.cs.ccu.edu.tw"
- ],
- "parameters": [
- "q"
- ]
- },
- "Freecause": {
- "domains": [
- "search.freecause.com"
- ],
- "parameters": [
- "p"
- ]
- },
- "360.cn": {
- "domains": [
- "so.360.cn",
- "www.so.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "RPMFind": {
- "domains": [
- "rpmfind.net",
- "fr2.rpmfind.net"
- ],
- "parameters": [
- "query"
- ]
- },
- "Comcast": {
- "domains": [
- "serach.comcast.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Voila": {
- "domains": [
- "search.ke.voila.fr",
- "www.lemoteur.fr"
- ],
- "parameters": [
- "rdata",
- "kw"
- ]
- },
- "Nifty": {
- "domains": [
- "search.nifty.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Atlas": {
- "domains": [
- "searchatlas.centrum.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Lo.st": {
- "domains": [
- "lo.st"
- ],
- "parameters": [
- "x_query"
- ]
- },
- "DasTelefonbuch": {
- "domains": [
- "www1.dastelefonbuch.de"
- ],
- "parameters": [
- "kw"
- ]
- },
- "Fireball": {
- "domains": [
- "www.fireball.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "1und1": {
- "domains": [
- "search.1und1.de"
- ],
- "parameters": [
- "su"
- ]
- },
- "Virgilio": {
- "domains": [
- "ricerca.virgilio.it",
- "ricercaimmagini.virgilio.it",
- "ricercavideo.virgilio.it",
- "ricercanews.virgilio.it",
- "mobile.virgilio.it"
- ],
- "parameters": [
- "qs"
- ]
- },
- "Web.nl": {
- "domains": [
- "www.web.nl"
- ],
- "parameters": [
- "zoekwoord"
- ]
- },
- "Plazoo": {
- "domains": [
- "www.plazoo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Goyellow.de": {
- "domains": [
- "www.goyellow.de"
- ],
- "parameters": [
- "MDN"
- ]
- },
- "AOL": {
- "domains": [
- "search.aol.com",
- "search.aol.it",
- "aolsearch.aol.com",
- "aolsearch.com",
- "www.aolrecherche.aol.fr",
- "www.aolrecherches.aol.fr",
- "www.aolimages.aol.fr",
- "aim.search.aol.com",
- "www.recherche.aol.fr",
- "find.web.aol.com",
- "recherche.aol.ca",
- "aolsearch.aol.co.uk",
- "search.aol.co.uk",
- "aolrecherche.aol.fr",
- "sucheaol.aol.de",
- "suche.aol.de",
- "suche.aolsvc.de",
- "aolbusqueda.aol.com.mx",
- "alicesuche.aol.de",
- "alicesuchet.aol.de",
- "suchet2.aol.de",
- "search.hp.my.aol.com.au",
- "search.hp.my.aol.de",
- "search.hp.my.aol.it",
- "search-intl.netscape.com"
- ],
- "parameters": [
- "q",
- "query"
- ]
- },
- "Acoon": {
- "domains": [
- "www.acoon.de"
- ],
- "parameters": [
- "begriff"
- ]
- },
- "Free": {
- "domains": [
- "search.free.fr",
- "search1-2.free.fr",
- "search1-1.free.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "Apollo Latvia": {
- "domains": [
- "apollo.lv/portal/search/"
- ],
- "parameters": [
- "q"
- ]
- },
- "HighBeam": {
- "domains": [
- "www.highbeam.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "I-play": {
- "domains": [
- "start.iplay.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "FriendFeed": {
- "domains": [
- "friendfeed.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yasni": {
- "domains": [
- "www.yasni.de",
- "www.yasni.com",
- "www.yasni.co.uk",
- "www.yasni.ch",
- "www.yasni.at"
- ],
- "parameters": [
- "query"
- ]
- },
- "Gigablast": {
- "domains": [
- "www.gigablast.com",
- "dir.gigablast.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "arama": {
- "domains": [
- "arama.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Fixsuche": {
- "domains": [
- "www.fixsuche.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Apontador": {
- "domains": [
- "apontador.com.br",
- "www.apontador.com.br"
- ],
- "parameters": [
- "q"
- ]
- },
- "Search.com": {
- "domains": [
- "www.search.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Monstercrawler": {
- "domains": [
- "www.monstercrawler.com"
- ],
- "parameters": [
- "qry"
- ]
- },
- "Google Images": {
- "domains": [
- "google.ac/imgres",
- "google.ad/imgres",
- "google.ae/imgres",
- "google.am/imgres",
- "google.as/imgres",
- "google.at/imgres",
- "google.az/imgres",
- "google.ba/imgres",
- "google.be/imgres",
- "google.bf/imgres",
- "google.bg/imgres",
- "google.bi/imgres",
- "google.bj/imgres",
- "google.bs/imgres",
- "google.by/imgres",
- "google.ca/imgres",
- "google.cat/imgres",
- "google.cc/imgres",
- "google.cd/imgres",
- "google.cf/imgres",
- "google.cg/imgres",
- "google.ch/imgres",
- "google.ci/imgres",
- "google.cl/imgres",
- "google.cm/imgres",
- "google.cn/imgres",
- "google.co.bw/imgres",
- "google.co.ck/imgres",
- "google.co.cr/imgres",
- "google.co.id/imgres",
- "google.co.il/imgres",
- "google.co.in/imgres",
- "google.co.jp/imgres",
- "google.co.ke/imgres",
- "google.co.kr/imgres",
- "google.co.ls/imgres",
- "google.co.ma/imgres",
- "google.co.mz/imgres",
- "google.co.nz/imgres",
- "google.co.th/imgres",
- "google.co.tz/imgres",
- "google.co.ug/imgres",
- "google.co.uk/imgres",
- "google.co.uz/imgres",
- "google.co.ve/imgres",
- "google.co.vi/imgres",
- "google.co.za/imgres",
- "google.co.zm/imgres",
- "google.co.zw/imgres",
- "google.com/imgres",
- "google.com.af/imgres",
- "google.com.ag/imgres",
- "google.com.ai/imgres",
- "google.com.ar/imgres",
- "google.com.au/imgres",
- "google.com.bd/imgres",
- "google.com.bh/imgres",
- "google.com.bn/imgres",
- "google.com.bo/imgres",
- "google.com.br/imgres",
- "google.com.by/imgres",
- "google.com.bz/imgres",
- "google.com.co/imgres",
- "google.com.cu/imgres",
- "google.com.cy/imgres",
- "google.com.do/imgres",
- "google.com.ec/imgres",
- "google.com.eg/imgres",
- "google.com.et/imgres",
- "google.com.fj/imgres",
- "google.com.gh/imgres",
- "google.com.gi/imgres",
- "google.com.gt/imgres",
- "google.com.hk/imgres",
- "google.com.jm/imgres",
- "google.com.kh/imgres",
- "google.com.kw/imgres",
- "google.com.lb/imgres",
- "google.com.lc/imgres",
- "google.com.ly/imgres",
- "google.com.mt/imgres",
- "google.com.mx/imgres",
- "google.com.my/imgres",
- "google.com.na/imgres",
- "google.com.nf/imgres",
- "google.com.ng/imgres",
- "google.com.ni/imgres",
- "google.com.np/imgres",
- "google.com.om/imgres",
- "google.com.pa/imgres",
- "google.com.pe/imgres",
- "google.com.ph/imgres",
- "google.com.pk/imgres",
- "google.com.pr/imgres",
- "google.com.py/imgres",
- "google.com.qa/imgres",
- "google.com.sa/imgres",
- "google.com.sb/imgres",
- "google.com.sg/imgres",
- "google.com.sl/imgres",
- "google.com.sv/imgres",
- "google.com.tj/imgres",
- "google.com.tn/imgres",
- "google.com.tr/imgres",
- "google.com.tw/imgres",
- "google.com.ua/imgres",
- "google.com.uy/imgres",
- "google.com.vc/imgres",
- "google.com.vn/imgres",
- "google.cv/imgres",
- "google.cz/imgres",
- "google.de/imgres",
- "google.dj/imgres",
- "google.dk/imgres",
- "google.dm/imgres",
- "google.dz/imgres",
- "google.ee/imgres",
- "google.es/imgres",
- "google.fi/imgres",
- "google.fm/imgres",
- "google.fr/imgres",
- "google.ga/imgres",
- "google.gd/imgres",
- "google.ge/imgres",
- "google.gf/imgres",
- "google.gg/imgres",
- "google.gl/imgres",
- "google.gm/imgres",
- "google.gp/imgres",
- "google.gr/imgres",
- "google.gy/imgres",
- "google.hn/imgres",
- "google.hr/imgres",
- "google.ht/imgres",
- "google.hu/imgres",
- "google.ie/imgres",
- "google.im/imgres",
- "google.io/imgres",
- "google.iq/imgres",
- "google.is/imgres",
- "google.it/imgres",
- "google.it.ao/imgres",
- "google.je/imgres",
- "google.jo/imgres",
- "google.kg/imgres",
- "google.ki/imgres",
- "google.kz/imgres",
- "google.la/imgres",
- "google.li/imgres",
- "google.lk/imgres",
- "google.lt/imgres",
- "google.lu/imgres",
- "google.lv/imgres",
- "google.md/imgres",
- "google.me/imgres",
- "google.mg/imgres",
- "google.mk/imgres",
- "google.ml/imgres",
- "google.mn/imgres",
- "google.ms/imgres",
- "google.mu/imgres",
- "google.mv/imgres",
- "google.mw/imgres",
- "google.ne/imgres",
- "google.nl/imgres",
- "google.no/imgres",
- "google.nr/imgres",
- "google.nu/imgres",
- "google.pl/imgres",
- "google.pn/imgres",
- "google.ps/imgres",
- "google.pt/imgres",
- "google.ro/imgres",
- "google.rs/imgres",
- "google.ru/imgres",
- "google.rw/imgres",
- "google.sc/imgres",
- "google.se/imgres",
- "google.sh/imgres",
- "google.si/imgres",
- "google.sk/imgres",
- "google.sm/imgres",
- "google.sn/imgres",
- "google.so/imgres",
- "google.st/imgres",
- "google.td/imgres",
- "google.tg/imgres",
- "google.tk/imgres",
- "google.tl/imgres",
- "google.tm/imgres",
- "google.to/imgres",
- "google.tt/imgres",
- "google.us/imgres",
- "google.vg/imgres",
- "google.vu/imgres",
- "images.google.ws",
- "images.google.ac",
- "images.google.ad",
- "images.google.ae",
- "images.google.am",
- "images.google.as",
- "images.google.at",
- "images.google.az",
- "images.google.ba",
- "images.google.be",
- "images.google.bf",
- "images.google.bg",
- "images.google.bi",
- "images.google.bj",
- "images.google.bs",
- "images.google.by",
- "images.google.ca",
- "images.google.cat",
- "images.google.cc",
- "images.google.cd",
- "images.google.cf",
- "images.google.cg",
- "images.google.ch",
- "images.google.ci",
- "images.google.cl",
- "images.google.cm",
- "images.google.cn",
- "images.google.co.bw",
- "images.google.co.ck",
- "images.google.co.cr",
- "images.google.co.id",
- "images.google.co.il",
- "images.google.co.in",
- "images.google.co.jp",
- "images.google.co.ke",
- "images.google.co.kr",
- "images.google.co.ls",
- "images.google.co.ma",
- "images.google.co.mz",
- "images.google.co.nz",
- "images.google.co.th",
- "images.google.co.tz",
- "images.google.co.ug",
- "images.google.co.uk",
- "images.google.co.uz",
- "images.google.co.ve",
- "images.google.co.vi",
- "images.google.co.za",
- "images.google.co.zm",
- "images.google.co.zw",
- "images.google.com",
- "images.google.com.af",
- "images.google.com.ag",
- "images.google.com.ai",
- "images.google.com.ar",
- "images.google.com.au",
- "images.google.com.bd",
- "images.google.com.bh",
- "images.google.com.bn",
- "images.google.com.bo",
- "images.google.com.br",
- "images.google.com.by",
- "images.google.com.bz",
- "images.google.com.co",
- "images.google.com.cu",
- "images.google.com.cy",
- "images.google.com.do",
- "images.google.com.ec",
- "images.google.com.eg",
- "images.google.com.et",
- "images.google.com.fj",
- "images.google.com.gh",
- "images.google.com.gi",
- "images.google.com.gt",
- "images.google.com.hk",
- "images.google.com.jm",
- "images.google.com.kh",
- "images.google.com.kh",
- "images.google.com.kw",
- "images.google.com.lb",
- "images.google.com.lc",
- "images.google.com.ly",
- "images.google.com.mt",
- "images.google.com.mx",
- "images.google.com.my",
- "images.google.com.na",
- "images.google.com.nf",
- "images.google.com.ng",
- "images.google.com.ni",
- "images.google.com.np",
- "images.google.com.om",
- "images.google.com.pa",
- "images.google.com.pe",
- "images.google.com.ph",
- "images.google.com.pk",
- "images.google.com.pr",
- "images.google.com.py",
- "images.google.com.qa",
- "images.google.com.sa",
- "images.google.com.sb",
- "images.google.com.sg",
- "images.google.com.sl",
- "images.google.com.sv",
- "images.google.com.tj",
- "images.google.com.tn",
- "images.google.com.tr",
- "images.google.com.tw",
- "images.google.com.ua",
- "images.google.com.uy",
- "images.google.com.vc",
- "images.google.com.vn",
- "images.google.cv",
- "images.google.cz",
- "images.google.de",
- "images.google.dj",
- "images.google.dk",
- "images.google.dm",
- "images.google.dz",
- "images.google.ee",
- "images.google.es",
- "images.google.fi",
- "images.google.fm",
- "images.google.fr",
- "images.google.ga",
- "images.google.gd",
- "images.google.ge",
- "images.google.gf",
- "images.google.gg",
- "images.google.gl",
- "images.google.gm",
- "images.google.gp",
- "images.google.gr",
- "images.google.gy",
- "images.google.hn",
- "images.google.hr",
- "images.google.ht",
- "images.google.hu",
- "images.google.ie",
- "images.google.im",
- "images.google.io",
- "images.google.iq",
- "images.google.is",
- "images.google.it",
- "images.google.it.ao",
- "images.google.je",
- "images.google.jo",
- "images.google.kg",
- "images.google.ki",
- "images.google.kz",
- "images.google.la",
- "images.google.li",
- "images.google.lk",
- "images.google.lt",
- "images.google.lu",
- "images.google.lv",
- "images.google.md",
- "images.google.me",
- "images.google.mg",
- "images.google.mk",
- "images.google.ml",
- "images.google.mn",
- "images.google.ms",
- "images.google.mu",
- "images.google.mv",
- "images.google.mw",
- "images.google.ne",
- "images.google.nl",
- "images.google.no",
- "images.google.nr",
- "images.google.nu",
- "images.google.pl",
- "images.google.pn",
- "images.google.ps",
- "images.google.pt",
- "images.google.ro",
- "images.google.rs",
- "images.google.ru",
- "images.google.rw",
- "images.google.sc",
- "images.google.se",
- "images.google.sh",
- "images.google.si",
- "images.google.sk",
- "images.google.sm",
- "images.google.sn",
- "images.google.so",
- "images.google.st",
- "images.google.td",
- "images.google.tg",
- "images.google.tk",
- "images.google.tl",
- "images.google.tm",
- "images.google.to",
- "images.google.tt",
- "images.google.us",
- "images.google.vg",
- "images.google.vu",
- "images.google.ws"
- ],
- "parameters": [
- "q"
- ]
- },
- "ABCs\u00f8k": {
- "domains": [
- "abcsolk.no",
- "verden.abcsok.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Google Product Search": {
- "domains": [
- "google.ac/products",
- "google.ad/products",
- "google.ae/products",
- "google.am/products",
- "google.as/products",
- "google.at/products",
- "google.az/products",
- "google.ba/products",
- "google.be/products",
- "google.bf/products",
- "google.bg/products",
- "google.bi/products",
- "google.bj/products",
- "google.bs/products",
- "google.by/products",
- "google.ca/products",
- "google.cat/products",
- "google.cc/products",
- "google.cd/products",
- "google.cf/products",
- "google.cg/products",
- "google.ch/products",
- "google.ci/products",
- "google.cl/products",
- "google.cm/products",
- "google.cn/products",
- "google.co.bw/products",
- "google.co.ck/products",
- "google.co.cr/products",
- "google.co.id/products",
- "google.co.il/products",
- "google.co.in/products",
- "google.co.jp/products",
- "google.co.ke/products",
- "google.co.kr/products",
- "google.co.ls/products",
- "google.co.ma/products",
- "google.co.mz/products",
- "google.co.nz/products",
- "google.co.th/products",
- "google.co.tz/products",
- "google.co.ug/products",
- "google.co.uk/products",
- "google.co.uz/products",
- "google.co.ve/products",
- "google.co.vi/products",
- "google.co.za/products",
- "google.co.zm/products",
- "google.co.zw/products",
- "google.com/products",
- "google.com.af/products",
- "google.com.ag/products",
- "google.com.ai/products",
- "google.com.ar/products",
- "google.com.au/products",
- "google.com.bd/products",
- "google.com.bh/products",
- "google.com.bn/products",
- "google.com.bo/products",
- "google.com.br/products",
- "google.com.by/products",
- "google.com.bz/products",
- "google.com.co/products",
- "google.com.cu/products",
- "google.com.cy/products",
- "google.com.do/products",
- "google.com.ec/products",
- "google.com.eg/products",
- "google.com.et/products",
- "google.com.fj/products",
- "google.com.gh/products",
- "google.com.gi/products",
- "google.com.gt/products",
- "google.com.hk/products",
- "google.com.jm/products",
- "google.com.kh/products",
- "google.com.kh/products",
- "google.com.kw/products",
- "google.com.lb/products",
- "google.com.lc/products",
- "google.com.ly/products",
- "google.com.mt/products",
- "google.com.mx/products",
- "google.com.my/products",
- "google.com.na/products",
- "google.com.nf/products",
- "google.com.ng/products",
- "google.com.ni/products",
- "google.com.np/products",
- "google.com.om/products",
- "google.com.pa/products",
- "google.com.pe/products",
- "google.com.ph/products",
- "google.com.pk/products",
- "google.com.pr/products",
- "google.com.py/products",
- "google.com.qa/products",
- "google.com.sa/products",
- "google.com.sb/products",
- "google.com.sg/products",
- "google.com.sl/products",
- "google.com.sv/products",
- "google.com.tj/products",
- "google.com.tn/products",
- "google.com.tr/products",
- "google.com.tw/products",
- "google.com.ua/products",
- "google.com.uy/products",
- "google.com.vc/products",
- "google.com.vn/products",
- "google.cv/products",
- "google.cz/products",
- "google.de/products",
- "google.dj/products",
- "google.dk/products",
- "google.dm/products",
- "google.dz/products",
- "google.ee/products",
- "google.es/products",
- "google.fi/products",
- "google.fm/products",
- "google.fr/products",
- "google.ga/products",
- "google.gd/products",
- "google.ge/products",
- "google.gf/products",
- "google.gg/products",
- "google.gl/products",
- "google.gm/products",
- "google.gp/products",
- "google.gr/products",
- "google.gy/products",
- "google.hn/products",
- "google.hr/products",
- "google.ht/products",
- "google.hu/products",
- "google.ie/products",
- "google.im/products",
- "google.io/products",
- "google.iq/products",
- "google.is/products",
- "google.it/products",
- "google.it.ao/products",
- "google.je/products",
- "google.jo/products",
- "google.kg/products",
- "google.ki/products",
- "google.kz/products",
- "google.la/products",
- "google.li/products",
- "google.lk/products",
- "google.lt/products",
- "google.lu/products",
- "google.lv/products",
- "google.md/products",
- "google.me/products",
- "google.mg/products",
- "google.mk/products",
- "google.ml/products",
- "google.mn/products",
- "google.ms/products",
- "google.mu/products",
- "google.mv/products",
- "google.mw/products",
- "google.ne/products",
- "google.nl/products",
- "google.no/products",
- "google.nr/products",
- "google.nu/products",
- "google.pl/products",
- "google.pn/products",
- "google.ps/products",
- "google.pt/products",
- "google.ro/products",
- "google.rs/products",
- "google.ru/products",
- "google.rw/products",
- "google.sc/products",
- "google.se/products",
- "google.sh/products",
- "google.si/products",
- "google.sk/products",
- "google.sm/products",
- "google.sn/products",
- "google.so/products",
- "google.st/products",
- "google.td/products",
- "google.tg/products",
- "google.tk/products",
- "google.tl/products",
- "google.tm/products",
- "google.to/products",
- "google.tt/products",
- "google.us/products",
- "google.vg/products",
- "google.vu/products",
- "google.ws/products",
- "www.google.ac/products",
- "www.google.ad/products",
- "www.google.ae/products",
- "www.google.am/products",
- "www.google.as/products",
- "www.google.at/products",
- "www.google.az/products",
- "www.google.ba/products",
- "www.google.be/products",
- "www.google.bf/products",
- "www.google.bg/products",
- "www.google.bi/products",
- "www.google.bj/products",
- "www.google.bs/products",
- "www.google.by/products",
- "www.google.ca/products",
- "www.google.cat/products",
- "www.google.cc/products",
- "www.google.cd/products",
- "www.google.cf/products",
- "www.google.cg/products",
- "www.google.ch/products",
- "www.google.ci/products",
- "www.google.cl/products",
- "www.google.cm/products",
- "www.google.cn/products",
- "www.google.co.bw/products",
- "www.google.co.ck/products",
- "www.google.co.cr/products",
- "www.google.co.id/products",
- "www.google.co.il/products",
- "www.google.co.in/products",
- "www.google.co.jp/products",
- "www.google.co.ke/products",
- "www.google.co.kr/products",
- "www.google.co.ls/products",
- "www.google.co.ma/products",
- "www.google.co.mz/products",
- "www.google.co.nz/products",
- "www.google.co.th/products",
- "www.google.co.tz/products",
- "www.google.co.ug/products",
- "www.google.co.uk/products",
- "www.google.co.uz/products",
- "www.google.co.ve/products",
- "www.google.co.vi/products",
- "www.google.co.za/products",
- "www.google.co.zm/products",
- "www.google.co.zw/products",
- "www.google.com/products",
- "www.google.com.af/products",
- "www.google.com.ag/products",
- "www.google.com.ai/products",
- "www.google.com.ar/products",
- "www.google.com.au/products",
- "www.google.com.bd/products",
- "www.google.com.bh/products",
- "www.google.com.bn/products",
- "www.google.com.bo/products",
- "www.google.com.br/products",
- "www.google.com.by/products",
- "www.google.com.bz/products",
- "www.google.com.co/products",
- "www.google.com.cu/products",
- "www.google.com.cy/products",
- "www.google.com.do/products",
- "www.google.com.ec/products",
- "www.google.com.eg/products",
- "www.google.com.et/products",
- "www.google.com.fj/products",
- "www.google.com.gh/products",
- "www.google.com.gi/products",
- "www.google.com.gt/products",
- "www.google.com.hk/products",
- "www.google.com.jm/products",
- "www.google.com.kh/products",
- "www.google.com.kh/products",
- "www.google.com.kw/products",
- "www.google.com.lb/products",
- "www.google.com.lc/products",
- "www.google.com.ly/products",
- "www.google.com.mt/products",
- "www.google.com.mx/products",
- "www.google.com.my/products",
- "www.google.com.na/products",
- "www.google.com.nf/products",
- "www.google.com.ng/products",
- "www.google.com.ni/products",
- "www.google.com.np/products",
- "www.google.com.om/products",
- "www.google.com.pa/products",
- "www.google.com.pe/products",
- "www.google.com.ph/products",
- "www.google.com.pk/products",
- "www.google.com.pr/products",
- "www.google.com.py/products",
- "www.google.com.qa/products",
- "www.google.com.sa/products",
- "www.google.com.sb/products",
- "www.google.com.sg/products",
- "www.google.com.sl/products",
- "www.google.com.sv/products",
- "www.google.com.tj/products",
- "www.google.com.tn/products",
- "www.google.com.tr/products",
- "www.google.com.tw/products",
- "www.google.com.ua/products",
- "www.google.com.uy/products",
- "www.google.com.vc/products",
- "www.google.com.vn/products",
- "www.google.cv/products",
- "www.google.cz/products",
- "www.google.de/products",
- "www.google.dj/products",
- "www.google.dk/products",
- "www.google.dm/products",
- "www.google.dz/products",
- "www.google.ee/products",
- "www.google.es/products",
- "www.google.fi/products",
- "www.google.fm/products",
- "www.google.fr/products",
- "www.google.ga/products",
- "www.google.gd/products",
- "www.google.ge/products",
- "www.google.gf/products",
- "www.google.gg/products",
- "www.google.gl/products",
- "www.google.gm/products",
- "www.google.gp/products",
- "www.google.gr/products",
- "www.google.gy/products",
- "www.google.hn/products",
- "www.google.hr/products",
- "www.google.ht/products",
- "www.google.hu/products",
- "www.google.ie/products",
- "www.google.im/products",
- "www.google.io/products",
- "www.google.iq/products",
- "www.google.is/products",
- "www.google.it/products",
- "www.google.it.ao/products",
- "www.google.je/products",
- "www.google.jo/products",
- "www.google.kg/products",
- "www.google.ki/products",
- "www.google.kz/products",
- "www.google.la/products",
- "www.google.li/products",
- "www.google.lk/products",
- "www.google.lt/products",
- "www.google.lu/products",
- "www.google.lv/products",
- "www.google.md/products",
- "www.google.me/products",
- "www.google.mg/products",
- "www.google.mk/products",
- "www.google.ml/products",
- "www.google.mn/products",
- "www.google.ms/products",
- "www.google.mu/products",
- "www.google.mv/products",
- "www.google.mw/products",
- "www.google.ne/products",
- "www.google.nl/products",
- "www.google.no/products",
- "www.google.nr/products",
- "www.google.nu/products",
- "www.google.pl/products",
- "www.google.pn/products",
- "www.google.ps/products",
- "www.google.pt/products",
- "www.google.ro/products",
- "www.google.rs/products",
- "www.google.ru/products",
- "www.google.rw/products",
- "www.google.sc/products",
- "www.google.se/products",
- "www.google.sh/products",
- "www.google.si/products",
- "www.google.sk/products",
- "www.google.sm/products",
- "www.google.sn/products",
- "www.google.so/products",
- "www.google.st/products",
- "www.google.td/products",
- "www.google.tg/products",
- "www.google.tk/products",
- "www.google.tl/products",
- "www.google.tm/products",
- "www.google.to/products",
- "www.google.tt/products",
- "www.google.us/products",
- "www.google.vg/products",
- "www.google.vu/products",
- "www.google.ws/products"
- ],
- "parameters": [
- "q"
- ]
- },
- "DasOertliche": {
- "domains": [
- "www.dasoertliche.de"
- ],
- "parameters": [
- "kw"
- ]
- },
- "InfoSpace": {
- "domains": [
- "infospace.com",
- "dogpile.com",
- "www.dogpile.com",
- "metacrawler.com",
- "webfetch.com",
- "webcrawler.com",
- "search.kiwee.com",
- "isearch.babylon.com",
- "start.facemoods.com",
- "search.magnetic.com",
- "search.searchcompletion.com",
- "clusty.com"
- ],
- "parameters": [
- "q",
- "s"
- ]
- },
- "Weborama": {
- "domains": [
- "www.weborama.com"
- ],
- "parameters": [
- "QUERY"
- ]
- },
- "Bluewin": {
- "domains": [
- "search.bluewin.ch"
- ],
- "parameters": [
- "searchTerm"
- ]
- },
- "Neti": {
- "domains": [
- "www.neti.ee"
- ],
- "parameters": [
- "query"
- ]
- },
- "Winamp": {
- "domains": [
- "search.winamp.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Nigma": {
- "domains": [
- "nigma.ru"
- ],
- "parameters": [
- "s"
- ]
- },
- "Yahoo! Images": {
- "domains": [
- "image.yahoo.cn",
- "images.search.yahoo.com"
- ],
- "parameters": [
- "p",
- "q"
- ]
- },
- "Exalead": {
- "domains": [
- "www.exalead.fr",
- "www.exalead.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Teoma": {
- "domains": [
- "www.teoma.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Needtofind": {
- "domains": [
- "ko.search.need2find.com"
- ],
- "parameters": [
- "searchfor"
- ]
- },
- "Looksmart": {
- "domains": [
- "www.looksmart.com"
- ],
- "parameters": [
- "key"
- ]
- },
- "Wirtualna Polska": {
- "domains": [
- "szukaj.wp.pl"
- ],
- "parameters": [
- "szukaj"
- ]
- },
- "Toolbarhome": {
- "domains": [
- "www.toolbarhome.com",
- "vshare.toolbarhome.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Searchalot": {
- "domains": [
- "searchalot.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yandex": {
- "domains": [
- "yandex.ru",
- "yandex.ua",
- "yandex.com",
- "yandex.by",
- "www.yandex.ru",
- "www.yandex.ua",
- "www.yandex.com",
- "www.yandex.by"
- ],
- "parameters": [
- "text"
- ]
- },
- "canoe.ca": {
- "domains": [
- "web.canoe.ca"
- ],
- "parameters": [
- "q"
- ]
- },
- "Compuserve": {
- "domains": [
- "websearch.cs.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Blogdigger": {
- "domains": [
- "www.blogdigger.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Startpagina": {
- "domains": [
- "startgoogle.startpagina.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "eo": {
- "domains": [
- "eo.st"
- ],
- "parameters": [
- "x_query"
- ]
- },
- "Zhongsou": {
- "domains": [
- "p.zhongsou.com"
- ],
- "parameters": [
- "w"
- ]
- },
- "La Toile Du Quebec Via Google": {
- "domains": [
- "www.toile.com",
- "web.toile.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Paperball": {
- "domains": [
- "www.paperball.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Jungle Spider": {
- "domains": [
- "www.jungle-spider.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "PeoplePC": {
- "domains": [
- "search.peoplepc.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "MetaCrawler.de": {
- "domains": [
- "s1.metacrawler.de",
- "s2.metacrawler.de",
- "s3.metacrawler.de"
- ],
- "parameters": [
- "qry"
- ]
- },
- "Orange": {
- "domains": [
- "busca.orange.es",
- "search.orange.co.uk"
- ],
- "parameters": [
- "q"
- ]
- },
- "Gule Sider": {
- "domains": [
- "www.gulesider.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Francite": {
- "domains": [
- "recherche.francite.com"
- ],
- "parameters": [
- "name"
- ]
- },
- "Ask Toolbar": {
- "domains": [
- "search.tb.ask.com"
- ],
- "parameters": [
- "searchfor"
- ]
- },
- "Trusted-Search": {
- "domains": [
- "www.trusted--search.com"
- ],
- "parameters": [
- "w"
- ]
- },
- "goo": {
- "domains": [
- "search.goo.ne.jp",
- "ocnsearch.goo.ne.jp"
- ],
- "parameters": [
- "MT"
- ]
- },
- "Fast Browser Search": {
- "domains": [
- "www.fastbrowsersearch.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Blogpulse": {
- "domains": [
- "www.blogpulse.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Volny": {
- "domains": [
- "web.volny.cz"
- ],
- "parameters": [
- "search"
- ]
- },
- "Icerockeet": {
- "domains": [
- "blogs.icerocket.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Terra": {
- "domains": [
- "buscador.terra.es",
- "buscador.terra.cl",
- "buscador.terra.com.br"
- ],
- "parameters": [
- "query"
- ]
- },
- "Amazon": {
- "domains": [
- "amazon.com",
- "www.amazon.com"
- ],
- "parameters": [
- "keywords"
- ]
- },
- "Onet": {
- "domains": [
- "szukaj.onet.pl"
- ],
- "parameters": [
- "qt"
- ]
- },
- "Digg": {
- "domains": [
- "digg.com"
- ],
- "parameters": [
- "s"
- ]
- },
- "Abacho": {
- "domains": [
- "www.abacho.de",
- "www.abacho.com",
- "www.abacho.co.uk",
- "www.se.abacho.com",
- "www.tr.abacho.com",
- "www.abacho.at",
- "www.abacho.fr",
- "www.abacho.es",
- "www.abacho.ch",
- "www.abacho.it"
- ],
- "parameters": [
- "q"
- ]
- },
- "maailm": {
- "domains": [
- "www.maailm.com"
- ],
- "parameters": [
- "tekst"
- ]
- },
- "Flix": {
- "domains": [
- "www.flix.de"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Suchnase": {
- "domains": [
- "www.suchnase.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Freenet": {
- "domains": [
- "suche.freenet.de"
- ],
- "parameters": [
- "query",
- "Keywords"
- ]
- },
- "Poisk.ru": {
- "domains": [
- "www.plazoo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Sharelook": {
- "domains": [
- "www.sharelook.fr"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Najdi": {
- "domains": [
- "www.najdi.si"
- ],
- "parameters": [
- "q"
- ]
- },
- "Picsearch": {
- "domains": [
- "www.picsearch.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Mail.ru": {
- "domains": [
- "go.mail.ru"
- ],
- "parameters": [
- "q"
- ]
- },
- "Alexa": {
- "domains": [
- "alexa.com",
- "search.toolbars.alexa.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Metager": {
- "domains": [
- "meta.rrzn.uni-hannover.de",
- "www.metager.de"
- ],
- "parameters": [
- "eingabe"
- ]
- },
- "Technorati": {
- "domains": [
- "technorati.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Globososo": {
- "domains": [
- "searches.globososo.com",
- "search.globososo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "WWW": {
- "domains": [
- "search.www.ee"
- ],
- "parameters": [
- "query"
- ]
- },
- "Trouvez.com": {
- "domains": [
- "www.trouvez.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "IXquick": {
- "domains": [
- "ixquick.com",
- "www.eu.ixquick.com",
- "ixquick.de",
- "www.ixquick.de",
- "us.ixquick.com",
- "s1.us.ixquick.com",
- "s2.us.ixquick.com",
- "s3.us.ixquick.com",
- "s4.us.ixquick.com",
- "s5.us.ixquick.com",
- "eu.ixquick.com",
- "s8-eu.ixquick.com",
- "s1-eu.ixquick.de"
- ],
- "parameters": [
- "query"
- ]
- },
- "Naver Images": {
- "domains": [
- "image.search.naver.com",
- "imagesearch.naver.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Zapmeta": {
- "domains": [
- "www.zapmeta.com",
- "www.zapmeta.nl",
- "www.zapmeta.de",
- "uk.zapmeta.com"
- ],
- "parameters": [
- "q",
- "query"
- ]
- },
- "Yippy": {
- "domains": [
- "search.yippy.com"
- ],
- "parameters": [
- "q",
- "query"
- ]
- },
- "Gomeo": {
- "domains": [
- "www.gomeo.com"
- ],
- "parameters": [
- "Keywords"
- ]
- },
- "Walhello": {
- "domains": [
- "www.walhello.info",
- "www.walhello.com",
- "www.walhello.de",
- "www.walhello.nl"
- ],
- "parameters": [
- "key"
- ]
- },
- "Meta": {
- "domains": [
- "meta.ua"
- ],
- "parameters": [
- "q"
- ]
- },
- "Skynet": {
- "domains": [
- "www.skynet.be"
- ],
- "parameters": [
- "q"
- ]
- },
- "Searchy": {
- "domains": [
- "www.searchy.co.uk"
- ],
- "parameters": [
- "q"
- ]
- },
- "Findwide": {
- "domains": [
- "search.findwide.com"
- ],
- "parameters": [
- "k"
- ]
- },
- "WebSearch": {
- "domains": [
- "www.websearch.com"
- ],
- "parameters": [
- "qkw",
- "q"
- ]
- },
- "Rambler": {
- "domains": [
- "nova.rambler.ru"
- ],
- "parameters": [
- "query",
- "words"
- ]
- },
- "Latne": {
- "domains": [
- "www.latne.lv"
- ],
- "parameters": [
- "q"
- ]
- },
- "MySearch": {
- "domains": [
- "www.mysearch.com",
- "ms114.mysearch.com",
- "ms146.mysearch.com",
- "kf.mysearch.myway.com",
- "ki.mysearch.myway.com",
- "search.myway.com",
- "search.mywebsearch.com"
- ],
- "parameters": [
- "searchfor",
- "searchFor"
- ]
- },
- "Cuil": {
- "domains": [
- "www.cuil.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Tixuma": {
- "domains": [
- "www.tixuma.de"
- ],
- "parameters": [
- "sc"
- ]
- },
- "Sapo": {
- "domains": [
- "pesquisa.sapo.pt"
- ],
- "parameters": [
- "q"
- ]
- },
- "Gnadenmeer": {
- "domains": [
- "www.gnadenmeer.de"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Arcor": {
- "domains": [
- "www.arcor.de"
- ],
- "parameters": [
- "Keywords"
- ]
- },
- "Naver": {
- "domains": [
- "search.naver.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Zoeken": {
- "domains": [
- "www.zoeken.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Startsiden": {
- "domains": [
- "www.startsiden.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yam": {
- "domains": [
- "search.yam.com"
- ],
- "parameters": [
- "k"
- ]
- },
- "Eniro": {
- "domains": [
- "www.eniro.se"
- ],
- "parameters": [
- "q",
- "search_word"
- ]
- },
- "APOLL07": {
- "domains": [
- "apollo7.de"
- ],
- "parameters": [
- "query"
- ]
- },
- "Biglobe": {
- "domains": [
- "cgi.search.biglobe.ne.jp"
- ],
- "parameters": [
- "q"
- ]
- },
- "Mozbot": {
- "domains": [
- "www.mozbot.fr",
- "www.mozbot.co.uk",
- "www.mozbot.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "ICQ": {
- "domains": [
- "www.icq.com",
- "search.icq.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Baidu": {
- "domains": [
- "www.baidu.com",
- "www1.baidu.com",
- "zhidao.baidu.com",
- "tieba.baidu.com",
- "news.baidu.com",
- "web.gougou.com"
- ],
- "parameters": [
- "wd",
- "word",
- "kw",
- "k"
- ]
- },
- "Conduit": {
- "domains": [
- "search.conduit.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Vindex": {
- "domains": [
- "www.vindex.nl",
- "search.vindex.nl"
- ],
- "parameters": [
- "search_for"
- ]
- },
- "Babylon": {
- "domains": [
- "search.babylon.com",
- "searchassist.babylon.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "TrovaRapido": {
- "domains": [
- "www.trovarapido.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Suchmaschine.com": {
- "domains": [
- "www.suchmaschine.com"
- ],
- "parameters": [
- "suchstr"
- ]
- },
- "Lycos": {
- "domains": [
- "search.lycos.com",
- "www.lycos.com",
- "lycos.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Vinden": {
- "domains": [
- "www.vinden.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Altavista": {
- "domains": [
- "www.altavista.com",
- "search.altavista.com",
- "listings.altavista.com",
- "altavista.de",
- "altavista.fr",
- "be-nl.altavista.com",
- "be-fr.altavista.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "dmoz": {
- "domains": [
- "dmoz.org",
- "editors.dmoz.org"
- ],
- "parameters": [
- "q"
- ]
- },
- "Ecosia": {
- "domains": [
- "ecosia.org"
- ],
- "parameters": [
- "q"
- ]
- },
- "Maxwebsearch": {
- "domains": [
- "maxwebsearch.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Euroseek": {
- "domains": [
- "www.euroseek.com"
- ],
- "parameters": [
- "string"
- ]
- },
- "Bing": {
- "domains": [
- "bing.com",
- "www.bing.com",
- "msnbc.msn.com",
- "dizionario.it.msn.com",
- "cc.bingj.com",
- "m.bing.com"
- ],
- "parameters": [
- "q",
- "Q"
- ]
- },
- "X-recherche": {
- "domains": [
- "www.x-recherche.com"
- ],
- "parameters": [
- "MOTS"
- ]
- },
- "Yandex Images": {
- "domains": [
- "images.yandex.ru",
- "images.yandex.ua",
- "images.yandex.com"
- ],
- "parameters": [
- "text"
- ]
- },
- "GMX": {
- "domains": [
- "suche.gmx.net"
- ],
- "parameters": [
- "su"
- ]
- },
- "Daemon search": {
- "domains": [
- "daemon-search.com",
- "my.daemon-search.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Jungle Key": {
- "domains": [
- "junglekey.com",
- "junglekey.fr"
- ],
- "parameters": [
- "query"
- ]
- },
- "Firstfind": {
- "domains": [
- "www.firstsfind.com"
- ],
- "parameters": [
- "qry"
- ]
- },
- "Crawler": {
- "domains": [
- "www.crawler.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Holmes": {
- "domains": [
- "holmes.ge"
- ],
- "parameters": [
- "q"
- ]
- },
- "Charter": {
- "domains": [
- "www.charter.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Ilse": {
- "domains": [
- "www.ilse.nl"
- ],
- "parameters": [
- "search_for"
- ]
- },
- "earthlink": {
- "domains": [
- "search.earthlink.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Qualigo": {
- "domains": [
- "www.qualigo.at",
- "www.qualigo.ch",
- "www.qualigo.de",
- "www.qualigo.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "El Mundo": {
- "domains": [
- "ariadna.elmundo.es"
- ],
- "parameters": [
- "q"
- ]
- },
- "Metager2": {
- "domains": [
- "metager2.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Forestle": {
- "domains": [
- "forestle.org",
- "www.forestle.org",
- "forestle.mobi"
- ],
- "parameters": [
- "q"
- ]
- },
- "Search.ch": {
- "domains": [
- "www.search.ch"
- ],
- "parameters": [
- "q"
- ]
- },
- "Meinestadt": {
- "domains": [
- "www.meinestadt.de"
- ],
- "parameters": [
- "words"
- ]
- },
- "Freshweather": {
- "domains": [
- "www.fresh-weather.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "AllTheWeb": {
- "domains": [
- "www.alltheweb.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Snapdo": {
- "domains": [
- "search.snapdo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Zoek": {
- "domains": [
- "www3.zoek.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Daum": {
- "domains": [
- "search.daum.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Marktplaats": {
- "domains": [
- "www.marktplaats.nl"
- ],
- "parameters": [
- "query"
- ]
- },
- "suche.info": {
- "domains": [
- "suche.info"
- ],
- "parameters": [
- "q"
- ]
- },
- "Google News": {
- "domains": [
- "news.google.ac",
- "news.google.ad",
- "news.google.ae",
- "news.google.am",
- "news.google.as",
- "news.google.at",
- "news.google.az",
- "news.google.ba",
- "news.google.be",
- "news.google.bf",
- "news.google.bg",
- "news.google.bi",
- "news.google.bj",
- "news.google.bs",
- "news.google.by",
- "news.google.ca",
- "news.google.cat",
- "news.google.cc",
- "news.google.cd",
- "news.google.cf",
- "news.google.cg",
- "news.google.ch",
- "news.google.ci",
- "news.google.cl",
- "news.google.cm",
- "news.google.cn",
- "news.google.co.bw",
- "news.google.co.ck",
- "news.google.co.cr",
- "news.google.co.id",
- "news.google.co.il",
- "news.google.co.in",
- "news.google.co.jp",
- "news.google.co.ke",
- "news.google.co.kr",
- "news.google.co.ls",
- "news.google.co.ma",
- "news.google.co.mz",
- "news.google.co.nz",
- "news.google.co.th",
- "news.google.co.tz",
- "news.google.co.ug",
- "news.google.co.uk",
- "news.google.co.uz",
- "news.google.co.ve",
- "news.google.co.vi",
- "news.google.co.za",
- "news.google.co.zm",
- "news.google.co.zw",
- "news.google.com",
- "news.google.com.af",
- "news.google.com.ag",
- "news.google.com.ai",
- "news.google.com.ar",
- "news.google.com.au",
- "news.google.com.bd",
- "news.google.com.bh",
- "news.google.com.bn",
- "news.google.com.bo",
- "news.google.com.br",
- "news.google.com.by",
- "news.google.com.bz",
- "news.google.com.co",
- "news.google.com.cu",
- "news.google.com.cy",
- "news.google.com.do",
- "news.google.com.ec",
- "news.google.com.eg",
- "news.google.com.et",
- "news.google.com.fj",
- "news.google.com.gh",
- "news.google.com.gi",
- "news.google.com.gt",
- "news.google.com.hk",
- "news.google.com.jm",
- "news.google.com.kh",
- "news.google.com.kh",
- "news.google.com.kw",
- "news.google.com.lb",
- "news.google.com.lc",
- "news.google.com.ly",
- "news.google.com.mt",
- "news.google.com.mx",
- "news.google.com.my",
- "news.google.com.na",
- "news.google.com.nf",
- "news.google.com.ng",
- "news.google.com.ni",
- "news.google.com.np",
- "news.google.com.om",
- "news.google.com.pa",
- "news.google.com.pe",
- "news.google.com.ph",
- "news.google.com.pk",
- "news.google.com.pr",
- "news.google.com.py",
- "news.google.com.qa",
- "news.google.com.sa",
- "news.google.com.sb",
- "news.google.com.sg",
- "news.google.com.sl",
- "news.google.com.sv",
- "news.google.com.tj",
- "news.google.com.tn",
- "news.google.com.tr",
- "news.google.com.tw",
- "news.google.com.ua",
- "news.google.com.uy",
- "news.google.com.vc",
- "news.google.com.vn",
- "news.google.cv",
- "news.google.cz",
- "news.google.de",
- "news.google.dj",
- "news.google.dk",
- "news.google.dm",
- "news.google.dz",
- "news.google.ee",
- "news.google.es",
- "news.google.fi",
- "news.google.fm",
- "news.google.fr",
- "news.google.ga",
- "news.google.gd",
- "news.google.ge",
- "news.google.gf",
- "news.google.gg",
- "news.google.gl",
- "news.google.gm",
- "news.google.gp",
- "news.google.gr",
- "news.google.gy",
- "news.google.hn",
- "news.google.hr",
- "news.google.ht",
- "news.google.hu",
- "news.google.ie",
- "news.google.im",
- "news.google.io",
- "news.google.iq",
- "news.google.is",
- "news.google.it",
- "news.google.it.ao",
- "news.google.je",
- "news.google.jo",
- "news.google.kg",
- "news.google.ki",
- "news.google.kz",
- "news.google.la",
- "news.google.li",
- "news.google.lk",
- "news.google.lt",
- "news.google.lu",
- "news.google.lv",
- "news.google.md",
- "news.google.me",
- "news.google.mg",
- "news.google.mk",
- "news.google.ml",
- "news.google.mn",
- "news.google.ms",
- "news.google.mu",
- "news.google.mv",
- "news.google.mw",
- "news.google.ne",
- "news.google.nl",
- "news.google.no",
- "news.google.nr",
- "news.google.nu",
- "news.google.pl",
- "news.google.pn",
- "news.google.ps",
- "news.google.pt",
- "news.google.ro",
- "news.google.rs",
- "news.google.ru",
- "news.google.rw",
- "news.google.sc",
- "news.google.se",
- "news.google.sh",
- "news.google.si",
- "news.google.sk",
- "news.google.sm",
- "news.google.sn",
- "news.google.so",
- "news.google.st",
- "news.google.td",
- "news.google.tg",
- "news.google.tk",
- "news.google.tl",
- "news.google.tm",
- "news.google.to",
- "news.google.tt",
- "news.google.us",
- "news.google.vg",
- "news.google.vu",
- "news.google.ws"
- ],
- "parameters": [
- "q"
- ]
- },
- "Zoohoo": {
- "domains": [
- "zoohoo.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Seznam": {
- "domains": [
- "search.seznam.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Online.no": {
- "domains": [
- "online.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Eurip": {
- "domains": [
- "www.eurip.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "all.by": {
- "domains": [
- "all.by"
- ],
- "parameters": [
- "query"
- ]
- },
- "Road Runner Search": {
- "domains": [
- "search.rr.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Opplysningen 1881": {
- "domains": [
- "www.1881.no"
- ],
- "parameters": [
- "Query"
- ]
- },
- "YouGoo": {
- "domains": [
- "www.yougoo.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "Bing Images": {
- "domains": [
- "bing.com/images/search",
- "www.bing.com/images/search"
- ],
- "parameters": [
- "q",
- "Q"
- ]
- },
- "Geona": {
- "domains": [
- "geona.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Nate": {
- "domains": [
- "search.nate.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "DuckDuckGo": {
- "domains": [
- "duckduckgo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Hotbot": {
- "domains": [
- "www.hotbot.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Kvasir": {
- "domains": [
- "www.kvasir.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Austronaut": {
- "domains": [
- "www2.austronaut.at",
- "www1.astronaut.at"
- ],
- "parameters": [
- "q"
- ]
- },
- "Excite": {
- "domains": [
- "search.excite.it",
- "search.excite.fr",
- "search.excite.de",
- "search.excite.co.uk",
- "serach.excite.es",
- "search.excite.nl",
- "msxml.excite.com",
- "www.excite.co.jp"
- ],
- "parameters": [
- "q",
- "search"
- ]
- },
- "qip": {
- "domains": [
- "search.qip.ru"
- ],
- "parameters": [
- "query"
- ]
- },
- "Certified-Toolbar": {
- "domains": [
- "search.certified-toolbar.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yahoo!": {
- "domains": [
- "search.yahoo.com",
- "yahoo.com",
- "ar.search.yahoo.com",
- "ar.yahoo.com",
- "au.search.yahoo.com",
- "au.yahoo.com",
- "br.search.yahoo.com",
- "br.yahoo.com",
- "cade.searchde.yahoo.com",
- "cade.yahoo.com",
- "chinese.searchinese.yahoo.com",
- "chinese.yahoo.com",
- "cn.search.yahoo.com",
- "cn.yahoo.com",
- "de.search.yahoo.com",
- "de.yahoo.com",
- "dk.search.yahoo.com",
- "dk.yahoo.com",
- "es.search.yahoo.com",
- "es.yahoo.com",
- "espanol.searchpanol.yahoo.com",
- "espanol.searchpanol.yahoo.com",
- "espanol.yahoo.com",
- "espanol.yahoo.com",
- "fr.search.yahoo.com",
- "fr.yahoo.com",
- "ie.search.yahoo.com",
- "ie.yahoo.com",
- "it.search.yahoo.com",
- "it.yahoo.com",
- "kr.search.yahoo.com",
- "kr.yahoo.com",
- "mx.search.yahoo.com",
- "mx.yahoo.com",
- "no.search.yahoo.com",
- "no.yahoo.com",
- "nz.search.yahoo.com",
- "nz.yahoo.com",
- "one.cn.yahoo.com",
- "one.searchn.yahoo.com",
- "qc.search.yahoo.com",
- "qc.search.yahoo.com",
- "qc.search.yahoo.com",
- "qc.yahoo.com",
- "qc.yahoo.com",
- "se.search.yahoo.com",
- "se.search.yahoo.com",
- "se.yahoo.com",
- "search.searcharch.yahoo.com",
- "search.yahoo.com",
- "uk.search.yahoo.com",
- "uk.yahoo.com",
- "www.yahoo.co.jp",
- "search.yahoo.co.jp",
- "www.cercato.it",
- "search.offerbox.com",
- "ys.mirostart.com"
- ],
- "parameters": [
- "p",
- "q"
- ]
- },
- "URL.ORGanizier": {
- "domains": [
- "www.url.org"
- ],
- "parameters": [
- "q"
- ]
- },
- "Witch": {
- "domains": [
- "www.witch.de"
- ],
- "parameters": [
- "search"
- ]
- },
- "Mister Wong": {
- "domains": [
- "www.mister-wong.com",
- "www.mister-wong.de"
- ],
- "parameters": [
- "Keywords"
- ]
- },
- "Aport": {
- "domains": [
- "sm.aport.ru"
- ],
- "parameters": [
- "r"
- ]
- },
- "Web.de": {
- "domains": [
- "suche.web.de"
- ],
- "parameters": [
- "su"
- ]
- },
- "Ask": {
- "domains": [
- "ask.com",
- "www.ask.com",
- "web.ask.com",
- "int.ask.com",
- "mws.ask.com",
- "uk.ask.com",
- "images.ask.com",
- "ask.reference.com",
- "www.askkids.com",
- "iwon.ask.com",
- "www.ask.co.uk",
- "www.qbyrd.com",
- "search-results.com",
- "uk.search-results.com",
- "www.search-results.com",
- "int.search-results.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Centrum": {
- "domains": [
- "serach.centrum.cz",
- "morfeo.centrum.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Everyclick": {
- "domains": [
- "www.everyclick.com"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Google Video": {
- "domains": [
- "video.google.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Delfi": {
- "domains": [
- "otsing.delfi.ee"
- ],
- "parameters": [
- "q"
- ]
- },
- "blekko": {
- "domains": [
- "blekko.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Jyxo": {
- "domains": [
- "jyxo.1188.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Kataweb": {
- "domains": [
- "www.kataweb.it"
- ],
- "parameters": [
- "q"
- ]
- },
- "uol.com.br": {
- "domains": [
- "busca.uol.com.br"
- ],
- "parameters": [
- "q"
- ]
- },
- "Arianna": {
- "domains": [
- "arianna.libero.it",
- "www.arianna.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Mamma": {
- "domains": [
- "www.mamma.com",
- "mamma75.mamma.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Yatedo": {
- "domains": [
- "www.yatedo.com",
- "www.yatedo.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "Twingly": {
- "domains": [
- "www.twingly.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Delfi latvia": {
- "domains": [
- "smart.delfi.lv"
- ],
- "parameters": [
- "q"
- ]
- },
- "PriceRunner": {
- "domains": [
- "www.pricerunner.co.uk"
- ],
- "parameters": [
- "q"
- ]
- },
- "Rakuten": {
- "domains": [
- "websearch.rakuten.co.jp"
- ],
- "parameters": [
- "qt"
- ]
- },
- "Google": {
- "domains": [
- "www.google.com",
- "www.google.ac",
- "www.google.ad",
- "www.google.com.af",
- "www.google.com.ag",
- "www.google.com.ai",
- "www.google.am",
- "www.google.it.ao",
- "www.google.com.ar",
- "www.google.as",
- "www.google.at",
- "www.google.com.au",
- "www.google.az",
- "www.google.ba",
- "www.google.com.bd",
- "www.google.be",
- "www.google.bf",
- "www.google.bg",
- "www.google.com.bh",
- "www.google.bi",
- "www.google.bj",
- "www.google.com.bn",
- "www.google.com.bo",
- "www.google.com.br",
- "www.google.bs",
- "www.google.co.bw",
- "www.google.com.by",
- "www.google.by",
- "www.google.com.bz",
- "www.google.ca",
- "www.google.com.kh",
- "www.google.cc",
- "www.google.cd",
- "www.google.cf",
- "www.google.cat",
- "www.google.cg",
- "www.google.ch",
- "www.google.ci",
- "www.google.co.ck",
- "www.google.cl",
- "www.google.cm",
- "www.google.cn",
- "www.google.com.co",
- "www.google.co.cr",
- "www.google.com.cu",
- "www.google.cv",
- "www.google.com.cy",
- "www.google.cz",
- "www.google.de",
- "www.google.dj",
- "www.google.dk",
- "www.google.dm",
- "www.google.com.do",
- "www.google.dz",
- "www.google.com.ec",
- "www.google.ee",
- "www.google.com.eg",
- "www.google.es",
- "www.google.com.et",
- "www.google.fi",
- "www.google.com.fj",
- "www.google.fm",
- "www.google.fr",
- "www.google.ga",
- "www.google.gd",
- "www.google.ge",
- "www.google.gf",
- "www.google.gg",
- "www.google.com.gh",
- "www.google.com.gi",
- "www.google.gl",
- "www.google.gm",
- "www.google.gp",
- "www.google.gr",
- "www.google.com.gt",
- "www.google.gy",
- "www.google.com.hk",
- "www.google.hn",
- "www.google.hr",
- "www.google.ht",
- "www.google.hu",
- "www.google.co.id",
- "www.google.iq",
- "www.google.ie",
- "www.google.co.il",
- "www.google.im",
- "www.google.co.in",
- "www.google.io",
- "www.google.is",
- "www.google.it",
- "www.google.je",
- "www.google.com.jm",
- "www.google.jo",
- "www.google.co.jp",
- "www.google.co.ke",
- "www.google.com.kh",
- "www.google.ki",
- "www.google.kg",
- "www.google.co.kr",
- "www.google.com.kw",
- "www.google.kz",
- "www.google.la",
- "www.google.com.lb",
- "www.google.com.lc",
- "www.google.li",
- "www.google.lk",
- "www.google.co.ls",
- "www.google.lt",
- "www.google.lu",
- "www.google.lv",
- "www.google.com.ly",
- "www.google.co.ma",
- "www.google.md",
- "www.google.me",
- "www.google.mg",
- "www.google.mk",
- "www.google.ml",
- "www.google.mn",
- "www.google.ms",
- "www.google.com.mt",
- "www.google.mu",
- "www.google.mv",
- "www.google.mw",
- "www.google.com.mx",
- "www.google.com.my",
- "www.google.co.mz",
- "www.google.com.na",
- "www.google.ne",
- "www.google.com.nf",
- "www.google.com.ng",
- "www.google.com.ni",
- "www.google.nl",
- "www.google.no",
- "www.google.com.np",
- "www.google.nr",
- "www.google.nu",
- "www.google.co.nz",
- "www.google.com.om",
- "www.google.com.pa",
- "www.google.com.pe",
- "www.google.com.ph",
- "www.google.com.pk",
- "www.google.pl",
- "www.google.pn",
- "www.google.com.pr",
- "www.google.ps",
- "www.google.pt",
- "www.google.com.py",
- "www.google.com.qa",
- "www.google.ro",
- "www.google.rs",
- "www.google.ru",
- "www.google.rw",
- "www.google.com.sa",
- "www.google.com.sb",
- "www.google.sc",
- "www.google.se",
- "www.google.com.sg",
- "www.google.sh",
- "www.google.si",
- "www.google.sk",
- "www.google.com.sl",
- "www.google.sn",
- "www.google.sm",
- "www.google.so",
- "www.google.st",
- "www.google.com.sv",
- "www.google.td",
- "www.google.tg",
- "www.google.co.th",
- "www.google.com.tj",
- "www.google.tk",
- "www.google.tl",
- "www.google.tm",
- "www.google.to",
- "www.google.com.tn",
- "www.google.com.tr",
- "www.google.tt",
- "www.google.com.tw",
- "www.google.co.tz",
- "www.google.com.ua",
- "www.google.co.ug",
- "www.google.ae",
- "www.google.co.uk",
- "www.google.us",
- "www.google.com.uy",
- "www.google.co.uz",
- "www.google.com.vc",
- "www.google.co.ve",
- "www.google.vg",
- "www.google.co.vi",
- "www.google.com.vn",
- "www.google.vu",
- "www.google.ws",
- "www.google.co.za",
- "www.google.co.zm",
- "www.google.co.zw",
- "google.com",
- "google.ac",
- "google.ad",
- "google.com.af",
- "google.com.ag",
- "google.com.ai",
- "google.am",
- "google.it.ao",
- "google.com.ar",
- "google.as",
- "google.at",
- "google.com.au",
- "google.az",
- "google.ba",
- "google.com.bd",
- "google.be",
- "google.bf",
- "google.bg",
- "google.com.bh",
- "google.bi",
- "google.bj",
- "google.com.bn",
- "google.com.bo",
- "google.com.br",
- "google.bs",
- "google.co.bw",
- "google.com.by",
- "google.by",
- "google.com.bz",
- "google.ca",
- "google.com.kh",
- "google.cc",
- "google.cd",
- "google.cf",
- "google.cat",
- "google.cg",
- "google.ch",
- "google.ci",
- "google.co.ck",
- "google.cl",
- "google.cm",
- "google.cn",
- "google.com.co",
- "google.co.cr",
- "google.com.cu",
- "google.cv",
- "google.com.cy",
- "google.cz",
- "google.de",
- "google.dj",
- "google.dk",
- "google.dm",
- "google.com.do",
- "google.dz",
- "google.com.ec",
- "google.ee",
- "google.com.eg",
- "google.es",
- "google.com.et",
- "google.fi",
- "google.com.fj",
- "google.fm",
- "google.fr",
- "google.ga",
- "google.gd",
- "google.ge",
- "google.gf",
- "google.gg",
- "google.com.gh",
- "google.com.gi",
- "google.gl",
- "google.gm",
- "google.gp",
- "google.gr",
- "google.com.gt",
- "google.gy",
- "google.com.hk",
- "google.hn",
- "google.hr",
- "google.ht",
- "google.hu",
- "google.co.id",
- "google.iq",
- "google.ie",
- "google.co.il",
- "google.im",
- "google.co.in",
- "google.io",
- "google.is",
- "google.it",
- "google.je",
- "google.com.jm",
- "google.jo",
- "google.co.jp",
- "google.co.ke",
- "google.com.kh",
- "google.ki",
- "google.kg",
- "google.co.kr",
- "google.com.kw",
- "google.kz",
- "google.la",
- "google.com.lb",
- "google.com.lc",
- "google.li",
- "google.lk",
- "google.co.ls",
- "google.lt",
- "google.lu",
- "google.lv",
- "google.com.ly",
- "google.co.ma",
- "google.md",
- "google.me",
- "google.mg",
- "google.mk",
- "google.ml",
- "google.mn",
- "google.ms",
- "google.com.mt",
- "google.mu",
- "google.mv",
- "google.mw",
- "google.com.mx",
- "google.com.my",
- "google.co.mz",
- "google.com.na",
- "google.ne",
- "google.com.nf",
- "google.com.ng",
- "google.com.ni",
- "google.nl",
- "google.no",
- "google.com.np",
- "google.nr",
- "google.nu",
- "google.co.nz",
- "google.com.om",
- "google.com.pa",
- "google.com.pe",
- "google.com.ph",
- "google.com.pk",
- "google.pl",
- "google.pn",
- "google.com.pr",
- "google.ps",
- "google.pt",
- "google.com.py",
- "google.com.qa",
- "google.ro",
- "google.rs",
- "google.ru",
- "google.rw",
- "google.com.sa",
- "google.com.sb",
- "google.sc",
- "google.se",
- "google.com.sg",
- "google.sh",
- "google.si",
- "google.sk",
- "google.com.sl",
- "google.sn",
- "google.sm",
- "google.so",
- "google.st",
- "google.com.sv",
- "google.td",
- "google.tg",
- "google.co.th",
- "google.com.tj",
- "google.tk",
- "google.tl",
- "google.tm",
- "google.to",
- "google.com.tn",
- "google.com.tr",
- "google.tt",
- "google.com.tw",
- "google.co.tz",
- "google.com.ua",
- "google.co.ug",
- "google.ae",
- "google.co.uk",
- "google.us",
- "google.com.uy",
- "google.co.uz",
- "google.com.vc",
- "google.co.ve",
- "google.vg",
- "google.co.vi",
- "google.com.vn",
- "google.vu",
- "google.ws",
- "google.co.za",
- "google.co.zm",
- "google.co.zw",
- "search.avg.com",
- "isearch.avg.com",
- "www.cnn.com",
- "darkoogle.com",
- "search.darkoogle.com",
- "search.foxtab.com",
- "www.gooofullsearch.com",
- "search.hiyo.com",
- "search.incredimail.com",
- "search1.incredimail.com",
- "search2.incredimail.com",
- "search3.incredimail.com",
- "search4.incredimail.com",
- "search.incredibar.com",
- "search.sweetim.com",
- "www.fastweb.it",
- "search.juno.com",
- "find.tdc.dk",
- "searchresults.verizon.com",
- "search.walla.co.il",
- "search.alot.com",
- "www.googleearth.de",
- "www.googleearth.fr",
- "webcache.googleusercontent.com",
- "encrypted.google.com",
- "googlesyndicatedsearch.com"
- ],
- "parameters": [
- "q",
- "query",
- "Keywords"
- ]
- },
- "Google Blogsearch": {
- "domains": [
- "blogsearch.google.ac",
- "blogsearch.google.ad",
- "blogsearch.google.ae",
- "blogsearch.google.am",
- "blogsearch.google.as",
- "blogsearch.google.at",
- "blogsearch.google.az",
- "blogsearch.google.ba",
- "blogsearch.google.be",
- "blogsearch.google.bf",
- "blogsearch.google.bg",
- "blogsearch.google.bi",
- "blogsearch.google.bj",
- "blogsearch.google.bs",
- "blogsearch.google.by",
- "blogsearch.google.ca",
- "blogsearch.google.cat",
- "blogsearch.google.cc",
- "blogsearch.google.cd",
- "blogsearch.google.cf",
- "blogsearch.google.cg",
- "blogsearch.google.ch",
- "blogsearch.google.ci",
- "blogsearch.google.cl",
- "blogsearch.google.cm",
- "blogsearch.google.cn",
- "blogsearch.google.co.bw",
- "blogsearch.google.co.ck",
- "blogsearch.google.co.cr",
- "blogsearch.google.co.id",
- "blogsearch.google.co.il",
- "blogsearch.google.co.in",
- "blogsearch.google.co.jp",
- "blogsearch.google.co.ke",
- "blogsearch.google.co.kr",
- "blogsearch.google.co.ls",
- "blogsearch.google.co.ma",
- "blogsearch.google.co.mz",
- "blogsearch.google.co.nz",
- "blogsearch.google.co.th",
- "blogsearch.google.co.tz",
- "blogsearch.google.co.ug",
- "blogsearch.google.co.uk",
- "blogsearch.google.co.uz",
- "blogsearch.google.co.ve",
- "blogsearch.google.co.vi",
- "blogsearch.google.co.za",
- "blogsearch.google.co.zm",
- "blogsearch.google.co.zw",
- "blogsearch.google.com",
- "blogsearch.google.com.af",
- "blogsearch.google.com.ag",
- "blogsearch.google.com.ai",
- "blogsearch.google.com.ar",
- "blogsearch.google.com.au",
- "blogsearch.google.com.bd",
- "blogsearch.google.com.bh",
- "blogsearch.google.com.bn",
- "blogsearch.google.com.bo",
- "blogsearch.google.com.br",
- "blogsearch.google.com.by",
- "blogsearch.google.com.bz",
- "blogsearch.google.com.co",
- "blogsearch.google.com.cu",
- "blogsearch.google.com.cy",
- "blogsearch.google.com.do",
- "blogsearch.google.com.ec",
- "blogsearch.google.com.eg",
- "blogsearch.google.com.et",
- "blogsearch.google.com.fj",
- "blogsearch.google.com.gh",
- "blogsearch.google.com.gi",
- "blogsearch.google.com.gt",
- "blogsearch.google.com.hk",
- "blogsearch.google.com.jm",
- "blogsearch.google.com.kh",
- "blogsearch.google.com.kh",
- "blogsearch.google.com.kw",
- "blogsearch.google.com.lb",
- "blogsearch.google.com.lc",
- "blogsearch.google.com.ly",
- "blogsearch.google.com.mt",
- "blogsearch.google.com.mx",
- "blogsearch.google.com.my",
- "blogsearch.google.com.na",
- "blogsearch.google.com.nf",
- "blogsearch.google.com.ng",
- "blogsearch.google.com.ni",
- "blogsearch.google.com.np",
- "blogsearch.google.com.om",
- "blogsearch.google.com.pa",
- "blogsearch.google.com.pe",
- "blogsearch.google.com.ph",
- "blogsearch.google.com.pk",
- "blogsearch.google.com.pr",
- "blogsearch.google.com.py",
- "blogsearch.google.com.qa",
- "blogsearch.google.com.sa",
- "blogsearch.google.com.sb",
- "blogsearch.google.com.sg",
- "blogsearch.google.com.sl",
- "blogsearch.google.com.sv",
- "blogsearch.google.com.tj",
- "blogsearch.google.com.tn",
- "blogsearch.google.com.tr",
- "blogsearch.google.com.tw",
- "blogsearch.google.com.ua",
- "blogsearch.google.com.uy",
- "blogsearch.google.com.vc",
- "blogsearch.google.com.vn",
- "blogsearch.google.cv",
- "blogsearch.google.cz",
- "blogsearch.google.de",
- "blogsearch.google.dj",
- "blogsearch.google.dk",
- "blogsearch.google.dm",
- "blogsearch.google.dz",
- "blogsearch.google.ee",
- "blogsearch.google.es",
- "blogsearch.google.fi",
- "blogsearch.google.fm",
- "blogsearch.google.fr",
- "blogsearch.google.ga",
- "blogsearch.google.gd",
- "blogsearch.google.ge",
- "blogsearch.google.gf",
- "blogsearch.google.gg",
- "blogsearch.google.gl",
- "blogsearch.google.gm",
- "blogsearch.google.gp",
- "blogsearch.google.gr",
- "blogsearch.google.gy",
- "blogsearch.google.hn",
- "blogsearch.google.hr",
- "blogsearch.google.ht",
- "blogsearch.google.hu",
- "blogsearch.google.ie",
- "blogsearch.google.im",
- "blogsearch.google.io",
- "blogsearch.google.iq",
- "blogsearch.google.is",
- "blogsearch.google.it",
- "blogsearch.google.it.ao",
- "blogsearch.google.je",
- "blogsearch.google.jo",
- "blogsearch.google.kg",
- "blogsearch.google.ki",
- "blogsearch.google.kz",
- "blogsearch.google.la",
- "blogsearch.google.li",
- "blogsearch.google.lk",
- "blogsearch.google.lt",
- "blogsearch.google.lu",
- "blogsearch.google.lv",
- "blogsearch.google.md",
- "blogsearch.google.me",
- "blogsearch.google.mg",
- "blogsearch.google.mk",
- "blogsearch.google.ml",
- "blogsearch.google.mn",
- "blogsearch.google.ms",
- "blogsearch.google.mu",
- "blogsearch.google.mv",
- "blogsearch.google.mw",
- "blogsearch.google.ne",
- "blogsearch.google.nl",
- "blogsearch.google.no",
- "blogsearch.google.nr",
- "blogsearch.google.nu",
- "blogsearch.google.pl",
- "blogsearch.google.pn",
- "blogsearch.google.ps",
- "blogsearch.google.pt",
- "blogsearch.google.ro",
- "blogsearch.google.rs",
- "blogsearch.google.ru",
- "blogsearch.google.rw",
- "blogsearch.google.sc",
- "blogsearch.google.se",
- "blogsearch.google.sh",
- "blogsearch.google.si",
- "blogsearch.google.sk",
- "blogsearch.google.sm",
- "blogsearch.google.sn",
- "blogsearch.google.so",
- "blogsearch.google.st",
- "blogsearch.google.td",
- "blogsearch.google.tg",
- "blogsearch.google.tk",
- "blogsearch.google.tl",
- "blogsearch.google.tm",
- "blogsearch.google.to",
- "blogsearch.google.tt",
- "blogsearch.google.us",
- "blogsearch.google.vg",
- "blogsearch.google.vu",
- "blogsearch.google.ws"
- ],
- "parameters": [
- "q"
- ]
- },
- "Hooseek.com": {
- "domains": [
- "www.hooseek.com"
- ],
- "parameters": [
- "recherche"
- ]
- },
- "Dalesearch": {
- "domains": [
- "www.dalesearch.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Alice Adsl": {
- "domains": [
- "rechercher.aliceadsl.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "T-Online": {
- "domains": [
- "suche.t-online.de",
- "brisbane.t-online.de",
- "navigationshilfe.t-online.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "soso.com": {
- "domains": [
- "www.soso.com"
- ],
- "parameters": [
- "w"
- ]
- },
- "Sogou": {
- "domains": [
- "www.sougou.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Hit-Parade": {
- "domains": [
- "req.-hit-parade.com",
- "class.hit-parade.com",
- "www.hit-parade.com"
- ],
- "parameters": [
- "p7"
- ]
- },
- "SearchCanvas": {
- "domains": [
- "www.searchcanvas.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Interia": {
- "domains": [
- "www.google.interia.pl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Genieo": {
- "domains": [
- "search.genieo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Tiscali": {
- "domains": [
- "search.tiscali.it",
- "search-dyn.tiscali.it",
- "hledani.tiscali.cz"
- ],
- "parameters": [
- "q",
- "key"
- ]
- },
- "Clix": {
- "domains": [
- "pesquisa.clix.pt"
- ],
- "parameters": [
- "question"
- ]
- }
- },
- "email": {
- "Bigpond": {
- "domains": [
- "webmail.bigpond.com",
- "webmail2.bigpond.com"
- ]
- },
- "Naver Mail": {
- "domains": [
- "mail.naver.com"
- ]
- },
- "Optus Zoo": {
- "domains": [
- "webmail.optuszoo.com.au"
- ]
- },
- "Seznam Mail": {
- "domains": [
- "email.seznam.cz"
- ]
- },
- "126 Mail": {
- "domains": [
- "mail.126.com"
- ]
- },
- "Outlook.com": {
- "domains": [
- "mail.live.com"
- ]
- },
- "AOL Mail": {
- "domains": [
- "mail.aol.com"
- ]
- },
- "Daum Mail": {
- "domains": [
- "mail2.daum.net"
- ]
- },
- "Yahoo! Mail": {
- "domains": [
- "mail.yahoo.net",
- "mail.yahoo.com",
- "mail.yahoo.co.uk",
- "mail.yahoo.co.jp"
- ]
- },
- "163 Mail": {
- "domains": [
- "mail.163.com"
- ]
- },
- "Orange Webmail": {
- "domains": [
- "orange.fr/webmail"
- ]
- },
- "QQ Mail": {
- "domains": [
- "mail.qq.com"
- ]
- },
- "Mynet Mail": {
- "domains": [
- "mail.mynet.com"
- ]
- },
- "Gmail": {
- "domains": [
- "mail.google.com"
- ]
- }
- },
- "social": {
- "hi5": {
- "domains": [
- "hi5.com"
- ]
- },
- "Friendster": {
- "domains": [
- "friendster.com"
- ]
- },
- "Weibo": {
- "domains": [
- "weibo.com",
- "t.cn"
- ]
- },
- "Xanga": {
- "domains": [
- "xanga.com"
- ]
- },
- "Myspace": {
- "domains": [
- "myspace.com"
- ]
- },
- "Buzznet": {
- "domains": [
- "wayn.com"
- ]
- },
- "MyLife": {
- "domains": [
- "mylife.ru"
- ]
- },
- "Flickr": {
- "domains": [
- "flickr.com"
- ]
- },
- "Sonico.com": {
- "domains": [
- "sonico.com"
- ]
- },
- "Odnoklassniki": {
- "domains": [
- "odnoklassniki.ru"
- ]
- },
- "GitHub": {
- "domains": [
- "github.com"
- ]
- },
- "Classmates": {
- "domains": [
- "classmates.com"
- ]
- },
- "Friends Reunited": {
- "domains": [
- "friendsreunited.com"
- ]
- },
- "Renren": {
- "domains": [
- "renren.com"
- ]
- },
- "Quora": {
- "domains": [
- "quora.com"
- ]
- },
- "Gaia Online": {
- "domains": [
- "gaiaonline.com"
- ]
- },
- "Netlog": {
- "domains": [
- "netlog.com"
- ]
- },
- "Orkut": {
- "domains": [
- "orkut.com"
- ]
- },
- "MyHeritage": {
- "domains": [
- "myheritage.com"
- ]
- },
- "Multiply": {
- "domains": [
- "multiply.com"
- ]
- },
- "myYearbook": {
- "domains": [
- "myyearbook.com"
- ]
- },
- "WeeWorld": {
- "domains": [
- "weeworld.com"
- ]
- },
- "Vimeo": {
- "domains": [
- "vimeo.com"
- ]
- },
- "Eksi Sozluk": {
- "domains": [
- "Sozluk.com",
- "sourtimes.org"
- ]
- },
- "Geni": {
- "domains": [
- "geni.com"
- ]
- },
- "Uludag Sozluk": {
- "domains": [
- "uludagsozluk.com",
- "ulusozluk.com"
- ]
- },
- "SourceForge": {
- "domains": [
- "sourceforge.net"
- ]
- },
- "Plaxo": {
- "domains": [
- "plaxo.com"
- ]
- },
- "Taringa!": {
- "domains": [
- "taringa.net"
- ]
- },
- "Tagged": {
- "domains": [
- "login.tagged.com"
- ]
- },
- "XING": {
- "domains": [
- "xing.com"
- ]
- },
- "Instagram": {
- "domains": [
- "instagram.com"
- ]
- },
- "Vkontakte": {
- "domains": [
- "vk.com",
- "vkontakte.ru"
- ]
- },
- "Twitter": {
- "domains": [
- "twitter.com",
- "t.co"
- ]
- },
- "vKruguDruzei.ru": {
- "domains": [
- "vkrugudruzei.ru"
- ]
- },
- "Donanimhaber": {
- "domains": [
- "donanimhaber.com"
- ]
- },
- "WAYN": {
- "domains": [
- "wayn.com"
- ]
- },
- "Tuenti": {
- "domains": [
- "tuenti.com"
- ]
- },
- "Mail.ru": {
- "domains": [
- "my.mail.ru"
- ]
- },
- "Badoo": {
- "domains": [
- "badoo.com"
- ]
- },
- "Instela": {
- "domains": [
- "instela.com"
- ]
- },
- "Habbo": {
- "domains": [
- "habbo.com"
- ]
- },
- "Pinterest": {
- "domains": [
- "pinterest.com"
- ]
- },
- "LinkedIn": {
- "domains": [
- "linkedin.com",
- "lnkd.in"
- ]
- },
- "Foursquare": {
- "domains": [
- "foursquare.com"
- ]
- },
- "Flixster": {
- "domains": [
- "flixster.com"
- ]
- },
- "Windows Live Spaces": {
- "domains": [
- "login.live.com"
- ]
- },
- "BlackPlanet": {
- "domains": [
- "blackplanet.com"
- ]
- },
- "Cyworld": {
- "domains": [
- "global.cyworld.com"
- ]
- },
- "Pocket": {
- "domains": [
- "itusozluk.com"
- ],
- "ITU Sozluk": null
- },
- "Skyrock": {
- "domains": [
- "skyrock.com"
- ]
- },
- "Facebook": {
- "domains": [
- "facebook.com",
- "fb.me",
- "m.facebook.com",
- "l.facebook.com",
- "lm.facebook.com"
- ]
- },
- "Disqus": {
- "domains": [
- "redirect.disqus.com",
- "disq.us",
- "disqus.com"
- ]
- },
- "StudiVZ": {
- "domains": [
- "studivz.net"
- ]
- },
- "Fotolog": {
- "domains": [
- "fotolog.com"
- ]
- },
- "Google+": {
- "domains": [
- "url.google.com",
- "plus.google.com"
- ]
- },
- "Nasza-klasa.pl": {
- "domains": [
- "nk.pl"
- ]
- },
- "Qzone": {
- "domains": [
- "qzone.qq.com"
- ]
- },
- "Douban": {
- "domains": [
- "douban.com"
- ]
- },
- "Bebo": {
- "domains": [
- "bebo.com"
- ]
- },
- "Youtube": {
- "domains": [
- "youtube.com",
- "youtu.be"
- ]
- },
- "Reddit": {
- "domains": [
- "reddit.com"
- ]
- },
- "Identi.ca": {
- "domains": [
- "identi.ca"
- ]
- },
- "StackOverflow": {
- "domains": [
- "stackoverflow.com"
- ]
- },
- "Mixi": {
- "domains": [
- "mixi.jp"
- ]
- },
- "StumbleUpon": {
- "domains": [
- "stumbleupon.com"
- ]
- },
- "Inci Sozluk": {
- "domains": [
- "inci.sozlukspot.com",
- "incisozluk.com",
- "incisozluk.cc"
- ]
- },
- "Viadeo": {
- "domains": [
- "viadeo.com"
- ]
- },
- "Last.fm": {
- "domains": [
- "lastfm.ru"
- ]
- },
- "LiveJournal": {
- "domains": [
- "livejournal.ru"
- ]
- },
- "Tumblr": {
- "domains": [
- "tumblr.com"
- ]
- },
- "Hacker News": {
- "domains": [
- "news.ycombinator.com"
- ]
- },
- "Hocam.com": {
- "domains": [
- "hocam.com"
- ]
- },
- "Delicious": {
- "domains": [
- "delicious.com"
- ]
- },
- "Hyves": {
- "domains": [
- "hyves.nl"
- ]
- },
- "Paper.li": {
- "domains": [
- "paper.li"
- ]
- },
- "MoiKrug.ru": {
- "domains": [
- "moikrug.ru"
- ]
- }
- }
-}
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/java-scala/src/main/resources/referers.yml b/vendor/snowplow/referer-parser/java-scala/src/main/resources/referers.yml
deleted file mode 100644
index e1ecf54f7..000000000
--- a/vendor/snowplow/referer-parser/java-scala/src/main/resources/referers.yml
+++ /dev/null
@@ -1,3621 +0,0 @@
-# #######################################################################################################
-#
-# ALL SUPPORTED REFERERS
-#
-# Broken down into:
-#
-# 1. Medium-unknown providers
-# 2. Email providers
-# 3. Social providers
-# 4. Search providers
-
-
-# #######################################################################################################
-#
-# MEDIUM-UNKNOWN PROVIDERS
-#
-# We know the source, but not the medium.
-# This section is useful for reducing false positives in the other sections
-
-unknown:
-
- Google:
- domains:
- - support.google.com
- - developers.google.com
- - maps.google.com
- - accounts.google.com
- - drive.google.com
- - sites.google.com
- - groups.google.com
- - groups.google.co.uk
- - news.google.co.uk
-
- Yahoo!:
- domains:
- - finance.yahoo.com
- - news.yahoo.com
- - eurosport.yahoo.com
- - sports.yahoo.com
- - astrology.yahoo.com
- - travel.yahoo.com
- - answers.yahoo.com
- - screen.yahoo.com
- - weather.yahoo.com
- - messenger.yahoo.com
- - games.yahoo.com
- - shopping.yahoo.net
- - movies.yahoo.com
- - cars.yahoo.com
- - lifestyle.yahoo.com
- - omg.yahoo.com
- - match.yahoo.net
-
- Taboola:
- domains:
- - trc.taboola.com
- - api.taboola.com
-
- Outbrain:
- domains:
- - paid.outbrain.com
-
-
-# #######################################################################################################
-#
-# EMAIL PROVIDERS
-
-email:
-
- 126 Mail:
- domains:
- - mail.126.com
-
- 163 Mail:
- domains:
- - mail.163.com
-
- AOL Mail:
- domains:
- - mail.aol.com
-
- Bigpond:
- domains:
- - webmail.bigpond.com
- - webmail2.bigpond.com
-
- Daum Mail:
- domains:
- - mail2.daum.net
-
- Gmail:
- domains:
- - mail.google.com
-
- Naver Mail:
- domains:
- - mail.naver.com
-
- Optus Zoo:
- domains:
- - webmail.optuszoo.com.au
-
- Orange Webmail:
- domains:
- - orange.fr/webmail
-
- Outlook.com:
- domains:
- - mail.live.com
-
- QQ Mail:
- domains:
- - mail.qq.com
-
- Seznam Mail:
- domains:
- - email.seznam.cz
-
- Yahoo! Mail:
- domains:
- - mail.yahoo.net
- - mail.yahoo.com
- - mail.yahoo.co.uk
- - mail.yahoo.co.jp
-
- Mynet Mail:
- domains:
- - mail.mynet.com
-
-
-# #######################################################################################################
-#
-# SOCIAL PROVIDERS
-
-social:
-
- Facebook:
- domains:
- - facebook.com
- - fb.me
- - m.facebook.com
- - l.facebook.com
- - lm.facebook.com
-
- Qzone:
- domains:
- - qzone.qq.com
-
- Habbo:
- domains:
- - habbo.com
-
- Twitter:
- domains:
- - twitter.com
- - t.co
-
- Instagram:
- domains:
- - instagram.com
-
- Youtube:
- domains:
- - youtube.com
- - youtu.be
-
- Vimeo:
- domains:
- - vimeo.com
-
- Renren:
- domains:
- - renren.com
-
- Windows Live Spaces:
- domains:
- - login.live.com
-
- LinkedIn:
- domains:
- - linkedin.com
- - lnkd.in
-
- Bebo:
- domains:
- - bebo.com
-
- Vkontakte:
- domains:
- - vk.com
- - vkontakte.ru
-
- Tagged:
- domains:
- - login.tagged.com
-
- Orkut:
- domains:
- - orkut.com
-
- Myspace:
- domains:
- - myspace.com
-
- Friendster:
- domains:
- - friendster.com
-
- Badoo:
- domains:
- - badoo.com
-
- hi5:
- domains:
- - hi5.com
-
- Netlog:
- domains:
- - netlog.com
-
- Flixster:
- domains:
- - flixster.com
-
- MyLife:
- domains:
- - mylife.ru
-
- Paper.li:
- domains:
- - paper.li
-
- Classmates:
- domains:
- - classmates.com
-
- GitHub:
- domains:
- - github.com
-
- Google+:
- domains:
- - url.google.com
- - plus.google.com
-
- Douban:
- domains:
- - douban.com
-
- Odnoklassniki:
- domains:
- - odnoklassniki.ru
-
- Viadeo:
- domains:
- - viadeo.com
-
- Flickr:
- domains:
- - flickr.com
-
- WeeWorld:
- domains:
- - weeworld.com
-
- Last.fm:
- domains:
- - lastfm.ru
-
- MyHeritage:
- domains:
- - myheritage.com
-
- Xanga:
- domains:
- - xanga.com
-
- Mixi:
- domains:
- - mixi.jp
-
- Cyworld:
- domains:
- - global.cyworld.com
-
- Gaia Online:
- domains:
- - gaiaonline.com
-
- Skyrock:
- domains:
- - skyrock.com
-
- BlackPlanet:
- domains:
- - blackplanet.com
-
- myYearbook:
- domains:
- - myyearbook.com
-
- Fotolog:
- domains:
- - fotolog.com
-
- Friends Reunited:
- domains:
- - friendsreunited.com
-
- LiveJournal:
- domains:
- - livejournal.ru
-
- StudiVZ:
- domains:
- - studivz.net
-
- StackOverflow:
- domains:
- - stackoverflow.com
-
- Sonico.com:
- domains:
- - sonico.com
-
- Pinterest:
- domains:
- - pinterest.com
-
- Plaxo:
- domains:
- - plaxo.com
-
- Geni:
- domains:
- - geni.com
-
- Tuenti:
- domains:
- - tuenti.com
-
- XING:
- domains:
- - xing.com
-
- Taringa!:
- domains:
- - taringa.net
-
- Tumblr:
- domains:
- - tumblr.com
-
- Nasza-klasa.pl:
- domains:
- - nk.pl
-
- StumbleUpon:
- domains:
- - stumbleupon.com
-
- SourceForge:
- domains:
- - sourceforge.net
-
- Hyves:
- domains:
- - hyves.nl
-
- WAYN:
- domains:
- - wayn.com
-
- Buzznet:
- domains:
- - wayn.com
-
- Multiply:
- domains:
- - multiply.com
-
- Foursquare:
- domains:
- - foursquare.com
-
- vKruguDruzei.ru:
- domains:
- - vkrugudruzei.ru
-
- Mail.ru:
- domains:
- - my.mail.ru
-
- MoiKrug.ru:
- domains:
- - moikrug.ru
-
- Reddit:
- domains:
- - reddit.com
-
- Hacker News:
- domains:
- - news.ycombinator.com
-
- Identi.ca:
- domains:
- - identi.ca
-
- Weibo:
- domains:
- - weibo.com
- - t.cn
-
- Delicious:
- domains:
- - delicious.com
-
- Pocket:
- domains:
- - getpocket.com
-
- ITU Sozluk:
- domains:
- - itusozluk.com
-
- Instela:
- domains:
- - instela.com
-
- Eksi Sozluk:
- domains:
- - Sozluk.com
- - sourtimes.org
-
- Uludag Sozluk:
- domains:
- - uludagsozluk.com
- - ulusozluk.com
-
- Inci Sozluk:
- domains:
- - inci.sozlukspot.com
- - incisozluk.com
- - incisozluk.cc
-
- Hocam.com:
- domains:
- - hocam.com
-
- Donanimhaber:
- domains:
- - donanimhaber.com
-
- Disqus:
- domains:
- - redirect.disqus.com
- - disq.us
- - disqus.com
-
- Quora:
- domains:
- - quora.com
-
-# #######################################################################################################
-#
-# SEARCH PROVIDERS
-
-search:
-
- 1.cz:
- parameters:
- - q
- domains:
- - 1.cz
-
- # 123people TODO
-
- 1und1:
- parameters:
- - su
- domains:
- - search.1und1.de
-
- 360.cn:
- parameters:
- - q
- domains:
- - so.360.cn
- - www.so.com
-
- Abacho:
- parameters:
- - q
- domains:
- - www.abacho.de
- - www.abacho.com
- - www.abacho.co.uk
- - www.se.abacho.com
- - www.tr.abacho.com
- - www.abacho.at
- - www.abacho.fr
- - www.abacho.es
- - www.abacho.ch
- - www.abacho.it
-
- ABCsøk:
- parameters:
- - q
- domains:
- - abcsolk.no
- - verden.abcsok.no
-
- Acoon:
- parameters:
- - begriff
- domains:
- - www.acoon.de
-
- Alexa:
- parameters:
- - q
- domains:
- - alexa.com
- - search.toolbars.alexa.com
-
- Alice Adsl:
- parameters:
- - q
- domains:
- - rechercher.aliceadsl.fr
-
- AllTheWeb:
- parameters:
- - q
- domains:
- - www.alltheweb.com
-
- all.by:
- parameters:
- - query
- domains:
- - all.by
-
- Altavista:
- parameters:
- - q
- domains:
- - www.altavista.com
- - search.altavista.com
- - listings.altavista.com
- - altavista.de
- - altavista.fr
- - be-nl.altavista.com
- - be-fr.altavista.com
-
- Amazon:
- parameters:
- - keywords
- domains:
- - amazon.com
- - www.amazon.com
-
- AOL:
- parameters:
- - q
- - query
- domains:
- - search.aol.com
- - search.aol.it
- - aolsearch.aol.com
- - aolsearch.com
- - www.aolrecherche.aol.fr
- - www.aolrecherches.aol.fr
- - www.aolimages.aol.fr
- - aim.search.aol.com
- - www.recherche.aol.fr
- - find.web.aol.com
- - recherche.aol.ca
- - aolsearch.aol.co.uk
- - search.aol.co.uk
- - aolrecherche.aol.fr
- - sucheaol.aol.de
- - suche.aol.de
- - suche.aolsvc.de
- - aolbusqueda.aol.com.mx
- - alicesuche.aol.de
- - alicesuchet.aol.de
- - suchet2.aol.de
- - search.hp.my.aol.com.au
- - search.hp.my.aol.de
- - search.hp.my.aol.it
- - search-intl.netscape.com
-
- Apollo Latvia:
- parameters:
- - q
- domains:
- - apollo.lv/portal/search/
-
- APOLL07:
- parameters:
- - query
- domains:
- - apollo7.de
-
- Apontador:
- parameters:
- - q
- domains:
- - apontador.com.br
- - www.apontador.com.br
-
- Aport:
- parameters:
- - r
- domains:
- - sm.aport.ru
-
- arama:
- parameters:
- - q
- domains:
- - arama.com
-
- Arcor:
- parameters:
- - Keywords
- domains:
- - www.arcor.de
-
- Arianna:
- parameters:
- - query
- domains:
- - arianna.libero.it
- - www.arianna.com
-
- Ask:
- parameters:
- - q
- domains:
- - ask.com
- - www.ask.com
- - web.ask.com
- - int.ask.com
- - mws.ask.com
- - uk.ask.com
- - images.ask.com
- - ask.reference.com
- - www.askkids.com
- - iwon.ask.com
- - www.ask.co.uk
- - www.qbyrd.com
- - search-results.com
- - uk.search-results.com
- - www.search-results.com
- - int.search-results.com
-
- Ask Toolbar:
- parameters:
- - searchfor
- domains:
- - search.tb.ask.com
-
- Atlas:
- parameters:
- - q
- domains:
- - searchatlas.centrum.cz
-
- Austronaut:
- parameters:
- - q
- domains:
- - www2.austronaut.at
- - www1.astronaut.at
-
- Babylon:
- parameters:
- - q
- domains:
- - search.babylon.com
- - searchassist.babylon.com
-
- Baidu:
- parameters:
- - wd
- - word
- - kw
- - k
- domains:
- - www.baidu.com
- - www1.baidu.com
- - zhidao.baidu.com
- - tieba.baidu.com
- - news.baidu.com
- - web.gougou.com
-
- Biglobe:
- parameters:
- - q
- domains:
- - cgi.search.biglobe.ne.jp
-
- Bing:
- parameters:
- - q
- - Q
- domains:
- - bing.com
- - www.bing.com
- - msnbc.msn.com
- - dizionario.it.msn.com
- - cc.bingj.com
- - m.bing.com
-
- Bing Images:
- parameters:
- - q
- - Q
- domains:
- - bing.com/images/search
- - www.bing.com/images/search
-
- blekko:
- parameters:
- - q
- domains:
- - blekko.com
-
- Blogdigger:
- parameters:
- - q
- domains:
- - www.blogdigger.com
-
- Blogpulse:
- parameters:
- - query
- domains:
- - www.blogpulse.com
-
- Bluewin:
- parameters:
- - searchTerm
- domains:
- - search.bluewin.ch
-
- canoe.ca:
- parameters:
- - q
- domains:
- - web.canoe.ca
-
- Centrum:
- parameters:
- - q
- domains:
- - serach.centrum.cz
- - morfeo.centrum.cz
-
- Certified-Toolbar:
- parameters:
- - q
- domains:
- - search.certified-toolbar.com
-
- Charter:
- parameters:
- - q
- domains:
- - www.charter.net
-
- Clix:
- parameters:
- - question
- domains:
- - pesquisa.clix.pt
-
- Comcast:
- parameters:
- - q
- domains:
- - search.comcast.net
-
- Conduit:
- parameters:
- - q
- domains:
- - search.conduit.com
-
- Comcast:
- parameters:
- - q
- domains:
- - serach.comcast.net
-
- Crawler:
- parameters:
- - q
- domains:
- - www.crawler.com
-
- Compuserve:
- parameters:
- - query
- domains:
- - websearch.cs.com
-
- Cuil:
- parameters:
- - q
- domains:
- - www.cuil.com
-
- Daemon search:
- parameters:
- - q
- domains:
- - daemon-search.com
- - my.daemon-search.com
-
- Dalesearch:
- parameters:
- - q
- domains:
- - www.dalesearch.com
-
- DasOertliche:
- parameters:
- - kw
- domains:
- - www.dasoertliche.de
-
- DasTelefonbuch:
- parameters:
- - kw
- domains:
- - www1.dastelefonbuch.de
-
- Daum:
- parameters:
- - q
- domains:
- - search.daum.net
-
- Delfi latvia:
- parameters:
- - q
- domains:
- - smart.delfi.lv
-
- Delfi:
- parameters:
- - q
- domains:
- - otsing.delfi.ee
-
- Digg:
- parameters:
- - s
- domains:
- - digg.com
-
- dmoz:
- parameters:
- - q
- domains:
- - dmoz.org
- - editors.dmoz.org
-
- DuckDuckGo:
- parameters:
- - q
- domains:
- - duckduckgo.com
-
- earthlink:
- parameters:
- - q
- domains:
- - search.earthlink.net
-
- Ecosia:
- parameters:
- - q
- domains:
- - ecosia.org
-
- Eniro:
- parameters:
- - q
- - search_word
- domains:
- - www.eniro.se
-
- Eurip:
- parameters:
- - q
- domains:
- - www.eurip.com
-
- Euroseek:
- parameters:
- - string
- domains:
- - www.euroseek.com
-
- Everyclick:
- parameters:
- - keyword
- domains:
- - www.everyclick.com
-
- Excite:
- parameters:
- - q
- - search
- domains:
- - search.excite.it
- - search.excite.fr
- - search.excite.de
- - search.excite.co.uk
- - serach.excite.es
- - search.excite.nl
- - msxml.excite.com
- - www.excite.co.jp
-
- Exalead:
- parameters:
- - q
- domains:
- - www.exalead.fr
- - www.exalead.com
-
- eo:
- parameters:
- - x_query
- domains:
- - eo.st
-
- Fast Browser Search:
- parameters:
- - q
- domains:
- - www.fastbrowsersearch.com
-
- Francite:
- parameters:
- - name
- domains:
- - recherche.francite.com
-
- Findwide:
- parameters:
- - k
- domains:
- - search.findwide.com
-
- Fireball:
- parameters:
- - q
- domains:
- - www.fireball.de
-
- Firstfind:
- parameters:
- - qry
- domains:
- - www.firstsfind.com
-
- Fixsuche:
- parameters:
- - q
- domains:
- - www.fixsuche.de
-
- Flix:
- parameters:
- - keyword
- domains:
- - www.flix.de
-
- Forestle:
- parameters:
- - q
- domains:
- - forestle.org
- - www.forestle.org
- - forestle.mobi
-
- Free:
- parameters:
- - q
- domains:
- - search.free.fr
- - search1-2.free.fr
- - search1-1.free.fr
-
- Freecause:
- parameters:
- - p
- domains:
- - search.freecause.com
-
- Freenet:
- parameters:
- - query
- - Keywords
- domains:
- - suche.freenet.de
-
- Freshweather:
- parameters:
- - q
- domains:
- - www.fresh-weather.com
-
- FriendFeed:
- parameters:
- - q
- domains:
- - friendfeed.com
-
- GAIS:
- parameters:
- - q
- domains:
- - gais.cs.ccu.edu.tw
-
- Geona:
- parameters:
- - q
- domains:
- - geona.net
-
- Genieo:
- parameters:
- - q
- domains:
- - search.genieo.com
-
- Gigablast:
- parameters:
- - q
- domains:
- - www.gigablast.com
- - dir.gigablast.com
-
- Globososo:
- parameters:
- - q
- domains:
- - searches.globososo.com
- - search.globososo.com
-
- GMX:
- parameters:
- - su
- domains:
- - suche.gmx.net
-
- Gnadenmeer:
- parameters:
- - keyword
- domains:
- - www.gnadenmeer.de
-
- Gomeo:
- parameters:
- - Keywords
- domains:
- - www.gomeo.com
-
- goo:
- parameters:
- - MT
- domains:
- - search.goo.ne.jp
- - ocnsearch.goo.ne.jp
-
- Google:
- parameters:
- - q
- - query # For www.cnn.com (powered by Google)
- - Keywords # For gooofullsearch.com (powered by Google)
- domains:
- - www.google.com
- - www.google.ac
- - www.google.ad
- - www.google.com.af
- - www.google.com.ag
- - www.google.com.ai
- - www.google.am
- - www.google.it.ao
- - www.google.com.ar
- - www.google.as
- - www.google.at
- - www.google.com.au
- - www.google.az
- - www.google.ba
- - www.google.com.bd
- - www.google.be
- - www.google.bf
- - www.google.bg
- - www.google.com.bh
- - www.google.bi
- - www.google.bj
- - www.google.com.bn
- - www.google.com.bo
- - www.google.com.br
- - www.google.bs
- - www.google.co.bw
- - www.google.com.by
- - www.google.by
- - www.google.com.bz
- - www.google.ca
- - www.google.com.kh
- - www.google.cc
- - www.google.cd
- - www.google.cf
- - www.google.cat
- - www.google.cg
- - www.google.ch
- - www.google.ci
- - www.google.co.ck
- - www.google.cl
- - www.google.cm
- - www.google.cn
- - www.google.com.co
- - www.google.co.cr
- - www.google.com.cu
- - www.google.cv
- - www.google.com.cy
- - www.google.cz
- - www.google.de
- - www.google.dj
- - www.google.dk
- - www.google.dm
- - www.google.com.do
- - www.google.dz
- - www.google.com.ec
- - www.google.ee
- - www.google.com.eg
- - www.google.es
- - www.google.com.et
- - www.google.fi
- - www.google.com.fj
- - www.google.fm
- - www.google.fr
- - www.google.ga
- - www.google.gd
- - www.google.ge
- - www.google.gf
- - www.google.gg
- - www.google.com.gh
- - www.google.com.gi
- - www.google.gl
- - www.google.gm
- - www.google.gp
- - www.google.gr
- - www.google.com.gt
- - www.google.gy
- - www.google.com.hk
- - www.google.hn
- - www.google.hr
- - www.google.ht
- - www.google.hu
- - www.google.co.id
- - www.google.iq
- - www.google.ie
- - www.google.co.il
- - www.google.im
- - www.google.co.in
- - www.google.io
- - www.google.is
- - www.google.it
- - www.google.je
- - www.google.com.jm
- - www.google.jo
- - www.google.co.jp
- - www.google.co.ke
- - www.google.com.kh
- - www.google.ki
- - www.google.kg
- - www.google.co.kr
- - www.google.com.kw
- - www.google.kz
- - www.google.la
- - www.google.com.lb
- - www.google.com.lc
- - www.google.li
- - www.google.lk
- - www.google.co.ls
- - www.google.lt
- - www.google.lu
- - www.google.lv
- - www.google.com.ly
- - www.google.co.ma
- - www.google.md
- - www.google.me
- - www.google.mg
- - www.google.mk
- - www.google.ml
- - www.google.mn
- - www.google.ms
- - www.google.com.mt
- - www.google.mu
- - www.google.mv
- - www.google.mw
- - www.google.com.mx
- - www.google.com.my
- - www.google.co.mz
- - www.google.com.na
- - www.google.ne
- - www.google.com.nf
- - www.google.com.ng
- - www.google.com.ni
- - www.google.nl
- - www.google.no
- - www.google.com.np
- - www.google.nr
- - www.google.nu
- - www.google.co.nz
- - www.google.com.om
- - www.google.com.pa
- - www.google.com.pe
- - www.google.com.ph
- - www.google.com.pk
- - www.google.pl
- - www.google.pn
- - www.google.com.pr
- - www.google.ps
- - www.google.pt
- - www.google.com.py
- - www.google.com.qa
- - www.google.ro
- - www.google.rs
- - www.google.ru
- - www.google.rw
- - www.google.com.sa
- - www.google.com.sb
- - www.google.sc
- - www.google.se
- - www.google.com.sg
- - www.google.sh
- - www.google.si
- - www.google.sk
- - www.google.com.sl
- - www.google.sn
- - www.google.sm
- - www.google.so
- - www.google.st
- - www.google.com.sv
- - www.google.td
- - www.google.tg
- - www.google.co.th
- - www.google.com.tj
- - www.google.tk
- - www.google.tl
- - www.google.tm
- - www.google.to
- - www.google.com.tn
- - www.google.com.tr
- - www.google.tt
- - www.google.com.tw
- - www.google.co.tz
- - www.google.com.ua
- - www.google.co.ug
- - www.google.ae
- - www.google.co.uk
- - www.google.us
- - www.google.com.uy
- - www.google.co.uz
- - www.google.com.vc
- - www.google.co.ve
- - www.google.vg
- - www.google.co.vi
- - www.google.com.vn
- - www.google.vu
- - www.google.ws
- - www.google.co.za
- - www.google.co.zm
- - www.google.co.zw
- - google.com
- - google.ac
- - google.ad
- - google.com.af
- - google.com.ag
- - google.com.ai
- - google.am
- - google.it.ao
- - google.com.ar
- - google.as
- - google.at
- - google.com.au
- - google.az
- - google.ba
- - google.com.bd
- - google.be
- - google.bf
- - google.bg
- - google.com.bh
- - google.bi
- - google.bj
- - google.com.bn
- - google.com.bo
- - google.com.br
- - google.bs
- - google.co.bw
- - google.com.by
- - google.by
- - google.com.bz
- - google.ca
- - google.com.kh
- - google.cc
- - google.cd
- - google.cf
- - google.cat
- - google.cg
- - google.ch
- - google.ci
- - google.co.ck
- - google.cl
- - google.cm
- - google.cn
- - google.com.co
- - google.co.cr
- - google.com.cu
- - google.cv
- - google.com.cy
- - google.cz
- - google.de
- - google.dj
- - google.dk
- - google.dm
- - google.com.do
- - google.dz
- - google.com.ec
- - google.ee
- - google.com.eg
- - google.es
- - google.com.et
- - google.fi
- - google.com.fj
- - google.fm
- - google.fr
- - google.ga
- - google.gd
- - google.ge
- - google.gf
- - google.gg
- - google.com.gh
- - google.com.gi
- - google.gl
- - google.gm
- - google.gp
- - google.gr
- - google.com.gt
- - google.gy
- - google.com.hk
- - google.hn
- - google.hr
- - google.ht
- - google.hu
- - google.co.id
- - google.iq
- - google.ie
- - google.co.il
- - google.im
- - google.co.in
- - google.io
- - google.is
- - google.it
- - google.je
- - google.com.jm
- - google.jo
- - google.co.jp
- - google.co.ke
- - google.com.kh
- - google.ki
- - google.kg
- - google.co.kr
- - google.com.kw
- - google.kz
- - google.la
- - google.com.lb
- - google.com.lc
- - google.li
- - google.lk
- - google.co.ls
- - google.lt
- - google.lu
- - google.lv
- - google.com.ly
- - google.co.ma
- - google.md
- - google.me
- - google.mg
- - google.mk
- - google.ml
- - google.mn
- - google.ms
- - google.com.mt
- - google.mu
- - google.mv
- - google.mw
- - google.com.mx
- - google.com.my
- - google.co.mz
- - google.com.na
- - google.ne
- - google.com.nf
- - google.com.ng
- - google.com.ni
- - google.nl
- - google.no
- - google.com.np
- - google.nr
- - google.nu
- - google.co.nz
- - google.com.om
- - google.com.pa
- - google.com.pe
- - google.com.ph
- - google.com.pk
- - google.pl
- - google.pn
- - google.com.pr
- - google.ps
- - google.pt
- - google.com.py
- - google.com.qa
- - google.ro
- - google.rs
- - google.ru
- - google.rw
- - google.com.sa
- - google.com.sb
- - google.sc
- - google.se
- - google.com.sg
- - google.sh
- - google.si
- - google.sk
- - google.com.sl
- - google.sn
- - google.sm
- - google.so
- - google.st
- - google.com.sv
- - google.td
- - google.tg
- - google.co.th
- - google.com.tj
- - google.tk
- - google.tl
- - google.tm
- - google.to
- - google.com.tn
- - google.com.tr
- - google.tt
- - google.com.tw
- - google.co.tz
- - google.com.ua
- - google.co.ug
- - google.ae
- - google.co.uk
- - google.us
- - google.com.uy
- - google.co.uz
- - google.com.vc
- - google.co.ve
- - google.vg
- - google.co.vi
- - google.com.vn
- - google.vu
- - google.ws
- - google.co.za
- - google.co.zm
- - google.co.zw
- # powered by Google
- - search.avg.com
- - isearch.avg.com
- - www.cnn.com
- - darkoogle.com
- - search.darkoogle.com
- - search.foxtab.com
- - www.gooofullsearch.com
- - search.hiyo.com
- - search.incredimail.com
- - search1.incredimail.com
- - search2.incredimail.com
- - search3.incredimail.com
- - search4.incredimail.com
- - search.incredibar.com
- - search.sweetim.com
- - www.fastweb.it
- - search.juno.com
- - find.tdc.dk
- - searchresults.verizon.com
- - search.walla.co.il
- - search.alot.com
- # Google Earch
- - www.googleearth.de
- - www.googleearth.fr
- # Google Cache
- - webcache.googleusercontent.com
- # Google SSL
- - encrypted.google.com
- # Syndicated search
- - googlesyndicatedsearch.com
-
- Google Blogsearch:
- parameters:
- - q
- domains:
- - blogsearch.google.ac
- - blogsearch.google.ad
- - blogsearch.google.ae
- - blogsearch.google.am
- - blogsearch.google.as
- - blogsearch.google.at
- - blogsearch.google.az
- - blogsearch.google.ba
- - blogsearch.google.be
- - blogsearch.google.bf
- - blogsearch.google.bg
- - blogsearch.google.bi
- - blogsearch.google.bj
- - blogsearch.google.bs
- - blogsearch.google.by
- - blogsearch.google.ca
- - blogsearch.google.cat
- - blogsearch.google.cc
- - blogsearch.google.cd
- - blogsearch.google.cf
- - blogsearch.google.cg
- - blogsearch.google.ch
- - blogsearch.google.ci
- - blogsearch.google.cl
- - blogsearch.google.cm
- - blogsearch.google.cn
- - blogsearch.google.co.bw
- - blogsearch.google.co.ck
- - blogsearch.google.co.cr
- - blogsearch.google.co.id
- - blogsearch.google.co.il
- - blogsearch.google.co.in
- - blogsearch.google.co.jp
- - blogsearch.google.co.ke
- - blogsearch.google.co.kr
- - blogsearch.google.co.ls
- - blogsearch.google.co.ma
- - blogsearch.google.co.mz
- - blogsearch.google.co.nz
- - blogsearch.google.co.th
- - blogsearch.google.co.tz
- - blogsearch.google.co.ug
- - blogsearch.google.co.uk
- - blogsearch.google.co.uz
- - blogsearch.google.co.ve
- - blogsearch.google.co.vi
- - blogsearch.google.co.za
- - blogsearch.google.co.zm
- - blogsearch.google.co.zw
- - blogsearch.google.com
- - blogsearch.google.com.af
- - blogsearch.google.com.ag
- - blogsearch.google.com.ai
- - blogsearch.google.com.ar
- - blogsearch.google.com.au
- - blogsearch.google.com.bd
- - blogsearch.google.com.bh
- - blogsearch.google.com.bn
- - blogsearch.google.com.bo
- - blogsearch.google.com.br
- - blogsearch.google.com.by
- - blogsearch.google.com.bz
- - blogsearch.google.com.co
- - blogsearch.google.com.cu
- - blogsearch.google.com.cy
- - blogsearch.google.com.do
- - blogsearch.google.com.ec
- - blogsearch.google.com.eg
- - blogsearch.google.com.et
- - blogsearch.google.com.fj
- - blogsearch.google.com.gh
- - blogsearch.google.com.gi
- - blogsearch.google.com.gt
- - blogsearch.google.com.hk
- - blogsearch.google.com.jm
- - blogsearch.google.com.kh
- - blogsearch.google.com.kh
- - blogsearch.google.com.kw
- - blogsearch.google.com.lb
- - blogsearch.google.com.lc
- - blogsearch.google.com.ly
- - blogsearch.google.com.mt
- - blogsearch.google.com.mx
- - blogsearch.google.com.my
- - blogsearch.google.com.na
- - blogsearch.google.com.nf
- - blogsearch.google.com.ng
- - blogsearch.google.com.ni
- - blogsearch.google.com.np
- - blogsearch.google.com.om
- - blogsearch.google.com.pa
- - blogsearch.google.com.pe
- - blogsearch.google.com.ph
- - blogsearch.google.com.pk
- - blogsearch.google.com.pr
- - blogsearch.google.com.py
- - blogsearch.google.com.qa
- - blogsearch.google.com.sa
- - blogsearch.google.com.sb
- - blogsearch.google.com.sg
- - blogsearch.google.com.sl
- - blogsearch.google.com.sv
- - blogsearch.google.com.tj
- - blogsearch.google.com.tn
- - blogsearch.google.com.tr
- - blogsearch.google.com.tw
- - blogsearch.google.com.ua
- - blogsearch.google.com.uy
- - blogsearch.google.com.vc
- - blogsearch.google.com.vn
- - blogsearch.google.cv
- - blogsearch.google.cz
- - blogsearch.google.de
- - blogsearch.google.dj
- - blogsearch.google.dk
- - blogsearch.google.dm
- - blogsearch.google.dz
- - blogsearch.google.ee
- - blogsearch.google.es
- - blogsearch.google.fi
- - blogsearch.google.fm
- - blogsearch.google.fr
- - blogsearch.google.ga
- - blogsearch.google.gd
- - blogsearch.google.ge
- - blogsearch.google.gf
- - blogsearch.google.gg
- - blogsearch.google.gl
- - blogsearch.google.gm
- - blogsearch.google.gp
- - blogsearch.google.gr
- - blogsearch.google.gy
- - blogsearch.google.hn
- - blogsearch.google.hr
- - blogsearch.google.ht
- - blogsearch.google.hu
- - blogsearch.google.ie
- - blogsearch.google.im
- - blogsearch.google.io
- - blogsearch.google.iq
- - blogsearch.google.is
- - blogsearch.google.it
- - blogsearch.google.it.ao
- - blogsearch.google.je
- - blogsearch.google.jo
- - blogsearch.google.kg
- - blogsearch.google.ki
- - blogsearch.google.kz
- - blogsearch.google.la
- - blogsearch.google.li
- - blogsearch.google.lk
- - blogsearch.google.lt
- - blogsearch.google.lu
- - blogsearch.google.lv
- - blogsearch.google.md
- - blogsearch.google.me
- - blogsearch.google.mg
- - blogsearch.google.mk
- - blogsearch.google.ml
- - blogsearch.google.mn
- - blogsearch.google.ms
- - blogsearch.google.mu
- - blogsearch.google.mv
- - blogsearch.google.mw
- - blogsearch.google.ne
- - blogsearch.google.nl
- - blogsearch.google.no
- - blogsearch.google.nr
- - blogsearch.google.nu
- - blogsearch.google.pl
- - blogsearch.google.pn
- - blogsearch.google.ps
- - blogsearch.google.pt
- - blogsearch.google.ro
- - blogsearch.google.rs
- - blogsearch.google.ru
- - blogsearch.google.rw
- - blogsearch.google.sc
- - blogsearch.google.se
- - blogsearch.google.sh
- - blogsearch.google.si
- - blogsearch.google.sk
- - blogsearch.google.sm
- - blogsearch.google.sn
- - blogsearch.google.so
- - blogsearch.google.st
- - blogsearch.google.td
- - blogsearch.google.tg
- - blogsearch.google.tk
- - blogsearch.google.tl
- - blogsearch.google.tm
- - blogsearch.google.to
- - blogsearch.google.tt
- - blogsearch.google.us
- - blogsearch.google.vg
- - blogsearch.google.vu
- - blogsearch.google.ws
-
- Google Images:
- parameters:
- - q
- domains:
- - google.ac/imgres
- - google.ad/imgres
- - google.ae/imgres
- - google.am/imgres
- - google.as/imgres
- - google.at/imgres
- - google.az/imgres
- - google.ba/imgres
- - google.be/imgres
- - google.bf/imgres
- - google.bg/imgres
- - google.bi/imgres
- - google.bj/imgres
- - google.bs/imgres
- - google.by/imgres
- - google.ca/imgres
- - google.cat/imgres
- - google.cc/imgres
- - google.cd/imgres
- - google.cf/imgres
- - google.cg/imgres
- - google.ch/imgres
- - google.ci/imgres
- - google.cl/imgres
- - google.cm/imgres
- - google.cn/imgres
- - google.co.bw/imgres
- - google.co.ck/imgres
- - google.co.cr/imgres
- - google.co.id/imgres
- - google.co.il/imgres
- - google.co.in/imgres
- - google.co.jp/imgres
- - google.co.ke/imgres
- - google.co.kr/imgres
- - google.co.ls/imgres
- - google.co.ma/imgres
- - google.co.mz/imgres
- - google.co.nz/imgres
- - google.co.th/imgres
- - google.co.tz/imgres
- - google.co.ug/imgres
- - google.co.uk/imgres
- - google.co.uz/imgres
- - google.co.ve/imgres
- - google.co.vi/imgres
- - google.co.za/imgres
- - google.co.zm/imgres
- - google.co.zw/imgres
- - google.com/imgres
- - google.com.af/imgres
- - google.com.ag/imgres
- - google.com.ai/imgres
- - google.com.ar/imgres
- - google.com.au/imgres
- - google.com.bd/imgres
- - google.com.bh/imgres
- - google.com.bn/imgres
- - google.com.bo/imgres
- - google.com.br/imgres
- - google.com.by/imgres
- - google.com.bz/imgres
- - google.com.co/imgres
- - google.com.cu/imgres
- - google.com.cy/imgres
- - google.com.do/imgres
- - google.com.ec/imgres
- - google.com.eg/imgres
- - google.com.et/imgres
- - google.com.fj/imgres
- - google.com.gh/imgres
- - google.com.gi/imgres
- - google.com.gt/imgres
- - google.com.hk/imgres
- - google.com.jm/imgres
- - google.com.kh/imgres
- - google.com.kw/imgres
- - google.com.lb/imgres
- - google.com.lc/imgres
- - google.com.ly/imgres
- - google.com.mt/imgres
- - google.com.mx/imgres
- - google.com.my/imgres
- - google.com.na/imgres
- - google.com.nf/imgres
- - google.com.ng/imgres
- - google.com.ni/imgres
- - google.com.np/imgres
- - google.com.om/imgres
- - google.com.pa/imgres
- - google.com.pe/imgres
- - google.com.ph/imgres
- - google.com.pk/imgres
- - google.com.pr/imgres
- - google.com.py/imgres
- - google.com.qa/imgres
- - google.com.sa/imgres
- - google.com.sb/imgres
- - google.com.sg/imgres
- - google.com.sl/imgres
- - google.com.sv/imgres
- - google.com.tj/imgres
- - google.com.tn/imgres
- - google.com.tr/imgres
- - google.com.tw/imgres
- - google.com.ua/imgres
- - google.com.uy/imgres
- - google.com.vc/imgres
- - google.com.vn/imgres
- - google.cv/imgres
- - google.cz/imgres
- - google.de/imgres
- - google.dj/imgres
- - google.dk/imgres
- - google.dm/imgres
- - google.dz/imgres
- - google.ee/imgres
- - google.es/imgres
- - google.fi/imgres
- - google.fm/imgres
- - google.fr/imgres
- - google.ga/imgres
- - google.gd/imgres
- - google.ge/imgres
- - google.gf/imgres
- - google.gg/imgres
- - google.gl/imgres
- - google.gm/imgres
- - google.gp/imgres
- - google.gr/imgres
- - google.gy/imgres
- - google.hn/imgres
- - google.hr/imgres
- - google.ht/imgres
- - google.hu/imgres
- - google.ie/imgres
- - google.im/imgres
- - google.io/imgres
- - google.iq/imgres
- - google.is/imgres
- - google.it/imgres
- - google.it.ao/imgres
- - google.je/imgres
- - google.jo/imgres
- - google.kg/imgres
- - google.ki/imgres
- - google.kz/imgres
- - google.la/imgres
- - google.li/imgres
- - google.lk/imgres
- - google.lt/imgres
- - google.lu/imgres
- - google.lv/imgres
- - google.md/imgres
- - google.me/imgres
- - google.mg/imgres
- - google.mk/imgres
- - google.ml/imgres
- - google.mn/imgres
- - google.ms/imgres
- - google.mu/imgres
- - google.mv/imgres
- - google.mw/imgres
- - google.ne/imgres
- - google.nl/imgres
- - google.no/imgres
- - google.nr/imgres
- - google.nu/imgres
- - google.pl/imgres
- - google.pn/imgres
- - google.ps/imgres
- - google.pt/imgres
- - google.ro/imgres
- - google.rs/imgres
- - google.ru/imgres
- - google.rw/imgres
- - google.sc/imgres
- - google.se/imgres
- - google.sh/imgres
- - google.si/imgres
- - google.sk/imgres
- - google.sm/imgres
- - google.sn/imgres
- - google.so/imgres
- - google.st/imgres
- - google.td/imgres
- - google.tg/imgres
- - google.tk/imgres
- - google.tl/imgres
- - google.tm/imgres
- - google.to/imgres
- - google.tt/imgres
- - google.us/imgres
- - google.vg/imgres
- - google.vu/imgres
- - images.google.ws
- - images.google.ac
- - images.google.ad
- - images.google.ae
- - images.google.am
- - images.google.as
- - images.google.at
- - images.google.az
- - images.google.ba
- - images.google.be
- - images.google.bf
- - images.google.bg
- - images.google.bi
- - images.google.bj
- - images.google.bs
- - images.google.by
- - images.google.ca
- - images.google.cat
- - images.google.cc
- - images.google.cd
- - images.google.cf
- - images.google.cg
- - images.google.ch
- - images.google.ci
- - images.google.cl
- - images.google.cm
- - images.google.cn
- - images.google.co.bw
- - images.google.co.ck
- - images.google.co.cr
- - images.google.co.id
- - images.google.co.il
- - images.google.co.in
- - images.google.co.jp
- - images.google.co.ke
- - images.google.co.kr
- - images.google.co.ls
- - images.google.co.ma
- - images.google.co.mz
- - images.google.co.nz
- - images.google.co.th
- - images.google.co.tz
- - images.google.co.ug
- - images.google.co.uk
- - images.google.co.uz
- - images.google.co.ve
- - images.google.co.vi
- - images.google.co.za
- - images.google.co.zm
- - images.google.co.zw
- - images.google.com
- - images.google.com.af
- - images.google.com.ag
- - images.google.com.ai
- - images.google.com.ar
- - images.google.com.au
- - images.google.com.bd
- - images.google.com.bh
- - images.google.com.bn
- - images.google.com.bo
- - images.google.com.br
- - images.google.com.by
- - images.google.com.bz
- - images.google.com.co
- - images.google.com.cu
- - images.google.com.cy
- - images.google.com.do
- - images.google.com.ec
- - images.google.com.eg
- - images.google.com.et
- - images.google.com.fj
- - images.google.com.gh
- - images.google.com.gi
- - images.google.com.gt
- - images.google.com.hk
- - images.google.com.jm
- - images.google.com.kh
- - images.google.com.kh
- - images.google.com.kw
- - images.google.com.lb
- - images.google.com.lc
- - images.google.com.ly
- - images.google.com.mt
- - images.google.com.mx
- - images.google.com.my
- - images.google.com.na
- - images.google.com.nf
- - images.google.com.ng
- - images.google.com.ni
- - images.google.com.np
- - images.google.com.om
- - images.google.com.pa
- - images.google.com.pe
- - images.google.com.ph
- - images.google.com.pk
- - images.google.com.pr
- - images.google.com.py
- - images.google.com.qa
- - images.google.com.sa
- - images.google.com.sb
- - images.google.com.sg
- - images.google.com.sl
- - images.google.com.sv
- - images.google.com.tj
- - images.google.com.tn
- - images.google.com.tr
- - images.google.com.tw
- - images.google.com.ua
- - images.google.com.uy
- - images.google.com.vc
- - images.google.com.vn
- - images.google.cv
- - images.google.cz
- - images.google.de
- - images.google.dj
- - images.google.dk
- - images.google.dm
- - images.google.dz
- - images.google.ee
- - images.google.es
- - images.google.fi
- - images.google.fm
- - images.google.fr
- - images.google.ga
- - images.google.gd
- - images.google.ge
- - images.google.gf
- - images.google.gg
- - images.google.gl
- - images.google.gm
- - images.google.gp
- - images.google.gr
- - images.google.gy
- - images.google.hn
- - images.google.hr
- - images.google.ht
- - images.google.hu
- - images.google.ie
- - images.google.im
- - images.google.io
- - images.google.iq
- - images.google.is
- - images.google.it
- - images.google.it.ao
- - images.google.je
- - images.google.jo
- - images.google.kg
- - images.google.ki
- - images.google.kz
- - images.google.la
- - images.google.li
- - images.google.lk
- - images.google.lt
- - images.google.lu
- - images.google.lv
- - images.google.md
- - images.google.me
- - images.google.mg
- - images.google.mk
- - images.google.ml
- - images.google.mn
- - images.google.ms
- - images.google.mu
- - images.google.mv
- - images.google.mw
- - images.google.ne
- - images.google.nl
- - images.google.no
- - images.google.nr
- - images.google.nu
- - images.google.pl
- - images.google.pn
- - images.google.ps
- - images.google.pt
- - images.google.ro
- - images.google.rs
- - images.google.ru
- - images.google.rw
- - images.google.sc
- - images.google.se
- - images.google.sh
- - images.google.si
- - images.google.sk
- - images.google.sm
- - images.google.sn
- - images.google.so
- - images.google.st
- - images.google.td
- - images.google.tg
- - images.google.tk
- - images.google.tl
- - images.google.tm
- - images.google.to
- - images.google.tt
- - images.google.us
- - images.google.vg
- - images.google.vu
- - images.google.ws
-
- Google News:
- parameters:
- - q
- domains:
- - news.google.ac
- - news.google.ad
- - news.google.ae
- - news.google.am
- - news.google.as
- - news.google.at
- - news.google.az
- - news.google.ba
- - news.google.be
- - news.google.bf
- - news.google.bg
- - news.google.bi
- - news.google.bj
- - news.google.bs
- - news.google.by
- - news.google.ca
- - news.google.cat
- - news.google.cc
- - news.google.cd
- - news.google.cf
- - news.google.cg
- - news.google.ch
- - news.google.ci
- - news.google.cl
- - news.google.cm
- - news.google.cn
- - news.google.co.bw
- - news.google.co.ck
- - news.google.co.cr
- - news.google.co.id
- - news.google.co.il
- - news.google.co.in
- - news.google.co.jp
- - news.google.co.ke
- - news.google.co.kr
- - news.google.co.ls
- - news.google.co.ma
- - news.google.co.mz
- - news.google.co.nz
- - news.google.co.th
- - news.google.co.tz
- - news.google.co.ug
- - news.google.co.uk
- - news.google.co.uz
- - news.google.co.ve
- - news.google.co.vi
- - news.google.co.za
- - news.google.co.zm
- - news.google.co.zw
- - news.google.com
- - news.google.com.af
- - news.google.com.ag
- - news.google.com.ai
- - news.google.com.ar
- - news.google.com.au
- - news.google.com.bd
- - news.google.com.bh
- - news.google.com.bn
- - news.google.com.bo
- - news.google.com.br
- - news.google.com.by
- - news.google.com.bz
- - news.google.com.co
- - news.google.com.cu
- - news.google.com.cy
- - news.google.com.do
- - news.google.com.ec
- - news.google.com.eg
- - news.google.com.et
- - news.google.com.fj
- - news.google.com.gh
- - news.google.com.gi
- - news.google.com.gt
- - news.google.com.hk
- - news.google.com.jm
- - news.google.com.kh
- - news.google.com.kh
- - news.google.com.kw
- - news.google.com.lb
- - news.google.com.lc
- - news.google.com.ly
- - news.google.com.mt
- - news.google.com.mx
- - news.google.com.my
- - news.google.com.na
- - news.google.com.nf
- - news.google.com.ng
- - news.google.com.ni
- - news.google.com.np
- - news.google.com.om
- - news.google.com.pa
- - news.google.com.pe
- - news.google.com.ph
- - news.google.com.pk
- - news.google.com.pr
- - news.google.com.py
- - news.google.com.qa
- - news.google.com.sa
- - news.google.com.sb
- - news.google.com.sg
- - news.google.com.sl
- - news.google.com.sv
- - news.google.com.tj
- - news.google.com.tn
- - news.google.com.tr
- - news.google.com.tw
- - news.google.com.ua
- - news.google.com.uy
- - news.google.com.vc
- - news.google.com.vn
- - news.google.cv
- - news.google.cz
- - news.google.de
- - news.google.dj
- - news.google.dk
- - news.google.dm
- - news.google.dz
- - news.google.ee
- - news.google.es
- - news.google.fi
- - news.google.fm
- - news.google.fr
- - news.google.ga
- - news.google.gd
- - news.google.ge
- - news.google.gf
- - news.google.gg
- - news.google.gl
- - news.google.gm
- - news.google.gp
- - news.google.gr
- - news.google.gy
- - news.google.hn
- - news.google.hr
- - news.google.ht
- - news.google.hu
- - news.google.ie
- - news.google.im
- - news.google.io
- - news.google.iq
- - news.google.is
- - news.google.it
- - news.google.it.ao
- - news.google.je
- - news.google.jo
- - news.google.kg
- - news.google.ki
- - news.google.kz
- - news.google.la
- - news.google.li
- - news.google.lk
- - news.google.lt
- - news.google.lu
- - news.google.lv
- - news.google.md
- - news.google.me
- - news.google.mg
- - news.google.mk
- - news.google.ml
- - news.google.mn
- - news.google.ms
- - news.google.mu
- - news.google.mv
- - news.google.mw
- - news.google.ne
- - news.google.nl
- - news.google.no
- - news.google.nr
- - news.google.nu
- - news.google.pl
- - news.google.pn
- - news.google.ps
- - news.google.pt
- - news.google.ro
- - news.google.rs
- - news.google.ru
- - news.google.rw
- - news.google.sc
- - news.google.se
- - news.google.sh
- - news.google.si
- - news.google.sk
- - news.google.sm
- - news.google.sn
- - news.google.so
- - news.google.st
- - news.google.td
- - news.google.tg
- - news.google.tk
- - news.google.tl
- - news.google.tm
- - news.google.to
- - news.google.tt
- - news.google.us
- - news.google.vg
- - news.google.vu
- - news.google.ws
-
- Google Product Search:
- parameters:
- - q
- domains:
- - google.ac/products
- - google.ad/products
- - google.ae/products
- - google.am/products
- - google.as/products
- - google.at/products
- - google.az/products
- - google.ba/products
- - google.be/products
- - google.bf/products
- - google.bg/products
- - google.bi/products
- - google.bj/products
- - google.bs/products
- - google.by/products
- - google.ca/products
- - google.cat/products
- - google.cc/products
- - google.cd/products
- - google.cf/products
- - google.cg/products
- - google.ch/products
- - google.ci/products
- - google.cl/products
- - google.cm/products
- - google.cn/products
- - google.co.bw/products
- - google.co.ck/products
- - google.co.cr/products
- - google.co.id/products
- - google.co.il/products
- - google.co.in/products
- - google.co.jp/products
- - google.co.ke/products
- - google.co.kr/products
- - google.co.ls/products
- - google.co.ma/products
- - google.co.mz/products
- - google.co.nz/products
- - google.co.th/products
- - google.co.tz/products
- - google.co.ug/products
- - google.co.uk/products
- - google.co.uz/products
- - google.co.ve/products
- - google.co.vi/products
- - google.co.za/products
- - google.co.zm/products
- - google.co.zw/products
- - google.com/products
- - google.com.af/products
- - google.com.ag/products
- - google.com.ai/products
- - google.com.ar/products
- - google.com.au/products
- - google.com.bd/products
- - google.com.bh/products
- - google.com.bn/products
- - google.com.bo/products
- - google.com.br/products
- - google.com.by/products
- - google.com.bz/products
- - google.com.co/products
- - google.com.cu/products
- - google.com.cy/products
- - google.com.do/products
- - google.com.ec/products
- - google.com.eg/products
- - google.com.et/products
- - google.com.fj/products
- - google.com.gh/products
- - google.com.gi/products
- - google.com.gt/products
- - google.com.hk/products
- - google.com.jm/products
- - google.com.kh/products
- - google.com.kh/products
- - google.com.kw/products
- - google.com.lb/products
- - google.com.lc/products
- - google.com.ly/products
- - google.com.mt/products
- - google.com.mx/products
- - google.com.my/products
- - google.com.na/products
- - google.com.nf/products
- - google.com.ng/products
- - google.com.ni/products
- - google.com.np/products
- - google.com.om/products
- - google.com.pa/products
- - google.com.pe/products
- - google.com.ph/products
- - google.com.pk/products
- - google.com.pr/products
- - google.com.py/products
- - google.com.qa/products
- - google.com.sa/products
- - google.com.sb/products
- - google.com.sg/products
- - google.com.sl/products
- - google.com.sv/products
- - google.com.tj/products
- - google.com.tn/products
- - google.com.tr/products
- - google.com.tw/products
- - google.com.ua/products
- - google.com.uy/products
- - google.com.vc/products
- - google.com.vn/products
- - google.cv/products
- - google.cz/products
- - google.de/products
- - google.dj/products
- - google.dk/products
- - google.dm/products
- - google.dz/products
- - google.ee/products
- - google.es/products
- - google.fi/products
- - google.fm/products
- - google.fr/products
- - google.ga/products
- - google.gd/products
- - google.ge/products
- - google.gf/products
- - google.gg/products
- - google.gl/products
- - google.gm/products
- - google.gp/products
- - google.gr/products
- - google.gy/products
- - google.hn/products
- - google.hr/products
- - google.ht/products
- - google.hu/products
- - google.ie/products
- - google.im/products
- - google.io/products
- - google.iq/products
- - google.is/products
- - google.it/products
- - google.it.ao/products
- - google.je/products
- - google.jo/products
- - google.kg/products
- - google.ki/products
- - google.kz/products
- - google.la/products
- - google.li/products
- - google.lk/products
- - google.lt/products
- - google.lu/products
- - google.lv/products
- - google.md/products
- - google.me/products
- - google.mg/products
- - google.mk/products
- - google.ml/products
- - google.mn/products
- - google.ms/products
- - google.mu/products
- - google.mv/products
- - google.mw/products
- - google.ne/products
- - google.nl/products
- - google.no/products
- - google.nr/products
- - google.nu/products
- - google.pl/products
- - google.pn/products
- - google.ps/products
- - google.pt/products
- - google.ro/products
- - google.rs/products
- - google.ru/products
- - google.rw/products
- - google.sc/products
- - google.se/products
- - google.sh/products
- - google.si/products
- - google.sk/products
- - google.sm/products
- - google.sn/products
- - google.so/products
- - google.st/products
- - google.td/products
- - google.tg/products
- - google.tk/products
- - google.tl/products
- - google.tm/products
- - google.to/products
- - google.tt/products
- - google.us/products
- - google.vg/products
- - google.vu/products
- - google.ws/products
- - www.google.ac/products
- - www.google.ad/products
- - www.google.ae/products
- - www.google.am/products
- - www.google.as/products
- - www.google.at/products
- - www.google.az/products
- - www.google.ba/products
- - www.google.be/products
- - www.google.bf/products
- - www.google.bg/products
- - www.google.bi/products
- - www.google.bj/products
- - www.google.bs/products
- - www.google.by/products
- - www.google.ca/products
- - www.google.cat/products
- - www.google.cc/products
- - www.google.cd/products
- - www.google.cf/products
- - www.google.cg/products
- - www.google.ch/products
- - www.google.ci/products
- - www.google.cl/products
- - www.google.cm/products
- - www.google.cn/products
- - www.google.co.bw/products
- - www.google.co.ck/products
- - www.google.co.cr/products
- - www.google.co.id/products
- - www.google.co.il/products
- - www.google.co.in/products
- - www.google.co.jp/products
- - www.google.co.ke/products
- - www.google.co.kr/products
- - www.google.co.ls/products
- - www.google.co.ma/products
- - www.google.co.mz/products
- - www.google.co.nz/products
- - www.google.co.th/products
- - www.google.co.tz/products
- - www.google.co.ug/products
- - www.google.co.uk/products
- - www.google.co.uz/products
- - www.google.co.ve/products
- - www.google.co.vi/products
- - www.google.co.za/products
- - www.google.co.zm/products
- - www.google.co.zw/products
- - www.google.com/products
- - www.google.com.af/products
- - www.google.com.ag/products
- - www.google.com.ai/products
- - www.google.com.ar/products
- - www.google.com.au/products
- - www.google.com.bd/products
- - www.google.com.bh/products
- - www.google.com.bn/products
- - www.google.com.bo/products
- - www.google.com.br/products
- - www.google.com.by/products
- - www.google.com.bz/products
- - www.google.com.co/products
- - www.google.com.cu/products
- - www.google.com.cy/products
- - www.google.com.do/products
- - www.google.com.ec/products
- - www.google.com.eg/products
- - www.google.com.et/products
- - www.google.com.fj/products
- - www.google.com.gh/products
- - www.google.com.gi/products
- - www.google.com.gt/products
- - www.google.com.hk/products
- - www.google.com.jm/products
- - www.google.com.kh/products
- - www.google.com.kh/products
- - www.google.com.kw/products
- - www.google.com.lb/products
- - www.google.com.lc/products
- - www.google.com.ly/products
- - www.google.com.mt/products
- - www.google.com.mx/products
- - www.google.com.my/products
- - www.google.com.na/products
- - www.google.com.nf/products
- - www.google.com.ng/products
- - www.google.com.ni/products
- - www.google.com.np/products
- - www.google.com.om/products
- - www.google.com.pa/products
- - www.google.com.pe/products
- - www.google.com.ph/products
- - www.google.com.pk/products
- - www.google.com.pr/products
- - www.google.com.py/products
- - www.google.com.qa/products
- - www.google.com.sa/products
- - www.google.com.sb/products
- - www.google.com.sg/products
- - www.google.com.sl/products
- - www.google.com.sv/products
- - www.google.com.tj/products
- - www.google.com.tn/products
- - www.google.com.tr/products
- - www.google.com.tw/products
- - www.google.com.ua/products
- - www.google.com.uy/products
- - www.google.com.vc/products
- - www.google.com.vn/products
- - www.google.cv/products
- - www.google.cz/products
- - www.google.de/products
- - www.google.dj/products
- - www.google.dk/products
- - www.google.dm/products
- - www.google.dz/products
- - www.google.ee/products
- - www.google.es/products
- - www.google.fi/products
- - www.google.fm/products
- - www.google.fr/products
- - www.google.ga/products
- - www.google.gd/products
- - www.google.ge/products
- - www.google.gf/products
- - www.google.gg/products
- - www.google.gl/products
- - www.google.gm/products
- - www.google.gp/products
- - www.google.gr/products
- - www.google.gy/products
- - www.google.hn/products
- - www.google.hr/products
- - www.google.ht/products
- - www.google.hu/products
- - www.google.ie/products
- - www.google.im/products
- - www.google.io/products
- - www.google.iq/products
- - www.google.is/products
- - www.google.it/products
- - www.google.it.ao/products
- - www.google.je/products
- - www.google.jo/products
- - www.google.kg/products
- - www.google.ki/products
- - www.google.kz/products
- - www.google.la/products
- - www.google.li/products
- - www.google.lk/products
- - www.google.lt/products
- - www.google.lu/products
- - www.google.lv/products
- - www.google.md/products
- - www.google.me/products
- - www.google.mg/products
- - www.google.mk/products
- - www.google.ml/products
- - www.google.mn/products
- - www.google.ms/products
- - www.google.mu/products
- - www.google.mv/products
- - www.google.mw/products
- - www.google.ne/products
- - www.google.nl/products
- - www.google.no/products
- - www.google.nr/products
- - www.google.nu/products
- - www.google.pl/products
- - www.google.pn/products
- - www.google.ps/products
- - www.google.pt/products
- - www.google.ro/products
- - www.google.rs/products
- - www.google.ru/products
- - www.google.rw/products
- - www.google.sc/products
- - www.google.se/products
- - www.google.sh/products
- - www.google.si/products
- - www.google.sk/products
- - www.google.sm/products
- - www.google.sn/products
- - www.google.so/products
- - www.google.st/products
- - www.google.td/products
- - www.google.tg/products
- - www.google.tk/products
- - www.google.tl/products
- - www.google.tm/products
- - www.google.to/products
- - www.google.tt/products
- - www.google.us/products
- - www.google.vg/products
- - www.google.vu/products
- - www.google.ws/products
-
- Google Video:
- parameters:
- - q
- domains:
- - video.google.com
-
- Goyellow.de:
- parameters:
- - MDN
- domains:
- - www.goyellow.de
-
- Gule Sider:
- parameters:
- - q
- domains:
- - www.gulesider.no
-
- HighBeam:
- parameters:
- - q
- domains:
- - www.highbeam.com
-
- Hit-Parade:
- parameters:
- - p7
- domains:
- - req.-hit-parade.com
- - class.hit-parade.com
- - www.hit-parade.com
-
- Holmes:
- parameters:
- - q
- domains:
- - holmes.ge
-
- Hooseek.com:
- parameters:
- - recherche
- domains:
- - www.hooseek.com
-
- Hotbot:
- parameters:
- - query
- domains:
- - www.hotbot.com
-
- Icerockeet:
- parameters:
- - q
- domains:
- - blogs.icerocket.com
-
- ICQ:
- parameters:
- - q
- domains:
- - www.icq.com
- - search.icq.com
-
- Ilse:
- parameters:
- - search_for
- domains:
- - www.ilse.nl
-
- InfoSpace:
- parameters:
- - q
- - s
- domains:
- - infospace.com
- - dogpile.com
- - www.dogpile.com
- - metacrawler.com
- - webfetch.com
- - webcrawler.com
- - search.kiwee.com
- # powered by InfoSpace
- - isearch.babylon.com
- - start.facemoods.com
- - search.magnetic.com
- - search.searchcompletion.com
- - clusty.com
-
- Interia:
- parameters:
- - q
- domains:
- - www.google.interia.pl
-
- I-play:
- parameters:
- - q
- domains:
- - start.iplay.com
-
- IXquick:
- parameters:
- - query
- domains:
- - ixquick.com
- - www.eu.ixquick.com
- - ixquick.de
- - www.ixquick.de
- - us.ixquick.com
- - s1.us.ixquick.com
- - s2.us.ixquick.com
- - s3.us.ixquick.com
- - s4.us.ixquick.com
- - s5.us.ixquick.com
- - eu.ixquick.com
- - s8-eu.ixquick.com
- - s1-eu.ixquick.de
-
- Jyxo:
- parameters:
- - q
- domains:
- - jyxo.1188.cz
-
- Jungle Spider:
- parameters:
- - q
- domains:
- - www.jungle-spider.de
-
- Jungle Key:
- parameters:
- - query
- domains:
- - junglekey.com
- - junglekey.fr
-
- Kataweb:
- parameters:
- - q
- domains:
- - www.kataweb.it
-
- Kvasir:
- parameters:
- - q
- domains:
- - www.kvasir.no
-
- Latne:
- parameters:
- - q
- domains:
- - www.latne.lv
-
- La Toile Du Quebec Via Google:
- parameters:
- - q
- domains:
- - www.toile.com
- - web.toile.com
-
- Looksmart:
- parameters:
- - key
- domains:
- - www.looksmart.com
-
- Lo.st:
- parameters:
- - x_query
- domains:
- - lo.st
-
- Lycos:
- parameters:
- - query
- domains:
- - search.lycos.com
- - www.lycos.com
- - lycos.com
-
- maailm:
- parameters:
- - tekst
- domains:
- - www.maailm.com
-
- Mail.ru:
- parameters:
- - q
- domains:
- - go.mail.ru
-
- Mamma:
- parameters:
- - query
- domains:
- - www.mamma.com
- - mamma75.mamma.com
-
- Marktplaats:
- parameters:
- - query
- domains:
- - www.marktplaats.nl
-
- Maxwebsearch:
- parameters:
- - query
- domains:
- - maxwebsearch.com
-
- Meta:
- parameters:
- - q
- domains:
- - meta.ua
-
- MetaCrawler.de:
- parameters:
- - qry
- domains:
- - s1.metacrawler.de
- - s2.metacrawler.de
- - s3.metacrawler.de
-
- Metager:
- parameters:
- - eingabe
- domains:
- - meta.rrzn.uni-hannover.de
- - www.metager.de
-
- Metager2:
- parameters:
- - q
- domains:
- - metager2.de
-
- Meinestadt:
- parameters:
- - words
- domains:
- - www.meinestadt.de
-
- Mister Wong:
- parameters:
- - Keywords
- domains:
- - www.mister-wong.com
- - www.mister-wong.de
-
- Monstercrawler:
- parameters:
- - qry
- domains:
- - www.monstercrawler.com
-
- Mozbot:
- parameters:
- - q
- domains:
- - www.mozbot.fr
- - www.mozbot.co.uk
- - www.mozbot.com
-
- El Mundo:
- parameters:
- - q
- domains:
- - ariadna.elmundo.es
-
- MySearch:
- parameters:
- - searchfor
- - searchFor
- domains:
- - www.mysearch.com
- - ms114.mysearch.com
- - ms146.mysearch.com
- - kf.mysearch.myway.com
- - ki.mysearch.myway.com
- - search.myway.com
- - search.mywebsearch.com
-
- Najdi:
- parameters:
- - q
- domains:
- - www.najdi.si
-
- Nate:
- parameters:
- - q
- domains:
- - search.nate.com
-
- Naver:
- parameters:
- - query
- domains:
- - search.naver.com
-
- Naver Images:
- parameters:
- - query
- domains:
- - image.search.naver.com
- - imagesearch.naver.com
-
- Needtofind:
- parameters:
- - searchfor
- domains:
- - ko.search.need2find.com
-
- Neti:
- parameters:
- - query
- domains:
- - www.neti.ee
-
- Nifty:
- parameters:
- - q
- domains:
- - search.nifty.com
-
- Nigma:
- parameters:
- - s
- domains:
- - nigma.ru
-
- Onet:
- parameters:
- - qt
- domains:
- - szukaj.onet.pl
-
- Online.no:
- parameters:
- - q
- domains:
- - online.no
-
- Opplysningen 1881:
- parameters:
- - Query
- domains:
- - www.1881.no
-
- Orange:
- parameters:
- - q
- domains:
- - busca.orange.es
- - search.orange.co.uk
-
- Paperball:
- parameters:
- - q
- domains:
- - www.paperball.de
-
- PeoplePC:
- parameters:
- - q
- domains:
- - search.peoplepc.com
-
- Picsearch:
- parameters:
- - q
- domains:
- - www.picsearch.com
-
- Plazoo:
- parameters:
- - q
- domains:
- - www.plazoo.com
-
- Poisk.ru:
- parameters:
- - q
- domains:
- - www.plazoo.com
-
- PriceRunner:
- parameters:
- - q
- domains:
- - www.pricerunner.co.uk
-
- qip:
- parameters:
- - query
- domains:
- - search.qip.ru
-
- Qualigo:
- parameters:
- - q
- domains:
- - www.qualigo.at
- - www.qualigo.ch
- - www.qualigo.de
- - www.qualigo.nl
-
- Rakuten:
- parameters:
- - qt
- domains:
- - websearch.rakuten.co.jp
-
- Rambler:
- parameters:
- - query
- - words
- domains:
- - nova.rambler.ru
-
- RPMFind:
- parameters:
- - query
- domains:
- - rpmfind.net
- - fr2.rpmfind.net
-
- Road Runner Search:
- parameters:
- - q
- domains:
- - search.rr.com
-
- Sapo:
- parameters:
- - q
- domains:
- - pesquisa.sapo.pt
-
- # Add Scour.com
-
- Search.com:
- parameters:
- - q
- domains:
- - www.search.com
-
- Search.ch:
- parameters:
- - q
- domains:
- - www.search.ch
-
- Searchalot:
- parameters:
- - q
- domains:
- - searchalot.com
-
- SearchCanvas:
- parameters:
- - q
- domains:
- - www.searchcanvas.com
-
- Searchy:
- parameters:
- - q
- domains:
- - www.searchy.co.uk
-
- # Add setooz.com
-
- Seznam:
- parameters:
- - q
- domains:
- - search.seznam.cz
-
- Sharelook:
- parameters:
- - keyword
- domains:
- - www.sharelook.fr
-
- Skynet:
- parameters:
- - q
- domains:
- - www.skynet.be
-
- Sogou:
- parameters:
- - query
- domains:
- - www.sougou.com
-
- Softonic:
- parameters:
- - q
- domains:
- - search.softonic.com
-
- soso.com:
- parameters:
- - w
- domains:
- - www.soso.com
-
- Snapdo:
- parameters:
- - q
- domains:
- - search.snapdo.com
-
- Startpagina:
- parameters:
- - q
- domains:
- - startgoogle.startpagina.nl
-
- Startsiden:
- parameters:
- - q
- domains:
- - www.startsiden.no
-
- suche.info:
- parameters:
- - q
- domains:
- - suche.info
-
- Suchmaschine.com:
- parameters:
- - suchstr
- domains:
- - www.suchmaschine.com
-
- Suchnase:
- parameters:
- - q
- domains:
- - www.suchnase.de
-
- TalkTalk:
- parameters:
- - query
- domains:
- - www.talktalk.co.uk
-
- Technorati:
- parameters:
- - q
- domains:
- - technorati.com
-
- Teoma:
- parameters:
- - q
- domains:
- - www.teoma.com
-
- Terra:
- parameters:
- - query
- domains:
- - buscador.terra.es
- - buscador.terra.cl
- - buscador.terra.com.br
-
- Tiscali:
- parameters:
- - q
- - key
- domains:
- - search.tiscali.it
- - search-dyn.tiscali.it
- - hledani.tiscali.cz
-
- Tixuma:
- parameters:
- - sc
- domains:
- - www.tixuma.de
-
- T-Online:
- parameters:
- - q
- domains:
- - suche.t-online.de
- - brisbane.t-online.de
- - navigationshilfe.t-online.de
-
- Toolbarhome:
- parameters:
- - q
- domains:
- - www.toolbarhome.com
- - vshare.toolbarhome.com
-
- Trouvez.com:
- parameters:
- - query
- domains:
- - www.trouvez.com
-
- TrovaRapido:
- parameters:
- - q
- domains:
- - www.trovarapido.com
-
- Trusted-Search:
- parameters:
- - w
- domains:
- - www.trusted--search.com
-
- Twingly:
- parameters:
- - q
- domains:
- - www.twingly.com
-
- uol.com.br:
- parameters:
- - q
- domains:
- - busca.uol.com.br
-
- URL.ORGanizier:
- parameters:
- - q
- domains:
- - www.url.org
-
- Vinden:
- parameters:
- - q
- domains:
- - www.vinden.nl
-
- Vindex:
- parameters:
- - search_for
- domains:
- - www.vindex.nl
- - search.vindex.nl
-
- Virgilio:
- parameters:
- - qs
- domains:
- - ricerca.virgilio.it
- - ricercaimmagini.virgilio.it
- - ricercavideo.virgilio.it
- - ricercanews.virgilio.it
- - mobile.virgilio.it
-
- Voila:
- parameters:
- - rdata
- - kw
- domains:
- - search.ke.voila.fr
- - www.lemoteur.fr
-
- Volny:
- parameters:
- - search
- domains:
- - web.volny.cz
-
- Walhello :
- parameters:
- - key
- domains:
- - www.walhello.info
- - www.walhello.com
- - www.walhello.de
- - www.walhello.nl
-
- Web.de:
- parameters:
- - su
- domains:
- - suche.web.de
-
- Web.nl:
- parameters:
- - zoekwoord
- domains:
- - www.web.nl
-
- Weborama:
- parameters:
- - QUERY
- domains:
- - www.weborama.com
-
- WebSearch:
- parameters:
- - qkw
- - q
- domains:
- - www.websearch.com
-
- Winamp:
- parameters:
- - q
- domains:
- - search.winamp.com
-
- Witch:
- parameters:
- - search
- domains:
- - www.witch.de
-
- Wirtualna Polska:
- parameters:
- - szukaj
- domains:
- - szukaj.wp.pl
-
- WWW:
- parameters:
- - query
- domains:
- - search.www.ee
-
- X-recherche:
- parameters:
- - MOTS
- domains:
- - www.x-recherche.com
-
- Yahoo!:
- parameters:
- - p
- - q
- domains:
- - search.yahoo.com
- - yahoo.com
- - ar.search.yahoo.com
- - ar.yahoo.com
- - au.search.yahoo.com
- - au.yahoo.com
- - br.search.yahoo.com
- - br.yahoo.com
- - cade.searchde.yahoo.com
- - cade.yahoo.com
- - chinese.searchinese.yahoo.com
- - chinese.yahoo.com
- - cn.search.yahoo.com
- - cn.yahoo.com
- - de.search.yahoo.com
- - de.yahoo.com
- - dk.search.yahoo.com
- - dk.yahoo.com
- - es.search.yahoo.com
- - es.yahoo.com
- - espanol.searchpanol.yahoo.com
- - espanol.searchpanol.yahoo.com
- - espanol.yahoo.com
- - espanol.yahoo.com
- - fr.search.yahoo.com
- - fr.yahoo.com
- - ie.search.yahoo.com
- - ie.yahoo.com
- - it.search.yahoo.com
- - it.yahoo.com
- - kr.search.yahoo.com
- - kr.yahoo.com
- - mx.search.yahoo.com
- - mx.yahoo.com
- - no.search.yahoo.com
- - no.yahoo.com
- - nz.search.yahoo.com
- - nz.yahoo.com
- - one.cn.yahoo.com
- - one.searchn.yahoo.com
- - qc.search.yahoo.com
- - qc.search.yahoo.com
- - qc.search.yahoo.com
- - qc.yahoo.com
- - qc.yahoo.com
- - se.search.yahoo.com
- - se.search.yahoo.com
- - se.yahoo.com
- - search.searcharch.yahoo.com
- - search.yahoo.com
- - uk.search.yahoo.com
- - uk.yahoo.com
- - www.yahoo.co.jp
- - search.yahoo.co.jp
- # powered by Yahoo
- - www.cercato.it
- - search.offerbox.com
- - ys.mirostart.com
-
- Yahoo! Images:
- parameters:
- - p
- - q
- domains:
- - image.yahoo.cn
- - images.search.yahoo.com
-
- Yam:
- parameters:
- - k
- domains:
- - search.yam.com
-
- Yandex:
- parameters:
- - text
- domains:
- - yandex.ru
- - yandex.ua
- - yandex.com
- - yandex.by
- - www.yandex.ru
- - www.yandex.ua
- - www.yandex.com
- - www.yandex.by
-
- Yandex Images:
- parameters:
- - text
- domains:
- - images.yandex.ru
- - images.yandex.ua
- - images.yandex.com
-
- Yasni:
- parameters:
- - query
- domains:
- - www.yasni.de
- - www.yasni.com
- - www.yasni.co.uk
- - www.yasni.ch
- - www.yasni.at
-
- Yatedo:
- parameters:
- - q
- domains:
- - www.yatedo.com
- - www.yatedo.fr
-
- # Add Yellowmap:
-
- Yippy:
- parameters:
- - q
- - query
- domains:
- - search.yippy.com
-
- YouGoo:
- parameters:
- - q
- domains:
- - www.yougoo.fr
-
- Zapmeta:
- parameters:
- - q
- - query
- domains:
- - www.zapmeta.com
- - www.zapmeta.nl
- - www.zapmeta.de
- - uk.zapmeta.com
-
- Zoek:
- parameters:
- - q
- domains:
- - www3.zoek.nl
-
- Zhongsou:
- parameters:
- - w
- domains:
- - p.zhongsou.com
-
- Zoeken:
- parameters:
- - q
- domains:
- - www.zoeken.nl
-
- Zoohoo:
- parameters:
- - q
- domains:
- - zoohoo.cz
diff --git a/vendor/snowplow/referer-parser/java-scala/src/main/scala/com/snowplowanalytics/refererparser/scala/Parser.scala b/vendor/snowplow/referer-parser/java-scala/src/main/scala/com/snowplowanalytics/refererparser/scala/Parser.scala
deleted file mode 100644
index 7cafa5e55..000000000
--- a/vendor/snowplow/referer-parser/java-scala/src/main/scala/com/snowplowanalytics/refererparser/scala/Parser.scala
+++ /dev/null
@@ -1,161 +0,0 @@
-/**
- * Copyright 2012-2013 Snowplow Analytics Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.snowplowanalytics.refererparser.scala
-
-// Java
-import java.net.{URI, URISyntaxException}
-
-// RefererParser Java impl
-import com.snowplowanalytics.refererparser.{Parser => JParser}
-import com.snowplowanalytics.refererparser.{Medium => JMedium}
-
-// Scala
-import scala.collection.JavaConversions._
-
-/**
- * Enumeration for supported mediums.
- *
- * Replacement for Java version's Enum.
- */
-object Medium extends Enumeration {
- type Medium = Value
-
- val Unknown = Value("unknown")
- val Search = Value("search")
- val Internal = Value("internal")
- val Social = Value("social")
- val Email = Value("email")
-
- /**
- * Converts from our Java Medium Enum
- * to our Scala Enumeration values above.
- */
- def fromJava(medium: JMedium) =
- Medium.withName(medium.toString())
-}
-
-/**
- * Immutable case class to hold a referer.
- *
- * Replacement for Java version's POJO.
- */
-case class Referer(
- medium: Medium.Medium,
- source: Option[String],
- term: Option[String]
-)
-
-/**
- * Parser object - contains one-time initialization
- * of the YAML database of referers, and parse()
- * methods to generate a Referer object from a
- * referer URL.
- *
- * In Java this had to be instantiated as a class.
- */
-object Parser {
-
- type MaybeReferer = Option[Referer]
-
- private lazy val jp = new JParser()
-
- private def getHostSafely(uri: URI): String = {
- if (uri == null) {
- null
- } else {
- uri.getHost();
- }
- }
-
- /**
- * Parses a `refererUri` UR and a `pageUri`
- * URI to return either Some Referer, or None.
- */
- def parse(refererUri: URI, pageUri: URI): MaybeReferer =
- parse(refererUri, getHostSafely(pageUri), Nil);
-
- /**
- * Parses a `refererUri` UR and a `pageUri`
- * URI to return either Some Referer, or None.
- */
- def parse(refererUri: URI, pageUri: URI, internalDomains: List[String]): MaybeReferer =
- parse(refererUri, getHostSafely(pageUri), internalDomains);
-
- /**
- * Parses a `refererUri` String and a `pageUri`
- * URI to return either Some Referer, or None.
- */
- def parse(refererUri: String, pageUri: URI): MaybeReferer =
- parse(refererUri, getHostSafely(pageUri), Nil);
-
- /**
- * Parses a `refererUri` String and a `pageUri`
- * URI to return either Some Referer, or None.
- */
- def parse(refererUri: String, pageUri: URI, internalDomains: List[String]): MaybeReferer =
- parse(refererUri, getHostSafely(pageUri), internalDomains);
-
- /**
- * Parses a `refererUri` String and a `pageUri`
- * URI to return either some Referer, or None.
- */
- def parse(refererUri: String, pageHost: String): MaybeReferer = {
- parse(refererUri, pageHost, Nil)
- }
-
- /**
- * Parses a `refererUri` String and a `pageUri`
- * URI to return either some Referer, or None.
- */
- def parse(refererUri: String, pageHost: String, internalDomains: List[String]): MaybeReferer = {
-
- if (refererUri == null || refererUri == "") {
- None
- } else {
- try {
- parse(new URI(refererUri), pageHost, internalDomains)
- } catch {
- case use: URISyntaxException => None
- }
- }
- }
-
- /**
- * Parses a `refererUri` URI to return
- * either Some Referer, or None.
- */
- def parse(refererUri: URI, pageHost: String): MaybeReferer = {
- parse(refererUri, pageHost, Nil)
-}
-
-
- /**
- * Parses a `refererUri` URI to return
- * either Some Referer, or None.
- */
- def parse(refererUri: URI, pageHost: String, internalDomains: List[String]): MaybeReferer = {
-
- try {
- val jrefr = Option(jp.parse(refererUri, pageHost, internalDomains))
- jrefr.map(jr =>
- Referer(Medium.fromJava(jr.medium), Option(jr.source), Option(jr.term))
- )
- } catch {
- case use: URISyntaxException => None
- }
- }
-}
diff --git a/vendor/snowplow/referer-parser/java-scala/src/test/java/com/snowplowanalytics/refererparser/ParserTest.java b/vendor/snowplow/referer-parser/java-scala/src/test/java/com/snowplowanalytics/refererparser/ParserTest.java
deleted file mode 100644
index 732e54067..000000000
--- a/vendor/snowplow/referer-parser/java-scala/src/test/java/com/snowplowanalytics/refererparser/ParserTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package com.snowplowanalytics.refererparser;
-
-import static org.junit.Assert.assertEquals;
-
-import java.io.IOException;
-import java.net.URL;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URISyntaxException;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.json.JSONException;
-import org.json.JSONTokener;
-import org.json.JSONObject;
-import org.json.JSONArray;
-
-public class ParserTest {
-
- private Parser parser;
-
- @Before
- public void createParser() throws CorruptYamlException, IOException {
- parser = new Parser();
- }
-
- @Test
- public void refererTests() throws MalformedURLException, JSONException {
- JSONTokener tok = new JSONTokener( ParserTest.class.getResourceAsStream("/referer-tests.json"));
- JSONArray root = new JSONArray(tok);
-
- for (int i = 0; i < root.length(); i++) {
- JSONObject entry = (JSONObject) root.get(i);
-
- Referer actual = parser.parse(new URL(entry.getString("uri")), "www.snowplowanalytics.com");
- assertEquals(entry.getString("spec") + " medium", entry.getString("medium"), actual.medium.toString());
- assertEquals(entry.getString("spec") + " source", entry.get("source"), actual.source);
- assertEquals(entry.getString("spec") + " term", entry.get("term"), actual.term);
- }
- }
-
- @Test
- public void basicTests() throws URISyntaxException, MalformedURLException, JSONException{
- //Test every signature.
- String u = "http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari";
- String ref = "www.example.com";
- String expected = "{medium: search, source: Google, term: gateway oracle cards denise linn}";
-
- //URI, URI
- Referer result = parser.parse(new URI(u), new URI("http://"+ref));
- assertEquals("URI, URI", expected, result.toString());
-
- //String, URI
- result = parser.parse(u, new URI("http://"+ref));
- assertEquals("String, URI", expected, result.toString());
-
- //String, String
- result = parser.parse(u, ref);
- assertEquals("String, String", expected, result.toString());
-
- //URI, String
- result = parser.parse(new URI(u), ref);
- assertEquals("URI, String", expected, result.toString());
-
- //URL, String
- result = parser.parse(new URL(u), ref);
- assertEquals("URL, String", expected, result.toString());
- }
-}
diff --git a/vendor/snowplow/referer-parser/java-scala/src/test/resources/referer-tests.json b/vendor/snowplow/referer-parser/java-scala/src/test/resources/referer-tests.json
deleted file mode 100644
index 4233d966b..000000000
--- a/vendor/snowplow/referer-parser/java-scala/src/test/resources/referer-tests.json
+++ /dev/null
@@ -1,250 +0,0 @@
-[
- {
- "spec": "Google Images search",
- "uri": "http://www.google.fr/imgres?q=Ogham+the+celtic+oracle&hl=fr&safe=off&client=firefox-a&hs=ZDu&sa=X&rls=org.mozilla:fr-FR:unofficial&tbm=isch&prmd=imvnsa&tbnid=HUVaj-o88ZRdYM:&imgrefurl=http://www.psychicbazaar.com/oracles/101-ogham-the-celtic-oracle-set.html&docid=DY5_pPFMliYUQM&imgurl=http://mdm.pbzstatic.com/oracles/ogham-the-celtic-oracle-set/montage.png&w=734&h=250&ei=GPdWUIePCOqK0AWp3oCQBA&zoom=1&iact=hc&vpx=129&vpy=276&dur=827&hovh=131&hovw=385&tx=204&ty=71&sig=104115776612919232039&page=1&tbnh=69&tbnw=202&start=0&ndsp=26&ved=1t:429,r:13,s:0,i:114&biw=1272&bih=826",
- "medium": "search",
- "source": "Google Images",
- "term": "Ogham the celtic oracle",
- "known": true
- },
- {
- "spec": "Yahoo! Images search",
- "uri": "http://it.images.search.yahoo.com/images/view;_ylt=A0PDodgQmGBQpn4AWQgdDQx.;_ylu=X3oDMTBlMTQ4cGxyBHNlYwNzcgRzbGsDaW1n?back=http%3A%2F%2Fit.images.search.yahoo.com%2Fsearch%2Fimages%3Fp%3DEarth%2BMagic%2BOracle%2BCards%26fr%3Dmcafee%26fr2%3Dpiv-web%26tab%3Dorganic%26ri%3D5&w=1064&h=1551&imgurl=mdm.pbzstatic.com%2Foracles%2Fearth-magic-oracle-cards%2Fcard-1.png&rurl=http%3A%2F%2Fwww.psychicbazaar.com%2Foracles%2F143-earth-magic-oracle-cards.html&size=2.8+KB&name=Earth+Magic+Oracle+Cards+-+Psychic+Bazaar&p=Earth+Magic+Oracle+Cards&oid=f0a5ad5c4211efe1c07515f56cf5a78e&fr2=piv-web&fr=mcafee&tt=Earth%2BMagic%2BOracle%2BCards%2B-%2BPsychic%2BBazaar&b=0&ni=90&no=5&ts=&tab=organic&sigr=126n355ib&sigb=13hbudmkc&sigi=11ta8f0gd&.crumb=IZBOU1c0UHU",
- "medium": "search",
- "source": "Yahoo! Images",
- "term": "Earth Magic Oracle Cards",
- "known": true
- },
- {
- "spec": "Powered by Google",
- "uri": "http://isearch.avg.com/pages/images.aspx?q=tarot+card+change&sap=dsp&lang=en&mid=209215200c4147d1a9d6d1565005540b-b0d4f81a8999f5981f04537c5ec8468fd5234593&cid=%7B50F9298B-C111-4C7E-9740-363BF0015949%7D&v=12.1.0.21&ds=AVG&d=7%2F23%2F2012+10%3A31%3A08+PM&pr=fr&sba=06oENya4ZG1YS6vOLJwpLiFdjG91ICt2YE59W2p5ENc2c4w8KvJb5xbvjkj3ceMjnyTSpZq-e6pj7GQUylIQtuK4psJU60wZuI-8PbjX-OqtdX3eIcxbMoxg3qnIasP0ww2fuID1B-p2qJln8vBHxWztkpxeixjZPSppHnrb9fEcx62a9DOR0pZ-V-Kjhd-85bIL0QG5qi1OuA4M1eOP4i_NzJQVRXPQDmXb-CpIcruc2h5FE92Tc8QMUtNiTEWBbX-QiCoXlgbHLpJo5Jlq-zcOisOHNWU2RSHYJnK7IUe_SH6iQ.%2CYT0zO2s9MTA7aD1mNjZmZDBjMjVmZDAxMGU4&snd=hdr&tc=test1",
- "medium": "search",
- "source": "Google",
- "term": "tarot card change",
- "known": true
- },
- {
- "spec": "Google search #1",
- "uri": "http://www.google.com/search",
- "medium": "search",
- "source": "Google",
- "term": null,
- "known": true
- },
- {
- "spec": "Google search #2",
- "uri": "http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari",
- "medium": "search",
- "source": "Google",
- "term": "gateway oracle cards denise linn",
- "known": true
- },
- {
- "spec": "Yahoo! search",
- "uri": "http://es.search.yahoo.com/search;_ylt=A7x9QbwbZXxQ9EMAPCKT.Qt.?p=BIEDERMEIER+FORTUNE+TELLING+CARDS&ei=utf-8&type=685749&fr=chr-greentree_gc&xargs=0&pstart=1&b=11",
- "medium": "search",
- "source": "Yahoo!",
- "term": "BIEDERMEIER FORTUNE TELLING CARDS",
- "known": true
- },
- {
- "spec": "PriceRunner search",
- "uri": "http://www.pricerunner.co.uk/search?displayNoHitsMessage=1&q=wild+wisdom+of+the+faery+oracle",
- "medium": "search",
- "source": "PriceRunner",
- "term": "wild wisdom of the faery oracle",
- "known": true
- },
- {
- "spec": "Bing Images search",
- "uri": "http://www.bing.com/images/search?q=psychic+oracle+cards&view=detail&id=D268EDDEA8D3BF20AF887E62AF41E8518FE96F08",
- "medium": "search",
- "source": "Bing Images",
- "term": "psychic oracle cards",
- "known": true
- },
- {
- "spec": "IXquick search",
- "uri": "https://s3-us3.ixquick.com/do/search",
- "medium": "search",
- "source": "IXquick",
- "term": null,
- "known": true
- },
- {
- "spec": "AOL search",
- "uri": "http://aolsearch.aol.co.uk/aol/search?s_chn=hp&enabled_terms=&s_it=aoluk-homePage50&q=pendulums",
- "medium": "search",
- "source": "AOL",
- "term": "pendulums",
- "known": true
- },
- {
- "spec": "AOL search.com",
- "uri": "http://www.aolsearch.com/search?s_pt=hp&s_gl=NL&query=voorbeeld+cv+competenties&invocationType=tb50hpcnnbie7-nl-nl",
- "medium": "search",
- "source": "AOL",
- "term": "voorbeeld cv competenties",
- "known": true
- },
- {
- "spec": "Ask search",
- "uri": "http://uk.search-results.com/web?qsrc=1&o=1921&l=dis&q=pendulums&dm=ctry&atb=sysid%3D406%3Aappid%3D113%3Auid%3D8f40f651e7b608b5%3Auc%3D1346336505%3Aqu%3Dpendulums%3Asrc%3Dcrt%3Ao%3D1921&locale=en_GB",
- "medium": "search",
- "source": "Ask",
- "term": "pendulums",
- "known": true
- },
- {
- "spec": "Mail.ru search",
- "uri": "http://go.mail.ru/search?q=Gothic%20Tarot%20Cards&where=any&num=10&rch=e&sf=20",
- "medium": "search",
- "source": "Mail.ru",
- "term": "Gothic Tarot Cards",
- "known": true
- },
- {
- "spec": "Yandex search",
- "uri": "http://images.yandex.ru/yandsearch?text=Blue%20Angel%20Oracle%20Blue%20Angel%20Oracle&noreask=1&pos=16&rpt=simage&lr=45&img_url=http%3A%2F%2Fmdm.pbzstatic.com%2Foracles%2Fblue-angel-oracle%2Fbox-small.png",
- "medium": "search",
- "source": "Yandex Images",
- "term": "Blue Angel Oracle Blue Angel Oracle",
- "known": true
- },
- {
- "spec": "Ask toolbar search",
- "uri": "http://search.tb.ask.com/search/GGmain.jhtml?cb=AYY&pg=GGmain&p2=%5EAYY%5Exdm071%5EYYA%5Eid&n=77fdaa55&qid=c2678d9147654034bb8b16daa7bfb48c&ss=sub&st=hp&ptb=F9FC6C22-EAE6-4D1E-8126-A70119B6E02F&si=flvrunner&tpr=hst&searchfor=CARA+MEMASAK+CUMI+CUMI&ots=1219016089614",
- "medium": "search",
- "source": "Ask Toolbar",
- "term": "CARA MEMASAK CUMI CUMI",
- "known": true
- },
- {
- "spec": "Ask toolbar search #2",
- "uri": "http://search.tb.ask.com/search/GGmain.jhtml?&st=hp&p2=%5EZU%5Exdm458%5EYYA%5Eus&n=77fda1bd&ptb=F0B68CA5-4791-4376-BFCC-5F0100329FB6&si=CMKg9-nX07oCFSjZQgodcikACQ&tpr=hpsbsug&searchfor=test",
- "medium": "search",
- "source": "Ask Toolbar",
- "term": "test",
- "known": true
- },
- {
- "spec": "Voila search",
- "uri": "http://search.ke.voila.fr/?module=voila&bhv=web_fr&kw=test",
- "medium": "search",
- "source": "Voila",
- "term": "test",
- "known": true
- },
- {
- "spec": "Dale search",
- "uri": "http://www.dalesearch.com/?q=+lego.nl+%2Fclub&s=web&as=0&rlz=0&babsrc=HP_ss",
- "medium": "search",
- "source": "Dalesearch",
- "term": " lego.nl /club",
- "known": true
- },
- {
- "spec": "Twitter redirect",
- "uri": "http://t.co/chrgFZDb",
- "medium": "social",
- "source": "Twitter",
- "term": null,
- "known": true
- },
- {
- "spec": "Facebook social",
- "uri": "http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.psychicbazaar.com&h=yAQHZtXxS&s=1",
- "medium": "social",
- "source": "Facebook",
- "term": null,
- "known": true
- },
- {
- "spec": "Facebook mobile",
- "uri": "http://m.facebook.com/l.php?u=http%3A%2F%2Fwww.psychicbazaar.com%2Fblog%2F2012%2F09%2Fpsychic-bazaar-reviews-tarot-foundations-31-days-to-read-tarot-with-confidence%2F&h=kAQGXKbf9&s=1",
- "medium": "social",
- "source": "Facebook",
- "term": null,
- "known": true
- },
- {
- "spec": "Odnoklassniki",
- "uri": "http://www.odnoklassniki.ru/dk?cmd=logExternal&st._aid=Conversations_Openlink&st.name=externalLinkRedirect&st.link=http%3A%2F%2Fwww.psychicbazaar.com%2Foracles%2F187-blue-angel-oracle.html",
- "medium": "social",
- "source": "Odnoklassniki",
- "term": null,
- "known": true
- },
- {
- "spec": "Tumblr social #1",
- "uri": "http://www.tumblr.com/dashboard",
- "medium": "social",
- "source": "Tumblr",
- "term": null,
- "known": true
- },
- {
- "spec": "Tumblr w subdomain",
- "uri": "http://psychicbazaar.tumblr.com/",
- "medium": "social",
- "source": "Tumblr",
- "term": null,
- "known": true
- },
- {
- "spec": "Yahoo! Mail",
- "uri": "http://36ohk6dgmcd1n-c.c.yom.mail.yahoo.net/om/api/1.0/openmail.app.invoke/36ohk6dgmcd1n/11/1.0.35/us/en-US/view.html/0",
- "medium": "email",
- "source": "Yahoo! Mail",
- "term": null,
- "known": true
- },
- {
- "spec": "Outlook.com mail",
- "uri": "http://co106w.col106.mail.live.com/default.aspx?rru=inbox",
- "medium": "email",
- "source": "Outlook.com",
- "term": null,
- "known": true
- },
- {
- "spec": "Orange Webmail",
- "uri": "http://webmail1m.orange.fr/webmail/fr_FR/read.html?FOLDER=SF_INBOX&IDMSG=8594&check=&SORTBY=31",
- "medium": "email",
- "source": "Orange Webmail",
- "term": null,
- "known": true
- },
- {
- "spec": "Internal HTTP",
- "uri": "http://www.snowplowanalytics.com/about/team",
- "medium": "internal",
- "source": null,
- "term": null,
- "known": false
- },
- {
- "spec": "Internal HTTPS",
- "uri": "https://www.snowplowanalytics.com/account/profile",
- "medium": "internal",
- "source": null,
- "term": null,
- "known": false
- },
- {
- "spec": "Internal subdomain HTTP",
- "uri": "http://www.subdomain1.snowplowanalytics.com/account/profile",
- "medium": "internal",
- "source": null,
- "term": null,
- "known": false
- },
- {
- "spec": "Internal subdomain HTTPS",
- "uri": "http://www.subdomain2.snowplowanalytics.com/account/profile",
- "medium": "internal",
- "source": null,
- "term": null,
- "known": false
- }
-]
diff --git a/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/CorruptedRefererQuerystringTest.scala b/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/CorruptedRefererQuerystringTest.scala
deleted file mode 100644
index d94b9b549..000000000
--- a/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/CorruptedRefererQuerystringTest.scala
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Copyright 2012-2013 Snowplow Analytics Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.snowplowanalytics.refererparser.scala
-
-// Java
-import java.net.URI
-
-// Specs2
-import org.specs2.mutable.Specification
-
-class CorruptedRefererQuerystringTest extends Specification {
-
- // Our data
- val refererUri = "http://www.google.com/search?q=Psychic+Bazaar&sugexp=chrome,mod=3&sourceid=chrome&ie=UTF-8"
- val expected = Some(Referer(Medium.Search, Some("Google"), Some("Psychic Bazaar")))
-
- "A corrupted referer querystring" should {
- "identify the search engine but not the search term" in {
- Parser.parse(refererUri, "") must_== expected
- }
- }
-}
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/CorruptedRefererUriTest.scala b/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/CorruptedRefererUriTest.scala
deleted file mode 100644
index ee38cebf1..000000000
--- a/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/CorruptedRefererUriTest.scala
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Copyright 2012-2013 Snowplow Analytics Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.snowplowanalytics.refererparser.scala
-
-// Java
-import java.net.URI
-
-// Specs2
-import org.specs2.mutable.Specification
-
-class CorruptedRefererUriTest extends Specification {
-
- // Our data
- val refererUri = "http://bigcommerce%20wordpress%20plugin/"
- val pageUri = null.asInstanceOf[String]
-
- "A corrupted referer URI" should {
- "return None, not throw an Exception" in {
- Parser.parse(refererUri,pageUri) must beNone
- }
- }
-}
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/JsonParseTest.scala b/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/JsonParseTest.scala
deleted file mode 100644
index a1dfad09a..000000000
--- a/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/JsonParseTest.scala
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * Copyright 2014 Snowplow Analytics Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.snowplowanalytics.refererparser.scala
-
-// Scala
-import scala.io.Source._
-
-// json4s
-import org.json4s._
-import org.json4s.jackson.JsonMethods._
-
-// Specs2
-import org.specs2.mutable.Specification
-
-class JsonParseTest extends Specification {
-
- val testString = fromFile("src/test/resources/referer-tests.json").getLines.mkString
-
- // Convert the JSON to a List of JObjects
- val testJson = (parse(testString)) match {
- case JArray(lst) => lst
- case _ => throw new Exception("referer-tests.json is not an array - this should never happen")
- }
-
- val pageHost = "www.snowplowanalytics.com"
-
- val internalDomains = List("www.subdomain1.snowplowanalytics.com", "www.subdomain2.snowplowanalytics.com")
-
- def getString(node: JValue, name: String): String =
- (node \ name) match {
- case JString(s) => s
- case _ => throw new Exception("The value of field '%s' in referer-tests.json is not a string - this should never happen".format(name))
- }
-
- "parse" should {
-
- for (test <- testJson) {
-
- "extract the expected details from referer with spec '%s'".format(getString(test, "spec")) in {
-
- Parser.parse(getString(test, "uri"), pageHost, internalDomains) must_==
- Some(Referer(
- Medium.withName(getString(test, "medium")),
- (test \ "source") match {
- case JString(s) => Some(s)
- case _ => None
- },
- (test \ "term") match {
- case JString(s) => Some(s)
- case _ => None
- }))
- }
- }
- }
-
-}
diff --git a/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/NoPageUriTest.scala b/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/NoPageUriTest.scala
deleted file mode 100644
index 92bc29a40..000000000
--- a/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/NoPageUriTest.scala
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * Copyright 2012-2013 Snowplow Analytics Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.snowplowanalytics.refererparser.scala
-
-// Java
-import java.net.URI
-
-// Specs2
-import org.specs2.mutable.Specification
-
-class NoPageUriTest extends Specification {
-
- // Our data
- val refererUri = "http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari"
- val expected = Some(Referer(Medium.Search, Some("Google"), Some("gateway oracle cards denise linn")))
-
- "An empty page URI" should {
- "not interfere with the referer parsing" in {
- Parser.parse(refererUri, "") must_== expected
- }
- }
-
- "A null (String) page URI" should {
- "not interfere with the referer parsing" in {
- Parser.parse(refererUri, null.asInstanceOf[String]) must_== expected
- }
- }
-
- "A null (URI) page URI" should {
- "not interfere with the referer parsing" in {
- Parser.parse(refererUri, null.asInstanceOf[URI]) must_== expected
- }
- }
-}
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/NoRefererUriTest.scala b/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/NoRefererUriTest.scala
deleted file mode 100644
index 847b3dae3..000000000
--- a/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/NoRefererUriTest.scala
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Copyright 2012-2013 Snowplow Analytics Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.snowplowanalytics.refererparser.scala
-
-// Java
-import java.net.URI
-
-// Specs2
-import org.specs2.mutable.Specification
-
-class NoRefererUriTest extends Specification {
-
- // Our data
- val pageHost = "www.psychicbazaar.com"
-
- "An empty referer URI" should {
- "return no referal" in {
- Parser.parse("", pageHost) must beNone
- }
- }
-
- "A null [String] referer URI" should {
- "return no referal" in {
- Parser.parse(null.asInstanceOf[String], pageHost) must beNone
- }
- }
-
- "A null [URI] referer URI" should {
- "return no referal" in {
- Parser.parse(null.asInstanceOf[URI], pageHost) must beNone
- }
- }
-}
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/ParseArgTypesTest.scala b/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/ParseArgTypesTest.scala
deleted file mode 100644
index 70dc585b6..000000000
--- a/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/ParseArgTypesTest.scala
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * Copyright 2012-2013 Snowplow Analytics Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.snowplowanalytics.refererparser.scala
-
-// Java
-import java.net.URI
-
-// Specs2
-import org.specs2.mutable.Specification
-
-class ParseArgTypesTest extends Specification {
-
- // Aliases
- val refererUri = "http://www.psychicbazaar.com/catalog/pendula"
- val refererURI = new URI(refererUri)
- val pageURI = new URI("http://www.psychicbazaar.com/catalog/pendula/lo-scarabeo-silver-cone-pendulum")
- val pageHost = pageURI.getHost
-
- val expected = Some(Referer(Medium.Internal, None, None))
-
- "parse " should {
- "work the same regardless of which argument types are used to call it" in {
- Parser.parse(refererUri, pageHost) must_== expected
- Parser.parse(refererUri, pageURI) must_== expected
- Parser.parse(refererURI, pageHost) must_== expected
- Parser.parse(refererURI, pageURI) must_== expected
- }
- }
-}
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/ParseFuzzTest.scala b/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/ParseFuzzTest.scala
deleted file mode 100644
index 89bba9583..000000000
--- a/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/ParseFuzzTest.scala
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * Copyright 2012-2013 Snowplow Analytics Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.snowplowanalytics.refererparser.scala
-
-// Java
-import java.net.URI
-
-// Specs2 & ScalaCheck
-import org.specs2.{Specification, ScalaCheck}
-import org.specs2.matcher.DataTables
-import org.scalacheck._
-import org.scalacheck.Arbitrary._
-
-class ParseFuzzTest extends Specification with ScalaCheck {
-
- def is =
- "The parse function should work for any pair of referer and page Strings" ! e1
-
- def e1 =
- check { (refererUri: String, pageUri: String) => Parser.parse(refererUri, pageUri) must beAnInstanceOf[Parser.MaybeReferer] }
-}
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/ParseTest.scala b/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/ParseTest.scala
deleted file mode 100644
index 40883f39a..000000000
--- a/vendor/snowplow/referer-parser/java-scala/src/test/scala/com/snowplowanalytics/refererparser/scala/ParseTest.scala
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * Copyright 2012-2013 Snowplow Analytics Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.snowplowanalytics.refererparser.scala
-
-// Java
-import java.net.URI
-
-// Specs2
-import org.specs2.Specification
-import org.specs2.matcher.DataTables
-
-class ParseTest extends Specification with DataTables { def is =
-
- "This is a specification to test the parse function" ^
- p^
- "parse should successfully extract referer details from URIs with recognised referers" ! e1^
- "parse should return unknown when the provided referer URI is not recognised" ! e2^
- "parse will (unavoidably) return some false positives as a result of its lookup algorithm" ! e3^
- end
-
- // Aliases
- val pageHost = "www.snowplowanalytics.com"
-
- // Successful extractions
- def e1 =
- "SPEC NAME" || "REFERER URI" | "REFERER MEDIUM" | "REFERER SOURCE" | "REFERER TERM" |
- "Google search #1" !! "http://www.google.com/search" ! Medium.Search ! Some("Google") ! None |
- "Google search #2" !! "http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari" ! Medium.Search ! Some("Google") ! Some("gateway oracle cards denise linn") |
- "Powered by Google" !! "http://isearch.avg.com/pages/images.aspx?q=tarot+card+change&sap=dsp&lang=en&mid=209215200c4147d1a9d6d1565005540b-b0d4f81a8999f5981f04537c5ec8468fd5234593&cid=%7B50F9298B-C111-4C7E-9740-363BF0015949%7D&v=12.1.0.21&ds=AVG&d=7%2F23%2F2012+10%3A31%3A08+PM&pr=fr&sba=06oENya4ZG1YS6vOLJwpLiFdjG91ICt2YE59W2p5ENc2c4w8KvJb5xbvjkj3ceMjnyTSpZq-e6pj7GQUylIQtuK4psJU60wZuI-8PbjX-OqtdX3eIcxbMoxg3qnIasP0ww2fuID1B-p2qJln8vBHxWztkpxeixjZPSppHnrb9fEcx62a9DOR0pZ-V-Kjhd-85bIL0QG5qi1OuA4M1eOP4i_NzJQVRXPQDmXb-CpIcruc2h5FE92Tc8QMUtNiTEWBbX-QiCoXlgbHLpJo5Jlq-zcOisOHNWU2RSHYJnK7IUe_SH6iQ.%2CYT0zO2s9MTA7aD1mNjZmZDBjMjVmZDAxMGU4&snd=hdr&tc=test1" ! Medium.Search ! Some("Google") ! Some("tarot card change") |
- "Google Images search" !! "http://www.google.fr/imgres?q=Ogham+the+celtic+oracle&hl=fr&safe=off&client=firefox-a&hs=ZDu&sa=X&rls=org.mozilla:fr-FR:unofficial&tbm=isch&prmd=imvnsa&tbnid=HUVaj-o88ZRdYM:&imgrefurl=http://www.psychicbazaar.com/oracles/101-ogham-the-celtic-oracle-set.html&docid=DY5_pPFMliYUQM&imgurl=http://mdm.pbzstatic.com/oracles/ogham-the-celtic-oracle-set/montage.png&w=734&h=250&ei=GPdWUIePCOqK0AWp3oCQBA&zoom=1&iact=hc&vpx=129&vpy=276&dur=827&hovh=131&hovw=385&tx=204&ty=71&sig=104115776612919232039&page=1&tbnh=69&tbnw=202&start=0&ndsp=26&ved=1t:429,r:13,s:0,i:114&biw=1272&bih=826" ! Medium.Search ! Some("Google Images") ! Some("Ogham the celtic oracle") |
- "Yahoo! search" !! "http://es.search.yahoo.com/search;_ylt=A7x9QbwbZXxQ9EMAPCKT.Qt.?p=BIEDERMEIER+FORTUNE+TELLING+CARDS&ei=utf-8&type=685749&fr=chr-greentree_gc&xargs=0&pstart=1&b=11" ! Medium.Search ! Some("Yahoo!") ! Some("BIEDERMEIER FORTUNE TELLING CARDS") |
- "Yahoo! Images search" !! "http://it.images.search.yahoo.com/images/view;_ylt=A0PDodgQmGBQpn4AWQgdDQx.;_ylu=X3oDMTBlMTQ4cGxyBHNlYwNzcgRzbGsDaW1n?back=http%3A%2F%2Fit.images.search.yahoo.com%2Fsearch%2Fimages%3Fp%3DEarth%2BMagic%2BOracle%2BCards%26fr%3Dmcafee%26fr2%3Dpiv-web%26tab%3Dorganic%26ri%3D5&w=1064&h=1551&imgurl=mdm.pbzstatic.com%2Foracles%2Fearth-magic-oracle-cards%2Fcard-1.png&rurl=http%3A%2F%2Fwww.psychicbazaar.com%2Foracles%2F143-earth-magic-oracle-cards.html&size=2.8+KB&name=Earth+Magic+Oracle+Cards+-+Psychic+Bazaar&p=Earth+Magic+Oracle+Cards&oid=f0a5ad5c4211efe1c07515f56cf5a78e&fr2=piv-web&fr=mcafee&tt=Earth%2BMagic%2BOracle%2BCards%2B-%2BPsychic%2BBazaar&b=0&ni=90&no=5&ts=&tab=organic&sigr=126n355ib&sigb=13hbudmkc&sigi=11ta8f0gd&.crumb=IZBOU1c0UHU" ! Medium.Search ! Some("Yahoo! Images") ! Some("Earth Magic Oracle Cards") |
- "PriceRunner search" !! "http://www.pricerunner.co.uk/search?displayNoHitsMessage=1&q=wild+wisdom+of+the+faery+oracle" ! Medium.Search ! Some("PriceRunner") ! Some("wild wisdom of the faery oracle") |
- "Bing Images search" !! "http://www.bing.com/images/search?q=psychic+oracle+cards&view=detail&id=D268EDDEA8D3BF20AF887E62AF41E8518FE96F08" ! Medium.Search ! Some("Bing Images") ! Some("psychic oracle cards") |
- "IXquick search" !! "https://s3-us3.ixquick.com/do/search" ! Medium.Search ! Some("IXquick") ! None |
- "AOL search" !! "http://aolsearch.aol.co.uk/aol/search?s_chn=hp&enabled_terms=&s_it=aoluk-homePage50&q=pendulums" ! Medium.Search ! Some("AOL") ! Some("pendulums") |
- "Ask search" !! "http://uk.search-results.com/web?qsrc=1&o=1921&l=dis&q=pendulums&dm=ctry&atb=sysid%3D406%3Aappid%3D113%3Auid%3D8f40f651e7b608b5%3Auc%3D1346336505%3Aqu%3Dpendulums%3Asrc%3Dcrt%3Ao%3D1921&locale=en_GB" ! Medium.Search ! Some("Ask") ! Some("pendulums") |
- "Mail.ru search" !! "http://go.mail.ru/search?q=Gothic%20Tarot%20Cards&where=any&num=10&rch=e&sf=20" ! Medium.Search ! Some("Mail.ru") ! Some("Gothic Tarot Cards") |
- "Yandex search" !! "http://images.yandex.ru/yandsearch?text=Blue%20Angel%20Oracle%20Blue%20Angel%20Oracle&noreask=1&pos=16&rpt=simage&lr=45&img_url=http%3A%2F%2Fmdm.pbzstatic.com%2Foracles%2Fblue-angel-oracle%2Fbox-small.png" ! Medium.Search ! Some("Yandex Images") ! Some("Blue Angel Oracle Blue Angel Oracle") |
- "Twitter redirect" !! "http://t.co/chrgFZDb" ! Medium.Social ! Some("Twitter") ! None |
- "Facebook social" !! "http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.psychicbazaar.com&h=yAQHZtXxS&s=1" ! Medium.Social ! Some("Facebook") ! None |
- "Facebook mobile" !! "http://m.facebook.com/l.php?u=http%3A%2F%2Fwww.psychicbazaar.com%2Fblog%2F2012%2F09%2Fpsychic-bazaar-reviews-tarot-foundations-31-days-to-read-tarot-with-confidence%2F&h=kAQGXKbf9&s=1" ! Medium.Social ! Some("Facebook") ! None |
- "Odnoklassniki" !! "http://www.odnoklassniki.ru/dk?cmd=logExternal&st._aid=Conversations_Openlink&st.name=externalLinkRedirect&st.link=http%3A%2F%2Fwww.psychicbazaar.com%2Foracles%2F187-blue-angel-oracle.html" ! Medium.Social ! Some("Odnoklassniki") ! None |
- "Tumblr social #1" !! "http://www.tumblr.com/dashboard" ! Medium.Social ! Some("Tumblr") ! None |
- "Tumblr w subdomain" !! "http://psychicbazaar.tumblr.com/" ! Medium.Social ! Some("Tumblr") ! None |
- "Yahoo! Mail" !! "http://36ohk6dgmcd1n-c.c.yom.mail.yahoo.net/om/api/1.0/openmail.app.invoke/36ohk6dgmcd1n/11/1.0.35/us/en-US/view.html/0" ! Medium.Email ! Some("Yahoo! Mail") ! None |
- "Outlook.com mail" !! "http://co106w.col106.mail.live.com/default.aspx?rru=inbox" ! Medium.Email ! Some("Outlook.com") ! None |
- "Orange Webmail" !! "http://webmail1m.orange.fr/webmail/fr_FR/read.html?FOLDER=SF_INBOX&IDMSG=8594&check=&SORTBY=31" ! Medium.Email ! Some("Orange Webmail") ! None |
- "Internal HTTP" !! "http://www.snowplowanalytics.com/about/team" ! Medium.Internal ! None ! None |
- "Internal HTTPS" !! "https://www.snowplowanalytics.com/account/profile" ! Medium.Internal ! None ! None |> {
- (_, refererUri, medium, source, term) =>
- Parser.parse(refererUri, pageHost) must_== Some(Referer(medium, source, term))
- }
-
- // Unknown referer URI
- def e2 =
- "SPEC NAME" || "REFERER URI" | "REFERER SOURCE" |
- "Unknown referer #1" !! "http://www.behance.net/gallery/psychicbazaarcom/2243272" ! None |
- "Unknown referer #2" !! "http://www.wishwall.me/home" ! None |
- "Unknown referer #3" !! "http://www.spyfu.com/domain.aspx?d=3897225171967988459" ! None |
- "Unknown referer #4" !! "http://seaqueen.wordpress.com/" ! None |
- "Non-search Yahoo! site" !! "http://finance.yahoo.com" ! Some("Yahoo!") |> {
- (_, refererUri, refererSource) =>
- Parser.parse(refererUri, pageHost) must_== Some(Referer(Medium.Unknown, refererSource, None))
- }
-
- // Unavoidable false positives
- def e3 =
- "SPEC NAME" || "REFERER URI" | "REFERER MEDIUM" | "REFERER SOURCE" | "REFERER TERM" |
- "Unknown Google service" !! "http://xxx.google.com" ! Medium.Search ! Some("Google") ! None |
- "Unknown Yahoo! service" !! "http://yyy.yahoo.com" ! Medium.Search ! Some("Yahoo!") ! None |
- "Non-search Google Drive link" !! "http://www.google.com/url?q=http://www.whatismyreferer.com/&sa=D&usg=ALhdy2_qs3arPmg7E_e2aBkj6K0gHLa5rQ" ! Medium.Search ! Some("Google") ! Some("http://www.whatismyreferer.com/") |> {
- // ^ Sadly indistinguishable from a search link
- (_, refererUri, medium, source, term) =>
- Parser.parse(refererUri, pageHost) must_== Some(Referer(medium, source, term))
- }
-}
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/nodejs/.gitignore b/vendor/snowplow/referer-parser/nodejs/.gitignore
deleted file mode 100644
index fbe8382dc..000000000
--- a/vendor/snowplow/referer-parser/nodejs/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-referer-parser.sublime-project
-referer-parser.sublime-workspace
-node_modules
-node_modules/*
-npm_debug.log
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/nodejs/LICENSE-2.0.txt b/vendor/snowplow/referer-parser/nodejs/LICENSE-2.0.txt
deleted file mode 100644
index 7a4a3ea24..000000000
--- a/vendor/snowplow/referer-parser/nodejs/LICENSE-2.0.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/nodejs/Makefile b/vendor/snowplow/referer-parser/nodejs/Makefile
deleted file mode 100644
index 9ef326f73..000000000
--- a/vendor/snowplow/referer-parser/nodejs/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-
-MOCHA_OPTS= --check-leaks
-REPORTER = dot
-
-test:
- @NODE_ENV=test ./node_modules/.bin/mocha \
- --reporter $(REPORTER) \
- $(MOCHA_OPTS)
-
-.PHONY: test
diff --git a/vendor/snowplow/referer-parser/nodejs/README.md b/vendor/snowplow/referer-parser/nodejs/README.md
deleted file mode 100644
index 3a635160e..000000000
--- a/vendor/snowplow/referer-parser/nodejs/README.md
+++ /dev/null
@@ -1,76 +0,0 @@
-# referer-parser node.js (JavaScript) library
-
-This is the node.js (JavaScript) implementation of [referer-parser] [referer-parser], the library for extracting search marketing data from referer _(sic)_ URLs.
-
-The implementation uses the shared 'database' of known referers found in [`referers.yml`] [referers-yml]
-
-The Javascript version of referer-parser is maintained by [Martin Katrenik] [mkatrenik].
-
-## Installation
-
- $ npm install referer-parser
-
-## Usage
-
-Create a new instance of a Referer object by passing in the url you want to parse:
-
-```js
-var Referer = require('referer-parser')
-
-referer_url = 'http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari'
-
-var r = new Referer(referer_url)
-```
-
-The `r` variable now holds a Referer instance. The important attributes are:
-
-```js
-console.log(r.known) // true
-console.log(r.referer) // 'Google'
-console.log(r.medium) // 'search'
-console.log(r.search_parameter) // 'q'
-console.log(r.search_term) // 'gateway oracle cards denise linn'
-console.log(r.uri) // result of require('url').parse(...)
-```
-
-Optionally, pass in the current URL as well, to handle internal referers
-
-```js
-var Referer = require('referer-parser')
-
-var referer_url = 'http://www.snowplowanalytics.com/about/team'
-var current_url = 'http://www.snowplowanalytics.com/account/profile'
-
-var r = Referer(referer_url, current_url)
-```
-
-The attributes would be
-
-```js
-console.log(r.known) // true
-console.log(r.referer) // null
-console.log(r.medium) // 'internal'
-console.log(r.search_parameter) // null
-console.log(r.search_term) // null
-console.log(r.uri) // result of require('url').parse(...)
-```
-
-## Copyright and license
-
-The referer-parser node.js (JavaScript) library is copyright 2013 Martin Katrenik.
-
-Licensed under the [Apache License, Version 2.0] [license] (the "License");
-you may not use this software except in compliance with the License.
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-[referer-parser]: https://github.com/snowplow/referer-parser
-[referers-yml]: https://github.com/snowplow/referer-parser/blob/master/referers.yml
-
-[mkatrenik]: https://github.com/mkatrenik
-
-[license]: http://www.apache.org/licenses/LICENSE-2.0
diff --git a/vendor/snowplow/referer-parser/nodejs/data/referers.json b/vendor/snowplow/referer-parser/nodejs/data/referers.json
deleted file mode 100644
index 460975ef2..000000000
--- a/vendor/snowplow/referer-parser/nodejs/data/referers.json
+++ /dev/null
@@ -1,4090 +0,0 @@
-{
- "unknown": {
- "Outbrain": {
- "domains": [
- "paid.outbrain.com"
- ]
- },
- "Google": {
- "domains": [
- "support.google.com",
- "developers.google.com",
- "maps.google.com",
- "accounts.google.com",
- "drive.google.com",
- "sites.google.com",
- "groups.google.com",
- "groups.google.co.uk",
- "news.google.co.uk"
- ]
- },
- "Taboola": {
- "domains": [
- "trc.taboola.com",
- "api.taboola.com"
- ]
- },
- "Yahoo!": {
- "domains": [
- "finance.yahoo.com",
- "news.yahoo.com",
- "eurosport.yahoo.com",
- "sports.yahoo.com",
- "astrology.yahoo.com",
- "travel.yahoo.com",
- "answers.yahoo.com",
- "screen.yahoo.com",
- "weather.yahoo.com",
- "messenger.yahoo.com",
- "games.yahoo.com",
- "shopping.yahoo.net",
- "movies.yahoo.com",
- "cars.yahoo.com",
- "lifestyle.yahoo.com",
- "omg.yahoo.com",
- "match.yahoo.net"
- ]
- }
- },
- "search": {
- "TalkTalk": {
- "domains": [
- "www.talktalk.co.uk"
- ],
- "parameters": [
- "query"
- ]
- },
- "1.cz": {
- "domains": [
- "1.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Softonic": {
- "domains": [
- "search.softonic.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "GAIS": {
- "domains": [
- "gais.cs.ccu.edu.tw"
- ],
- "parameters": [
- "q"
- ]
- },
- "Freecause": {
- "domains": [
- "search.freecause.com"
- ],
- "parameters": [
- "p"
- ]
- },
- "360.cn": {
- "domains": [
- "so.360.cn",
- "www.so.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "RPMFind": {
- "domains": [
- "rpmfind.net",
- "fr2.rpmfind.net"
- ],
- "parameters": [
- "query"
- ]
- },
- "Comcast": {
- "domains": [
- "serach.comcast.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Voila": {
- "domains": [
- "search.ke.voila.fr",
- "www.lemoteur.fr"
- ],
- "parameters": [
- "rdata",
- "kw"
- ]
- },
- "Nifty": {
- "domains": [
- "search.nifty.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Atlas": {
- "domains": [
- "searchatlas.centrum.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Lo.st": {
- "domains": [
- "lo.st"
- ],
- "parameters": [
- "x_query"
- ]
- },
- "DasTelefonbuch": {
- "domains": [
- "www1.dastelefonbuch.de"
- ],
- "parameters": [
- "kw"
- ]
- },
- "Fireball": {
- "domains": [
- "www.fireball.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "1und1": {
- "domains": [
- "search.1und1.de"
- ],
- "parameters": [
- "su"
- ]
- },
- "Virgilio": {
- "domains": [
- "ricerca.virgilio.it",
- "ricercaimmagini.virgilio.it",
- "ricercavideo.virgilio.it",
- "ricercanews.virgilio.it",
- "mobile.virgilio.it"
- ],
- "parameters": [
- "qs"
- ]
- },
- "Web.nl": {
- "domains": [
- "www.web.nl"
- ],
- "parameters": [
- "zoekwoord"
- ]
- },
- "Plazoo": {
- "domains": [
- "www.plazoo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Goyellow.de": {
- "domains": [
- "www.goyellow.de"
- ],
- "parameters": [
- "MDN"
- ]
- },
- "AOL": {
- "domains": [
- "search.aol.com",
- "search.aol.it",
- "aolsearch.aol.com",
- "aolsearch.com",
- "www.aolrecherche.aol.fr",
- "www.aolrecherches.aol.fr",
- "www.aolimages.aol.fr",
- "aim.search.aol.com",
- "www.recherche.aol.fr",
- "find.web.aol.com",
- "recherche.aol.ca",
- "aolsearch.aol.co.uk",
- "search.aol.co.uk",
- "aolrecherche.aol.fr",
- "sucheaol.aol.de",
- "suche.aol.de",
- "suche.aolsvc.de",
- "aolbusqueda.aol.com.mx",
- "alicesuche.aol.de",
- "alicesuchet.aol.de",
- "suchet2.aol.de",
- "search.hp.my.aol.com.au",
- "search.hp.my.aol.de",
- "search.hp.my.aol.it",
- "search-intl.netscape.com"
- ],
- "parameters": [
- "q",
- "query"
- ]
- },
- "Acoon": {
- "domains": [
- "www.acoon.de"
- ],
- "parameters": [
- "begriff"
- ]
- },
- "Free": {
- "domains": [
- "search.free.fr",
- "search1-2.free.fr",
- "search1-1.free.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "Apollo Latvia": {
- "domains": [
- "apollo.lv/portal/search/"
- ],
- "parameters": [
- "q"
- ]
- },
- "HighBeam": {
- "domains": [
- "www.highbeam.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "I-play": {
- "domains": [
- "start.iplay.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "FriendFeed": {
- "domains": [
- "friendfeed.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yasni": {
- "domains": [
- "www.yasni.de",
- "www.yasni.com",
- "www.yasni.co.uk",
- "www.yasni.ch",
- "www.yasni.at"
- ],
- "parameters": [
- "query"
- ]
- },
- "Gigablast": {
- "domains": [
- "www.gigablast.com",
- "dir.gigablast.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "arama": {
- "domains": [
- "arama.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Fixsuche": {
- "domains": [
- "www.fixsuche.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Apontador": {
- "domains": [
- "apontador.com.br",
- "www.apontador.com.br"
- ],
- "parameters": [
- "q"
- ]
- },
- "Search.com": {
- "domains": [
- "www.search.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Monstercrawler": {
- "domains": [
- "www.monstercrawler.com"
- ],
- "parameters": [
- "qry"
- ]
- },
- "Google Images": {
- "domains": [
- "google.ac/imgres",
- "google.ad/imgres",
- "google.ae/imgres",
- "google.am/imgres",
- "google.as/imgres",
- "google.at/imgres",
- "google.az/imgres",
- "google.ba/imgres",
- "google.be/imgres",
- "google.bf/imgres",
- "google.bg/imgres",
- "google.bi/imgres",
- "google.bj/imgres",
- "google.bs/imgres",
- "google.by/imgres",
- "google.ca/imgres",
- "google.cat/imgres",
- "google.cc/imgres",
- "google.cd/imgres",
- "google.cf/imgres",
- "google.cg/imgres",
- "google.ch/imgres",
- "google.ci/imgres",
- "google.cl/imgres",
- "google.cm/imgres",
- "google.cn/imgres",
- "google.co.bw/imgres",
- "google.co.ck/imgres",
- "google.co.cr/imgres",
- "google.co.id/imgres",
- "google.co.il/imgres",
- "google.co.in/imgres",
- "google.co.jp/imgres",
- "google.co.ke/imgres",
- "google.co.kr/imgres",
- "google.co.ls/imgres",
- "google.co.ma/imgres",
- "google.co.mz/imgres",
- "google.co.nz/imgres",
- "google.co.th/imgres",
- "google.co.tz/imgres",
- "google.co.ug/imgres",
- "google.co.uk/imgres",
- "google.co.uz/imgres",
- "google.co.ve/imgres",
- "google.co.vi/imgres",
- "google.co.za/imgres",
- "google.co.zm/imgres",
- "google.co.zw/imgres",
- "google.com/imgres",
- "google.com.af/imgres",
- "google.com.ag/imgres",
- "google.com.ai/imgres",
- "google.com.ar/imgres",
- "google.com.au/imgres",
- "google.com.bd/imgres",
- "google.com.bh/imgres",
- "google.com.bn/imgres",
- "google.com.bo/imgres",
- "google.com.br/imgres",
- "google.com.by/imgres",
- "google.com.bz/imgres",
- "google.com.co/imgres",
- "google.com.cu/imgres",
- "google.com.cy/imgres",
- "google.com.do/imgres",
- "google.com.ec/imgres",
- "google.com.eg/imgres",
- "google.com.et/imgres",
- "google.com.fj/imgres",
- "google.com.gh/imgres",
- "google.com.gi/imgres",
- "google.com.gt/imgres",
- "google.com.hk/imgres",
- "google.com.jm/imgres",
- "google.com.kh/imgres",
- "google.com.kw/imgres",
- "google.com.lb/imgres",
- "google.com.lc/imgres",
- "google.com.ly/imgres",
- "google.com.mt/imgres",
- "google.com.mx/imgres",
- "google.com.my/imgres",
- "google.com.na/imgres",
- "google.com.nf/imgres",
- "google.com.ng/imgres",
- "google.com.ni/imgres",
- "google.com.np/imgres",
- "google.com.om/imgres",
- "google.com.pa/imgres",
- "google.com.pe/imgres",
- "google.com.ph/imgres",
- "google.com.pk/imgres",
- "google.com.pr/imgres",
- "google.com.py/imgres",
- "google.com.qa/imgres",
- "google.com.sa/imgres",
- "google.com.sb/imgres",
- "google.com.sg/imgres",
- "google.com.sl/imgres",
- "google.com.sv/imgres",
- "google.com.tj/imgres",
- "google.com.tn/imgres",
- "google.com.tr/imgres",
- "google.com.tw/imgres",
- "google.com.ua/imgres",
- "google.com.uy/imgres",
- "google.com.vc/imgres",
- "google.com.vn/imgres",
- "google.cv/imgres",
- "google.cz/imgres",
- "google.de/imgres",
- "google.dj/imgres",
- "google.dk/imgres",
- "google.dm/imgres",
- "google.dz/imgres",
- "google.ee/imgres",
- "google.es/imgres",
- "google.fi/imgres",
- "google.fm/imgres",
- "google.fr/imgres",
- "google.ga/imgres",
- "google.gd/imgres",
- "google.ge/imgres",
- "google.gf/imgres",
- "google.gg/imgres",
- "google.gl/imgres",
- "google.gm/imgres",
- "google.gp/imgres",
- "google.gr/imgres",
- "google.gy/imgres",
- "google.hn/imgres",
- "google.hr/imgres",
- "google.ht/imgres",
- "google.hu/imgres",
- "google.ie/imgres",
- "google.im/imgres",
- "google.io/imgres",
- "google.iq/imgres",
- "google.is/imgres",
- "google.it/imgres",
- "google.it.ao/imgres",
- "google.je/imgres",
- "google.jo/imgres",
- "google.kg/imgres",
- "google.ki/imgres",
- "google.kz/imgres",
- "google.la/imgres",
- "google.li/imgres",
- "google.lk/imgres",
- "google.lt/imgres",
- "google.lu/imgres",
- "google.lv/imgres",
- "google.md/imgres",
- "google.me/imgres",
- "google.mg/imgres",
- "google.mk/imgres",
- "google.ml/imgres",
- "google.mn/imgres",
- "google.ms/imgres",
- "google.mu/imgres",
- "google.mv/imgres",
- "google.mw/imgres",
- "google.ne/imgres",
- "google.nl/imgres",
- "google.no/imgres",
- "google.nr/imgres",
- "google.nu/imgres",
- "google.pl/imgres",
- "google.pn/imgres",
- "google.ps/imgres",
- "google.pt/imgres",
- "google.ro/imgres",
- "google.rs/imgres",
- "google.ru/imgres",
- "google.rw/imgres",
- "google.sc/imgres",
- "google.se/imgres",
- "google.sh/imgres",
- "google.si/imgres",
- "google.sk/imgres",
- "google.sm/imgres",
- "google.sn/imgres",
- "google.so/imgres",
- "google.st/imgres",
- "google.td/imgres",
- "google.tg/imgres",
- "google.tk/imgres",
- "google.tl/imgres",
- "google.tm/imgres",
- "google.to/imgres",
- "google.tt/imgres",
- "google.us/imgres",
- "google.vg/imgres",
- "google.vu/imgres",
- "images.google.ws",
- "images.google.ac",
- "images.google.ad",
- "images.google.ae",
- "images.google.am",
- "images.google.as",
- "images.google.at",
- "images.google.az",
- "images.google.ba",
- "images.google.be",
- "images.google.bf",
- "images.google.bg",
- "images.google.bi",
- "images.google.bj",
- "images.google.bs",
- "images.google.by",
- "images.google.ca",
- "images.google.cat",
- "images.google.cc",
- "images.google.cd",
- "images.google.cf",
- "images.google.cg",
- "images.google.ch",
- "images.google.ci",
- "images.google.cl",
- "images.google.cm",
- "images.google.cn",
- "images.google.co.bw",
- "images.google.co.ck",
- "images.google.co.cr",
- "images.google.co.id",
- "images.google.co.il",
- "images.google.co.in",
- "images.google.co.jp",
- "images.google.co.ke",
- "images.google.co.kr",
- "images.google.co.ls",
- "images.google.co.ma",
- "images.google.co.mz",
- "images.google.co.nz",
- "images.google.co.th",
- "images.google.co.tz",
- "images.google.co.ug",
- "images.google.co.uk",
- "images.google.co.uz",
- "images.google.co.ve",
- "images.google.co.vi",
- "images.google.co.za",
- "images.google.co.zm",
- "images.google.co.zw",
- "images.google.com",
- "images.google.com.af",
- "images.google.com.ag",
- "images.google.com.ai",
- "images.google.com.ar",
- "images.google.com.au",
- "images.google.com.bd",
- "images.google.com.bh",
- "images.google.com.bn",
- "images.google.com.bo",
- "images.google.com.br",
- "images.google.com.by",
- "images.google.com.bz",
- "images.google.com.co",
- "images.google.com.cu",
- "images.google.com.cy",
- "images.google.com.do",
- "images.google.com.ec",
- "images.google.com.eg",
- "images.google.com.et",
- "images.google.com.fj",
- "images.google.com.gh",
- "images.google.com.gi",
- "images.google.com.gt",
- "images.google.com.hk",
- "images.google.com.jm",
- "images.google.com.kh",
- "images.google.com.kh",
- "images.google.com.kw",
- "images.google.com.lb",
- "images.google.com.lc",
- "images.google.com.ly",
- "images.google.com.mt",
- "images.google.com.mx",
- "images.google.com.my",
- "images.google.com.na",
- "images.google.com.nf",
- "images.google.com.ng",
- "images.google.com.ni",
- "images.google.com.np",
- "images.google.com.om",
- "images.google.com.pa",
- "images.google.com.pe",
- "images.google.com.ph",
- "images.google.com.pk",
- "images.google.com.pr",
- "images.google.com.py",
- "images.google.com.qa",
- "images.google.com.sa",
- "images.google.com.sb",
- "images.google.com.sg",
- "images.google.com.sl",
- "images.google.com.sv",
- "images.google.com.tj",
- "images.google.com.tn",
- "images.google.com.tr",
- "images.google.com.tw",
- "images.google.com.ua",
- "images.google.com.uy",
- "images.google.com.vc",
- "images.google.com.vn",
- "images.google.cv",
- "images.google.cz",
- "images.google.de",
- "images.google.dj",
- "images.google.dk",
- "images.google.dm",
- "images.google.dz",
- "images.google.ee",
- "images.google.es",
- "images.google.fi",
- "images.google.fm",
- "images.google.fr",
- "images.google.ga",
- "images.google.gd",
- "images.google.ge",
- "images.google.gf",
- "images.google.gg",
- "images.google.gl",
- "images.google.gm",
- "images.google.gp",
- "images.google.gr",
- "images.google.gy",
- "images.google.hn",
- "images.google.hr",
- "images.google.ht",
- "images.google.hu",
- "images.google.ie",
- "images.google.im",
- "images.google.io",
- "images.google.iq",
- "images.google.is",
- "images.google.it",
- "images.google.it.ao",
- "images.google.je",
- "images.google.jo",
- "images.google.kg",
- "images.google.ki",
- "images.google.kz",
- "images.google.la",
- "images.google.li",
- "images.google.lk",
- "images.google.lt",
- "images.google.lu",
- "images.google.lv",
- "images.google.md",
- "images.google.me",
- "images.google.mg",
- "images.google.mk",
- "images.google.ml",
- "images.google.mn",
- "images.google.ms",
- "images.google.mu",
- "images.google.mv",
- "images.google.mw",
- "images.google.ne",
- "images.google.nl",
- "images.google.no",
- "images.google.nr",
- "images.google.nu",
- "images.google.pl",
- "images.google.pn",
- "images.google.ps",
- "images.google.pt",
- "images.google.ro",
- "images.google.rs",
- "images.google.ru",
- "images.google.rw",
- "images.google.sc",
- "images.google.se",
- "images.google.sh",
- "images.google.si",
- "images.google.sk",
- "images.google.sm",
- "images.google.sn",
- "images.google.so",
- "images.google.st",
- "images.google.td",
- "images.google.tg",
- "images.google.tk",
- "images.google.tl",
- "images.google.tm",
- "images.google.to",
- "images.google.tt",
- "images.google.us",
- "images.google.vg",
- "images.google.vu",
- "images.google.ws"
- ],
- "parameters": [
- "q"
- ]
- },
- "ABCs\u00f8k": {
- "domains": [
- "abcsolk.no",
- "verden.abcsok.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Google Product Search": {
- "domains": [
- "google.ac/products",
- "google.ad/products",
- "google.ae/products",
- "google.am/products",
- "google.as/products",
- "google.at/products",
- "google.az/products",
- "google.ba/products",
- "google.be/products",
- "google.bf/products",
- "google.bg/products",
- "google.bi/products",
- "google.bj/products",
- "google.bs/products",
- "google.by/products",
- "google.ca/products",
- "google.cat/products",
- "google.cc/products",
- "google.cd/products",
- "google.cf/products",
- "google.cg/products",
- "google.ch/products",
- "google.ci/products",
- "google.cl/products",
- "google.cm/products",
- "google.cn/products",
- "google.co.bw/products",
- "google.co.ck/products",
- "google.co.cr/products",
- "google.co.id/products",
- "google.co.il/products",
- "google.co.in/products",
- "google.co.jp/products",
- "google.co.ke/products",
- "google.co.kr/products",
- "google.co.ls/products",
- "google.co.ma/products",
- "google.co.mz/products",
- "google.co.nz/products",
- "google.co.th/products",
- "google.co.tz/products",
- "google.co.ug/products",
- "google.co.uk/products",
- "google.co.uz/products",
- "google.co.ve/products",
- "google.co.vi/products",
- "google.co.za/products",
- "google.co.zm/products",
- "google.co.zw/products",
- "google.com/products",
- "google.com.af/products",
- "google.com.ag/products",
- "google.com.ai/products",
- "google.com.ar/products",
- "google.com.au/products",
- "google.com.bd/products",
- "google.com.bh/products",
- "google.com.bn/products",
- "google.com.bo/products",
- "google.com.br/products",
- "google.com.by/products",
- "google.com.bz/products",
- "google.com.co/products",
- "google.com.cu/products",
- "google.com.cy/products",
- "google.com.do/products",
- "google.com.ec/products",
- "google.com.eg/products",
- "google.com.et/products",
- "google.com.fj/products",
- "google.com.gh/products",
- "google.com.gi/products",
- "google.com.gt/products",
- "google.com.hk/products",
- "google.com.jm/products",
- "google.com.kh/products",
- "google.com.kh/products",
- "google.com.kw/products",
- "google.com.lb/products",
- "google.com.lc/products",
- "google.com.ly/products",
- "google.com.mt/products",
- "google.com.mx/products",
- "google.com.my/products",
- "google.com.na/products",
- "google.com.nf/products",
- "google.com.ng/products",
- "google.com.ni/products",
- "google.com.np/products",
- "google.com.om/products",
- "google.com.pa/products",
- "google.com.pe/products",
- "google.com.ph/products",
- "google.com.pk/products",
- "google.com.pr/products",
- "google.com.py/products",
- "google.com.qa/products",
- "google.com.sa/products",
- "google.com.sb/products",
- "google.com.sg/products",
- "google.com.sl/products",
- "google.com.sv/products",
- "google.com.tj/products",
- "google.com.tn/products",
- "google.com.tr/products",
- "google.com.tw/products",
- "google.com.ua/products",
- "google.com.uy/products",
- "google.com.vc/products",
- "google.com.vn/products",
- "google.cv/products",
- "google.cz/products",
- "google.de/products",
- "google.dj/products",
- "google.dk/products",
- "google.dm/products",
- "google.dz/products",
- "google.ee/products",
- "google.es/products",
- "google.fi/products",
- "google.fm/products",
- "google.fr/products",
- "google.ga/products",
- "google.gd/products",
- "google.ge/products",
- "google.gf/products",
- "google.gg/products",
- "google.gl/products",
- "google.gm/products",
- "google.gp/products",
- "google.gr/products",
- "google.gy/products",
- "google.hn/products",
- "google.hr/products",
- "google.ht/products",
- "google.hu/products",
- "google.ie/products",
- "google.im/products",
- "google.io/products",
- "google.iq/products",
- "google.is/products",
- "google.it/products",
- "google.it.ao/products",
- "google.je/products",
- "google.jo/products",
- "google.kg/products",
- "google.ki/products",
- "google.kz/products",
- "google.la/products",
- "google.li/products",
- "google.lk/products",
- "google.lt/products",
- "google.lu/products",
- "google.lv/products",
- "google.md/products",
- "google.me/products",
- "google.mg/products",
- "google.mk/products",
- "google.ml/products",
- "google.mn/products",
- "google.ms/products",
- "google.mu/products",
- "google.mv/products",
- "google.mw/products",
- "google.ne/products",
- "google.nl/products",
- "google.no/products",
- "google.nr/products",
- "google.nu/products",
- "google.pl/products",
- "google.pn/products",
- "google.ps/products",
- "google.pt/products",
- "google.ro/products",
- "google.rs/products",
- "google.ru/products",
- "google.rw/products",
- "google.sc/products",
- "google.se/products",
- "google.sh/products",
- "google.si/products",
- "google.sk/products",
- "google.sm/products",
- "google.sn/products",
- "google.so/products",
- "google.st/products",
- "google.td/products",
- "google.tg/products",
- "google.tk/products",
- "google.tl/products",
- "google.tm/products",
- "google.to/products",
- "google.tt/products",
- "google.us/products",
- "google.vg/products",
- "google.vu/products",
- "google.ws/products",
- "www.google.ac/products",
- "www.google.ad/products",
- "www.google.ae/products",
- "www.google.am/products",
- "www.google.as/products",
- "www.google.at/products",
- "www.google.az/products",
- "www.google.ba/products",
- "www.google.be/products",
- "www.google.bf/products",
- "www.google.bg/products",
- "www.google.bi/products",
- "www.google.bj/products",
- "www.google.bs/products",
- "www.google.by/products",
- "www.google.ca/products",
- "www.google.cat/products",
- "www.google.cc/products",
- "www.google.cd/products",
- "www.google.cf/products",
- "www.google.cg/products",
- "www.google.ch/products",
- "www.google.ci/products",
- "www.google.cl/products",
- "www.google.cm/products",
- "www.google.cn/products",
- "www.google.co.bw/products",
- "www.google.co.ck/products",
- "www.google.co.cr/products",
- "www.google.co.id/products",
- "www.google.co.il/products",
- "www.google.co.in/products",
- "www.google.co.jp/products",
- "www.google.co.ke/products",
- "www.google.co.kr/products",
- "www.google.co.ls/products",
- "www.google.co.ma/products",
- "www.google.co.mz/products",
- "www.google.co.nz/products",
- "www.google.co.th/products",
- "www.google.co.tz/products",
- "www.google.co.ug/products",
- "www.google.co.uk/products",
- "www.google.co.uz/products",
- "www.google.co.ve/products",
- "www.google.co.vi/products",
- "www.google.co.za/products",
- "www.google.co.zm/products",
- "www.google.co.zw/products",
- "www.google.com/products",
- "www.google.com.af/products",
- "www.google.com.ag/products",
- "www.google.com.ai/products",
- "www.google.com.ar/products",
- "www.google.com.au/products",
- "www.google.com.bd/products",
- "www.google.com.bh/products",
- "www.google.com.bn/products",
- "www.google.com.bo/products",
- "www.google.com.br/products",
- "www.google.com.by/products",
- "www.google.com.bz/products",
- "www.google.com.co/products",
- "www.google.com.cu/products",
- "www.google.com.cy/products",
- "www.google.com.do/products",
- "www.google.com.ec/products",
- "www.google.com.eg/products",
- "www.google.com.et/products",
- "www.google.com.fj/products",
- "www.google.com.gh/products",
- "www.google.com.gi/products",
- "www.google.com.gt/products",
- "www.google.com.hk/products",
- "www.google.com.jm/products",
- "www.google.com.kh/products",
- "www.google.com.kh/products",
- "www.google.com.kw/products",
- "www.google.com.lb/products",
- "www.google.com.lc/products",
- "www.google.com.ly/products",
- "www.google.com.mt/products",
- "www.google.com.mx/products",
- "www.google.com.my/products",
- "www.google.com.na/products",
- "www.google.com.nf/products",
- "www.google.com.ng/products",
- "www.google.com.ni/products",
- "www.google.com.np/products",
- "www.google.com.om/products",
- "www.google.com.pa/products",
- "www.google.com.pe/products",
- "www.google.com.ph/products",
- "www.google.com.pk/products",
- "www.google.com.pr/products",
- "www.google.com.py/products",
- "www.google.com.qa/products",
- "www.google.com.sa/products",
- "www.google.com.sb/products",
- "www.google.com.sg/products",
- "www.google.com.sl/products",
- "www.google.com.sv/products",
- "www.google.com.tj/products",
- "www.google.com.tn/products",
- "www.google.com.tr/products",
- "www.google.com.tw/products",
- "www.google.com.ua/products",
- "www.google.com.uy/products",
- "www.google.com.vc/products",
- "www.google.com.vn/products",
- "www.google.cv/products",
- "www.google.cz/products",
- "www.google.de/products",
- "www.google.dj/products",
- "www.google.dk/products",
- "www.google.dm/products",
- "www.google.dz/products",
- "www.google.ee/products",
- "www.google.es/products",
- "www.google.fi/products",
- "www.google.fm/products",
- "www.google.fr/products",
- "www.google.ga/products",
- "www.google.gd/products",
- "www.google.ge/products",
- "www.google.gf/products",
- "www.google.gg/products",
- "www.google.gl/products",
- "www.google.gm/products",
- "www.google.gp/products",
- "www.google.gr/products",
- "www.google.gy/products",
- "www.google.hn/products",
- "www.google.hr/products",
- "www.google.ht/products",
- "www.google.hu/products",
- "www.google.ie/products",
- "www.google.im/products",
- "www.google.io/products",
- "www.google.iq/products",
- "www.google.is/products",
- "www.google.it/products",
- "www.google.it.ao/products",
- "www.google.je/products",
- "www.google.jo/products",
- "www.google.kg/products",
- "www.google.ki/products",
- "www.google.kz/products",
- "www.google.la/products",
- "www.google.li/products",
- "www.google.lk/products",
- "www.google.lt/products",
- "www.google.lu/products",
- "www.google.lv/products",
- "www.google.md/products",
- "www.google.me/products",
- "www.google.mg/products",
- "www.google.mk/products",
- "www.google.ml/products",
- "www.google.mn/products",
- "www.google.ms/products",
- "www.google.mu/products",
- "www.google.mv/products",
- "www.google.mw/products",
- "www.google.ne/products",
- "www.google.nl/products",
- "www.google.no/products",
- "www.google.nr/products",
- "www.google.nu/products",
- "www.google.pl/products",
- "www.google.pn/products",
- "www.google.ps/products",
- "www.google.pt/products",
- "www.google.ro/products",
- "www.google.rs/products",
- "www.google.ru/products",
- "www.google.rw/products",
- "www.google.sc/products",
- "www.google.se/products",
- "www.google.sh/products",
- "www.google.si/products",
- "www.google.sk/products",
- "www.google.sm/products",
- "www.google.sn/products",
- "www.google.so/products",
- "www.google.st/products",
- "www.google.td/products",
- "www.google.tg/products",
- "www.google.tk/products",
- "www.google.tl/products",
- "www.google.tm/products",
- "www.google.to/products",
- "www.google.tt/products",
- "www.google.us/products",
- "www.google.vg/products",
- "www.google.vu/products",
- "www.google.ws/products"
- ],
- "parameters": [
- "q"
- ]
- },
- "DasOertliche": {
- "domains": [
- "www.dasoertliche.de"
- ],
- "parameters": [
- "kw"
- ]
- },
- "InfoSpace": {
- "domains": [
- "infospace.com",
- "dogpile.com",
- "www.dogpile.com",
- "metacrawler.com",
- "webfetch.com",
- "webcrawler.com",
- "search.kiwee.com",
- "isearch.babylon.com",
- "start.facemoods.com",
- "search.magnetic.com",
- "search.searchcompletion.com",
- "clusty.com"
- ],
- "parameters": [
- "q",
- "s"
- ]
- },
- "Weborama": {
- "domains": [
- "www.weborama.com"
- ],
- "parameters": [
- "QUERY"
- ]
- },
- "Bluewin": {
- "domains": [
- "search.bluewin.ch"
- ],
- "parameters": [
- "searchTerm"
- ]
- },
- "Neti": {
- "domains": [
- "www.neti.ee"
- ],
- "parameters": [
- "query"
- ]
- },
- "Winamp": {
- "domains": [
- "search.winamp.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Nigma": {
- "domains": [
- "nigma.ru"
- ],
- "parameters": [
- "s"
- ]
- },
- "Yahoo! Images": {
- "domains": [
- "image.yahoo.cn",
- "images.search.yahoo.com"
- ],
- "parameters": [
- "p",
- "q"
- ]
- },
- "Exalead": {
- "domains": [
- "www.exalead.fr",
- "www.exalead.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Teoma": {
- "domains": [
- "www.teoma.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Needtofind": {
- "domains": [
- "ko.search.need2find.com"
- ],
- "parameters": [
- "searchfor"
- ]
- },
- "Looksmart": {
- "domains": [
- "www.looksmart.com"
- ],
- "parameters": [
- "key"
- ]
- },
- "Wirtualna Polska": {
- "domains": [
- "szukaj.wp.pl"
- ],
- "parameters": [
- "szukaj"
- ]
- },
- "Toolbarhome": {
- "domains": [
- "www.toolbarhome.com",
- "vshare.toolbarhome.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Searchalot": {
- "domains": [
- "searchalot.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yandex": {
- "domains": [
- "yandex.ru",
- "yandex.ua",
- "yandex.com",
- "yandex.by",
- "www.yandex.ru",
- "www.yandex.ua",
- "www.yandex.com",
- "www.yandex.by"
- ],
- "parameters": [
- "text"
- ]
- },
- "canoe.ca": {
- "domains": [
- "web.canoe.ca"
- ],
- "parameters": [
- "q"
- ]
- },
- "Compuserve": {
- "domains": [
- "websearch.cs.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Blogdigger": {
- "domains": [
- "www.blogdigger.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Startpagina": {
- "domains": [
- "startgoogle.startpagina.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "eo": {
- "domains": [
- "eo.st"
- ],
- "parameters": [
- "x_query"
- ]
- },
- "Zhongsou": {
- "domains": [
- "p.zhongsou.com"
- ],
- "parameters": [
- "w"
- ]
- },
- "La Toile Du Quebec Via Google": {
- "domains": [
- "www.toile.com",
- "web.toile.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Paperball": {
- "domains": [
- "www.paperball.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Jungle Spider": {
- "domains": [
- "www.jungle-spider.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "PeoplePC": {
- "domains": [
- "search.peoplepc.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "MetaCrawler.de": {
- "domains": [
- "s1.metacrawler.de",
- "s2.metacrawler.de",
- "s3.metacrawler.de"
- ],
- "parameters": [
- "qry"
- ]
- },
- "Orange": {
- "domains": [
- "busca.orange.es",
- "search.orange.co.uk"
- ],
- "parameters": [
- "q"
- ]
- },
- "Gule Sider": {
- "domains": [
- "www.gulesider.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Francite": {
- "domains": [
- "recherche.francite.com"
- ],
- "parameters": [
- "name"
- ]
- },
- "Ask Toolbar": {
- "domains": [
- "search.tb.ask.com"
- ],
- "parameters": [
- "searchfor"
- ]
- },
- "Trusted-Search": {
- "domains": [
- "www.trusted--search.com"
- ],
- "parameters": [
- "w"
- ]
- },
- "goo": {
- "domains": [
- "search.goo.ne.jp",
- "ocnsearch.goo.ne.jp"
- ],
- "parameters": [
- "MT"
- ]
- },
- "Fast Browser Search": {
- "domains": [
- "www.fastbrowsersearch.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Blogpulse": {
- "domains": [
- "www.blogpulse.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Volny": {
- "domains": [
- "web.volny.cz"
- ],
- "parameters": [
- "search"
- ]
- },
- "Icerockeet": {
- "domains": [
- "blogs.icerocket.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Terra": {
- "domains": [
- "buscador.terra.es",
- "buscador.terra.cl",
- "buscador.terra.com.br"
- ],
- "parameters": [
- "query"
- ]
- },
- "Amazon": {
- "domains": [
- "amazon.com",
- "www.amazon.com"
- ],
- "parameters": [
- "keywords"
- ]
- },
- "Onet": {
- "domains": [
- "szukaj.onet.pl"
- ],
- "parameters": [
- "qt"
- ]
- },
- "Digg": {
- "domains": [
- "digg.com"
- ],
- "parameters": [
- "s"
- ]
- },
- "Abacho": {
- "domains": [
- "www.abacho.de",
- "www.abacho.com",
- "www.abacho.co.uk",
- "www.se.abacho.com",
- "www.tr.abacho.com",
- "www.abacho.at",
- "www.abacho.fr",
- "www.abacho.es",
- "www.abacho.ch",
- "www.abacho.it"
- ],
- "parameters": [
- "q"
- ]
- },
- "maailm": {
- "domains": [
- "www.maailm.com"
- ],
- "parameters": [
- "tekst"
- ]
- },
- "Flix": {
- "domains": [
- "www.flix.de"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Suchnase": {
- "domains": [
- "www.suchnase.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Freenet": {
- "domains": [
- "suche.freenet.de"
- ],
- "parameters": [
- "query",
- "Keywords"
- ]
- },
- "Poisk.ru": {
- "domains": [
- "www.plazoo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Sharelook": {
- "domains": [
- "www.sharelook.fr"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Najdi": {
- "domains": [
- "www.najdi.si"
- ],
- "parameters": [
- "q"
- ]
- },
- "Picsearch": {
- "domains": [
- "www.picsearch.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Mail.ru": {
- "domains": [
- "go.mail.ru"
- ],
- "parameters": [
- "q"
- ]
- },
- "Alexa": {
- "domains": [
- "alexa.com",
- "search.toolbars.alexa.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Metager": {
- "domains": [
- "meta.rrzn.uni-hannover.de",
- "www.metager.de"
- ],
- "parameters": [
- "eingabe"
- ]
- },
- "Technorati": {
- "domains": [
- "technorati.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Globososo": {
- "domains": [
- "searches.globososo.com",
- "search.globososo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "WWW": {
- "domains": [
- "search.www.ee"
- ],
- "parameters": [
- "query"
- ]
- },
- "Trouvez.com": {
- "domains": [
- "www.trouvez.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "IXquick": {
- "domains": [
- "ixquick.com",
- "www.eu.ixquick.com",
- "ixquick.de",
- "www.ixquick.de",
- "us.ixquick.com",
- "s1.us.ixquick.com",
- "s2.us.ixquick.com",
- "s3.us.ixquick.com",
- "s4.us.ixquick.com",
- "s5.us.ixquick.com",
- "eu.ixquick.com",
- "s8-eu.ixquick.com",
- "s1-eu.ixquick.de"
- ],
- "parameters": [
- "query"
- ]
- },
- "Naver Images": {
- "domains": [
- "image.search.naver.com",
- "imagesearch.naver.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Zapmeta": {
- "domains": [
- "www.zapmeta.com",
- "www.zapmeta.nl",
- "www.zapmeta.de",
- "uk.zapmeta.com"
- ],
- "parameters": [
- "q",
- "query"
- ]
- },
- "Yippy": {
- "domains": [
- "search.yippy.com"
- ],
- "parameters": [
- "q",
- "query"
- ]
- },
- "Gomeo": {
- "domains": [
- "www.gomeo.com"
- ],
- "parameters": [
- "Keywords"
- ]
- },
- "Walhello": {
- "domains": [
- "www.walhello.info",
- "www.walhello.com",
- "www.walhello.de",
- "www.walhello.nl"
- ],
- "parameters": [
- "key"
- ]
- },
- "Meta": {
- "domains": [
- "meta.ua"
- ],
- "parameters": [
- "q"
- ]
- },
- "Skynet": {
- "domains": [
- "www.skynet.be"
- ],
- "parameters": [
- "q"
- ]
- },
- "Searchy": {
- "domains": [
- "www.searchy.co.uk"
- ],
- "parameters": [
- "q"
- ]
- },
- "Findwide": {
- "domains": [
- "search.findwide.com"
- ],
- "parameters": [
- "k"
- ]
- },
- "WebSearch": {
- "domains": [
- "www.websearch.com"
- ],
- "parameters": [
- "qkw",
- "q"
- ]
- },
- "Rambler": {
- "domains": [
- "nova.rambler.ru"
- ],
- "parameters": [
- "query",
- "words"
- ]
- },
- "Latne": {
- "domains": [
- "www.latne.lv"
- ],
- "parameters": [
- "q"
- ]
- },
- "MySearch": {
- "domains": [
- "www.mysearch.com",
- "ms114.mysearch.com",
- "ms146.mysearch.com",
- "kf.mysearch.myway.com",
- "ki.mysearch.myway.com",
- "search.myway.com",
- "search.mywebsearch.com"
- ],
- "parameters": [
- "searchfor",
- "searchFor"
- ]
- },
- "Cuil": {
- "domains": [
- "www.cuil.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Tixuma": {
- "domains": [
- "www.tixuma.de"
- ],
- "parameters": [
- "sc"
- ]
- },
- "Sapo": {
- "domains": [
- "pesquisa.sapo.pt"
- ],
- "parameters": [
- "q"
- ]
- },
- "Gnadenmeer": {
- "domains": [
- "www.gnadenmeer.de"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Arcor": {
- "domains": [
- "www.arcor.de"
- ],
- "parameters": [
- "Keywords"
- ]
- },
- "Naver": {
- "domains": [
- "search.naver.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Zoeken": {
- "domains": [
- "www.zoeken.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Startsiden": {
- "domains": [
- "www.startsiden.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yam": {
- "domains": [
- "search.yam.com"
- ],
- "parameters": [
- "k"
- ]
- },
- "Eniro": {
- "domains": [
- "www.eniro.se"
- ],
- "parameters": [
- "q",
- "search_word"
- ]
- },
- "APOLL07": {
- "domains": [
- "apollo7.de"
- ],
- "parameters": [
- "query"
- ]
- },
- "Biglobe": {
- "domains": [
- "cgi.search.biglobe.ne.jp"
- ],
- "parameters": [
- "q"
- ]
- },
- "Mozbot": {
- "domains": [
- "www.mozbot.fr",
- "www.mozbot.co.uk",
- "www.mozbot.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "ICQ": {
- "domains": [
- "www.icq.com",
- "search.icq.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Baidu": {
- "domains": [
- "www.baidu.com",
- "www1.baidu.com",
- "zhidao.baidu.com",
- "tieba.baidu.com",
- "news.baidu.com",
- "web.gougou.com"
- ],
- "parameters": [
- "wd",
- "word",
- "kw",
- "k"
- ]
- },
- "Conduit": {
- "domains": [
- "search.conduit.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Vindex": {
- "domains": [
- "www.vindex.nl",
- "search.vindex.nl"
- ],
- "parameters": [
- "search_for"
- ]
- },
- "Babylon": {
- "domains": [
- "search.babylon.com",
- "searchassist.babylon.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "TrovaRapido": {
- "domains": [
- "www.trovarapido.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Suchmaschine.com": {
- "domains": [
- "www.suchmaschine.com"
- ],
- "parameters": [
- "suchstr"
- ]
- },
- "Lycos": {
- "domains": [
- "search.lycos.com",
- "www.lycos.com",
- "lycos.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Vinden": {
- "domains": [
- "www.vinden.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Altavista": {
- "domains": [
- "www.altavista.com",
- "search.altavista.com",
- "listings.altavista.com",
- "altavista.de",
- "altavista.fr",
- "be-nl.altavista.com",
- "be-fr.altavista.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "dmoz": {
- "domains": [
- "dmoz.org",
- "editors.dmoz.org"
- ],
- "parameters": [
- "q"
- ]
- },
- "Ecosia": {
- "domains": [
- "ecosia.org"
- ],
- "parameters": [
- "q"
- ]
- },
- "Maxwebsearch": {
- "domains": [
- "maxwebsearch.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Euroseek": {
- "domains": [
- "www.euroseek.com"
- ],
- "parameters": [
- "string"
- ]
- },
- "Bing": {
- "domains": [
- "bing.com",
- "www.bing.com",
- "msnbc.msn.com",
- "dizionario.it.msn.com",
- "cc.bingj.com",
- "m.bing.com"
- ],
- "parameters": [
- "q",
- "Q"
- ]
- },
- "X-recherche": {
- "domains": [
- "www.x-recherche.com"
- ],
- "parameters": [
- "MOTS"
- ]
- },
- "Yandex Images": {
- "domains": [
- "images.yandex.ru",
- "images.yandex.ua",
- "images.yandex.com"
- ],
- "parameters": [
- "text"
- ]
- },
- "GMX": {
- "domains": [
- "suche.gmx.net"
- ],
- "parameters": [
- "su"
- ]
- },
- "Daemon search": {
- "domains": [
- "daemon-search.com",
- "my.daemon-search.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Jungle Key": {
- "domains": [
- "junglekey.com",
- "junglekey.fr"
- ],
- "parameters": [
- "query"
- ]
- },
- "Firstfind": {
- "domains": [
- "www.firstsfind.com"
- ],
- "parameters": [
- "qry"
- ]
- },
- "Crawler": {
- "domains": [
- "www.crawler.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Holmes": {
- "domains": [
- "holmes.ge"
- ],
- "parameters": [
- "q"
- ]
- },
- "Charter": {
- "domains": [
- "www.charter.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Ilse": {
- "domains": [
- "www.ilse.nl"
- ],
- "parameters": [
- "search_for"
- ]
- },
- "earthlink": {
- "domains": [
- "search.earthlink.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Qualigo": {
- "domains": [
- "www.qualigo.at",
- "www.qualigo.ch",
- "www.qualigo.de",
- "www.qualigo.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "El Mundo": {
- "domains": [
- "ariadna.elmundo.es"
- ],
- "parameters": [
- "q"
- ]
- },
- "Metager2": {
- "domains": [
- "metager2.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Forestle": {
- "domains": [
- "forestle.org",
- "www.forestle.org",
- "forestle.mobi"
- ],
- "parameters": [
- "q"
- ]
- },
- "Search.ch": {
- "domains": [
- "www.search.ch"
- ],
- "parameters": [
- "q"
- ]
- },
- "Meinestadt": {
- "domains": [
- "www.meinestadt.de"
- ],
- "parameters": [
- "words"
- ]
- },
- "Freshweather": {
- "domains": [
- "www.fresh-weather.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "AllTheWeb": {
- "domains": [
- "www.alltheweb.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Snapdo": {
- "domains": [
- "search.snapdo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Zoek": {
- "domains": [
- "www3.zoek.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Daum": {
- "domains": [
- "search.daum.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Marktplaats": {
- "domains": [
- "www.marktplaats.nl"
- ],
- "parameters": [
- "query"
- ]
- },
- "suche.info": {
- "domains": [
- "suche.info"
- ],
- "parameters": [
- "q"
- ]
- },
- "Google News": {
- "domains": [
- "news.google.ac",
- "news.google.ad",
- "news.google.ae",
- "news.google.am",
- "news.google.as",
- "news.google.at",
- "news.google.az",
- "news.google.ba",
- "news.google.be",
- "news.google.bf",
- "news.google.bg",
- "news.google.bi",
- "news.google.bj",
- "news.google.bs",
- "news.google.by",
- "news.google.ca",
- "news.google.cat",
- "news.google.cc",
- "news.google.cd",
- "news.google.cf",
- "news.google.cg",
- "news.google.ch",
- "news.google.ci",
- "news.google.cl",
- "news.google.cm",
- "news.google.cn",
- "news.google.co.bw",
- "news.google.co.ck",
- "news.google.co.cr",
- "news.google.co.id",
- "news.google.co.il",
- "news.google.co.in",
- "news.google.co.jp",
- "news.google.co.ke",
- "news.google.co.kr",
- "news.google.co.ls",
- "news.google.co.ma",
- "news.google.co.mz",
- "news.google.co.nz",
- "news.google.co.th",
- "news.google.co.tz",
- "news.google.co.ug",
- "news.google.co.uk",
- "news.google.co.uz",
- "news.google.co.ve",
- "news.google.co.vi",
- "news.google.co.za",
- "news.google.co.zm",
- "news.google.co.zw",
- "news.google.com",
- "news.google.com.af",
- "news.google.com.ag",
- "news.google.com.ai",
- "news.google.com.ar",
- "news.google.com.au",
- "news.google.com.bd",
- "news.google.com.bh",
- "news.google.com.bn",
- "news.google.com.bo",
- "news.google.com.br",
- "news.google.com.by",
- "news.google.com.bz",
- "news.google.com.co",
- "news.google.com.cu",
- "news.google.com.cy",
- "news.google.com.do",
- "news.google.com.ec",
- "news.google.com.eg",
- "news.google.com.et",
- "news.google.com.fj",
- "news.google.com.gh",
- "news.google.com.gi",
- "news.google.com.gt",
- "news.google.com.hk",
- "news.google.com.jm",
- "news.google.com.kh",
- "news.google.com.kh",
- "news.google.com.kw",
- "news.google.com.lb",
- "news.google.com.lc",
- "news.google.com.ly",
- "news.google.com.mt",
- "news.google.com.mx",
- "news.google.com.my",
- "news.google.com.na",
- "news.google.com.nf",
- "news.google.com.ng",
- "news.google.com.ni",
- "news.google.com.np",
- "news.google.com.om",
- "news.google.com.pa",
- "news.google.com.pe",
- "news.google.com.ph",
- "news.google.com.pk",
- "news.google.com.pr",
- "news.google.com.py",
- "news.google.com.qa",
- "news.google.com.sa",
- "news.google.com.sb",
- "news.google.com.sg",
- "news.google.com.sl",
- "news.google.com.sv",
- "news.google.com.tj",
- "news.google.com.tn",
- "news.google.com.tr",
- "news.google.com.tw",
- "news.google.com.ua",
- "news.google.com.uy",
- "news.google.com.vc",
- "news.google.com.vn",
- "news.google.cv",
- "news.google.cz",
- "news.google.de",
- "news.google.dj",
- "news.google.dk",
- "news.google.dm",
- "news.google.dz",
- "news.google.ee",
- "news.google.es",
- "news.google.fi",
- "news.google.fm",
- "news.google.fr",
- "news.google.ga",
- "news.google.gd",
- "news.google.ge",
- "news.google.gf",
- "news.google.gg",
- "news.google.gl",
- "news.google.gm",
- "news.google.gp",
- "news.google.gr",
- "news.google.gy",
- "news.google.hn",
- "news.google.hr",
- "news.google.ht",
- "news.google.hu",
- "news.google.ie",
- "news.google.im",
- "news.google.io",
- "news.google.iq",
- "news.google.is",
- "news.google.it",
- "news.google.it.ao",
- "news.google.je",
- "news.google.jo",
- "news.google.kg",
- "news.google.ki",
- "news.google.kz",
- "news.google.la",
- "news.google.li",
- "news.google.lk",
- "news.google.lt",
- "news.google.lu",
- "news.google.lv",
- "news.google.md",
- "news.google.me",
- "news.google.mg",
- "news.google.mk",
- "news.google.ml",
- "news.google.mn",
- "news.google.ms",
- "news.google.mu",
- "news.google.mv",
- "news.google.mw",
- "news.google.ne",
- "news.google.nl",
- "news.google.no",
- "news.google.nr",
- "news.google.nu",
- "news.google.pl",
- "news.google.pn",
- "news.google.ps",
- "news.google.pt",
- "news.google.ro",
- "news.google.rs",
- "news.google.ru",
- "news.google.rw",
- "news.google.sc",
- "news.google.se",
- "news.google.sh",
- "news.google.si",
- "news.google.sk",
- "news.google.sm",
- "news.google.sn",
- "news.google.so",
- "news.google.st",
- "news.google.td",
- "news.google.tg",
- "news.google.tk",
- "news.google.tl",
- "news.google.tm",
- "news.google.to",
- "news.google.tt",
- "news.google.us",
- "news.google.vg",
- "news.google.vu",
- "news.google.ws"
- ],
- "parameters": [
- "q"
- ]
- },
- "Zoohoo": {
- "domains": [
- "zoohoo.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Seznam": {
- "domains": [
- "search.seznam.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Online.no": {
- "domains": [
- "online.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Eurip": {
- "domains": [
- "www.eurip.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "all.by": {
- "domains": [
- "all.by"
- ],
- "parameters": [
- "query"
- ]
- },
- "Road Runner Search": {
- "domains": [
- "search.rr.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Opplysningen 1881": {
- "domains": [
- "www.1881.no"
- ],
- "parameters": [
- "Query"
- ]
- },
- "YouGoo": {
- "domains": [
- "www.yougoo.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "Bing Images": {
- "domains": [
- "bing.com/images/search",
- "www.bing.com/images/search"
- ],
- "parameters": [
- "q",
- "Q"
- ]
- },
- "Geona": {
- "domains": [
- "geona.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Nate": {
- "domains": [
- "search.nate.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "DuckDuckGo": {
- "domains": [
- "duckduckgo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Hotbot": {
- "domains": [
- "www.hotbot.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Kvasir": {
- "domains": [
- "www.kvasir.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Austronaut": {
- "domains": [
- "www2.austronaut.at",
- "www1.astronaut.at"
- ],
- "parameters": [
- "q"
- ]
- },
- "Excite": {
- "domains": [
- "search.excite.it",
- "search.excite.fr",
- "search.excite.de",
- "search.excite.co.uk",
- "serach.excite.es",
- "search.excite.nl",
- "msxml.excite.com",
- "www.excite.co.jp"
- ],
- "parameters": [
- "q",
- "search"
- ]
- },
- "qip": {
- "domains": [
- "search.qip.ru"
- ],
- "parameters": [
- "query"
- ]
- },
- "Certified-Toolbar": {
- "domains": [
- "search.certified-toolbar.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yahoo!": {
- "domains": [
- "search.yahoo.com",
- "yahoo.com",
- "ar.search.yahoo.com",
- "ar.yahoo.com",
- "au.search.yahoo.com",
- "au.yahoo.com",
- "br.search.yahoo.com",
- "br.yahoo.com",
- "cade.searchde.yahoo.com",
- "cade.yahoo.com",
- "chinese.searchinese.yahoo.com",
- "chinese.yahoo.com",
- "cn.search.yahoo.com",
- "cn.yahoo.com",
- "de.search.yahoo.com",
- "de.yahoo.com",
- "dk.search.yahoo.com",
- "dk.yahoo.com",
- "es.search.yahoo.com",
- "es.yahoo.com",
- "espanol.searchpanol.yahoo.com",
- "espanol.searchpanol.yahoo.com",
- "espanol.yahoo.com",
- "espanol.yahoo.com",
- "fr.search.yahoo.com",
- "fr.yahoo.com",
- "ie.search.yahoo.com",
- "ie.yahoo.com",
- "it.search.yahoo.com",
- "it.yahoo.com",
- "kr.search.yahoo.com",
- "kr.yahoo.com",
- "mx.search.yahoo.com",
- "mx.yahoo.com",
- "no.search.yahoo.com",
- "no.yahoo.com",
- "nz.search.yahoo.com",
- "nz.yahoo.com",
- "one.cn.yahoo.com",
- "one.searchn.yahoo.com",
- "qc.search.yahoo.com",
- "qc.search.yahoo.com",
- "qc.search.yahoo.com",
- "qc.yahoo.com",
- "qc.yahoo.com",
- "se.search.yahoo.com",
- "se.search.yahoo.com",
- "se.yahoo.com",
- "search.searcharch.yahoo.com",
- "search.yahoo.com",
- "uk.search.yahoo.com",
- "uk.yahoo.com",
- "www.yahoo.co.jp",
- "search.yahoo.co.jp",
- "www.cercato.it",
- "search.offerbox.com",
- "ys.mirostart.com"
- ],
- "parameters": [
- "p",
- "q"
- ]
- },
- "URL.ORGanizier": {
- "domains": [
- "www.url.org"
- ],
- "parameters": [
- "q"
- ]
- },
- "Witch": {
- "domains": [
- "www.witch.de"
- ],
- "parameters": [
- "search"
- ]
- },
- "Mister Wong": {
- "domains": [
- "www.mister-wong.com",
- "www.mister-wong.de"
- ],
- "parameters": [
- "Keywords"
- ]
- },
- "Aport": {
- "domains": [
- "sm.aport.ru"
- ],
- "parameters": [
- "r"
- ]
- },
- "Web.de": {
- "domains": [
- "suche.web.de"
- ],
- "parameters": [
- "su"
- ]
- },
- "Ask": {
- "domains": [
- "ask.com",
- "www.ask.com",
- "web.ask.com",
- "int.ask.com",
- "mws.ask.com",
- "uk.ask.com",
- "images.ask.com",
- "ask.reference.com",
- "www.askkids.com",
- "iwon.ask.com",
- "www.ask.co.uk",
- "www.qbyrd.com",
- "search-results.com",
- "uk.search-results.com",
- "www.search-results.com",
- "int.search-results.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Centrum": {
- "domains": [
- "serach.centrum.cz",
- "morfeo.centrum.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Everyclick": {
- "domains": [
- "www.everyclick.com"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Google Video": {
- "domains": [
- "video.google.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Delfi": {
- "domains": [
- "otsing.delfi.ee"
- ],
- "parameters": [
- "q"
- ]
- },
- "blekko": {
- "domains": [
- "blekko.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Jyxo": {
- "domains": [
- "jyxo.1188.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Kataweb": {
- "domains": [
- "www.kataweb.it"
- ],
- "parameters": [
- "q"
- ]
- },
- "uol.com.br": {
- "domains": [
- "busca.uol.com.br"
- ],
- "parameters": [
- "q"
- ]
- },
- "Arianna": {
- "domains": [
- "arianna.libero.it",
- "www.arianna.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Mamma": {
- "domains": [
- "www.mamma.com",
- "mamma75.mamma.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Yatedo": {
- "domains": [
- "www.yatedo.com",
- "www.yatedo.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "Twingly": {
- "domains": [
- "www.twingly.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Delfi latvia": {
- "domains": [
- "smart.delfi.lv"
- ],
- "parameters": [
- "q"
- ]
- },
- "PriceRunner": {
- "domains": [
- "www.pricerunner.co.uk"
- ],
- "parameters": [
- "q"
- ]
- },
- "Rakuten": {
- "domains": [
- "websearch.rakuten.co.jp"
- ],
- "parameters": [
- "qt"
- ]
- },
- "Google": {
- "domains": [
- "www.google.com",
- "www.google.ac",
- "www.google.ad",
- "www.google.com.af",
- "www.google.com.ag",
- "www.google.com.ai",
- "www.google.am",
- "www.google.it.ao",
- "www.google.com.ar",
- "www.google.as",
- "www.google.at",
- "www.google.com.au",
- "www.google.az",
- "www.google.ba",
- "www.google.com.bd",
- "www.google.be",
- "www.google.bf",
- "www.google.bg",
- "www.google.com.bh",
- "www.google.bi",
- "www.google.bj",
- "www.google.com.bn",
- "www.google.com.bo",
- "www.google.com.br",
- "www.google.bs",
- "www.google.co.bw",
- "www.google.com.by",
- "www.google.by",
- "www.google.com.bz",
- "www.google.ca",
- "www.google.com.kh",
- "www.google.cc",
- "www.google.cd",
- "www.google.cf",
- "www.google.cat",
- "www.google.cg",
- "www.google.ch",
- "www.google.ci",
- "www.google.co.ck",
- "www.google.cl",
- "www.google.cm",
- "www.google.cn",
- "www.google.com.co",
- "www.google.co.cr",
- "www.google.com.cu",
- "www.google.cv",
- "www.google.com.cy",
- "www.google.cz",
- "www.google.de",
- "www.google.dj",
- "www.google.dk",
- "www.google.dm",
- "www.google.com.do",
- "www.google.dz",
- "www.google.com.ec",
- "www.google.ee",
- "www.google.com.eg",
- "www.google.es",
- "www.google.com.et",
- "www.google.fi",
- "www.google.com.fj",
- "www.google.fm",
- "www.google.fr",
- "www.google.ga",
- "www.google.gd",
- "www.google.ge",
- "www.google.gf",
- "www.google.gg",
- "www.google.com.gh",
- "www.google.com.gi",
- "www.google.gl",
- "www.google.gm",
- "www.google.gp",
- "www.google.gr",
- "www.google.com.gt",
- "www.google.gy",
- "www.google.com.hk",
- "www.google.hn",
- "www.google.hr",
- "www.google.ht",
- "www.google.hu",
- "www.google.co.id",
- "www.google.iq",
- "www.google.ie",
- "www.google.co.il",
- "www.google.im",
- "www.google.co.in",
- "www.google.io",
- "www.google.is",
- "www.google.it",
- "www.google.je",
- "www.google.com.jm",
- "www.google.jo",
- "www.google.co.jp",
- "www.google.co.ke",
- "www.google.com.kh",
- "www.google.ki",
- "www.google.kg",
- "www.google.co.kr",
- "www.google.com.kw",
- "www.google.kz",
- "www.google.la",
- "www.google.com.lb",
- "www.google.com.lc",
- "www.google.li",
- "www.google.lk",
- "www.google.co.ls",
- "www.google.lt",
- "www.google.lu",
- "www.google.lv",
- "www.google.com.ly",
- "www.google.co.ma",
- "www.google.md",
- "www.google.me",
- "www.google.mg",
- "www.google.mk",
- "www.google.ml",
- "www.google.mn",
- "www.google.ms",
- "www.google.com.mt",
- "www.google.mu",
- "www.google.mv",
- "www.google.mw",
- "www.google.com.mx",
- "www.google.com.my",
- "www.google.co.mz",
- "www.google.com.na",
- "www.google.ne",
- "www.google.com.nf",
- "www.google.com.ng",
- "www.google.com.ni",
- "www.google.nl",
- "www.google.no",
- "www.google.com.np",
- "www.google.nr",
- "www.google.nu",
- "www.google.co.nz",
- "www.google.com.om",
- "www.google.com.pa",
- "www.google.com.pe",
- "www.google.com.ph",
- "www.google.com.pk",
- "www.google.pl",
- "www.google.pn",
- "www.google.com.pr",
- "www.google.ps",
- "www.google.pt",
- "www.google.com.py",
- "www.google.com.qa",
- "www.google.ro",
- "www.google.rs",
- "www.google.ru",
- "www.google.rw",
- "www.google.com.sa",
- "www.google.com.sb",
- "www.google.sc",
- "www.google.se",
- "www.google.com.sg",
- "www.google.sh",
- "www.google.si",
- "www.google.sk",
- "www.google.com.sl",
- "www.google.sn",
- "www.google.sm",
- "www.google.so",
- "www.google.st",
- "www.google.com.sv",
- "www.google.td",
- "www.google.tg",
- "www.google.co.th",
- "www.google.com.tj",
- "www.google.tk",
- "www.google.tl",
- "www.google.tm",
- "www.google.to",
- "www.google.com.tn",
- "www.google.com.tr",
- "www.google.tt",
- "www.google.com.tw",
- "www.google.co.tz",
- "www.google.com.ua",
- "www.google.co.ug",
- "www.google.ae",
- "www.google.co.uk",
- "www.google.us",
- "www.google.com.uy",
- "www.google.co.uz",
- "www.google.com.vc",
- "www.google.co.ve",
- "www.google.vg",
- "www.google.co.vi",
- "www.google.com.vn",
- "www.google.vu",
- "www.google.ws",
- "www.google.co.za",
- "www.google.co.zm",
- "www.google.co.zw",
- "google.com",
- "google.ac",
- "google.ad",
- "google.com.af",
- "google.com.ag",
- "google.com.ai",
- "google.am",
- "google.it.ao",
- "google.com.ar",
- "google.as",
- "google.at",
- "google.com.au",
- "google.az",
- "google.ba",
- "google.com.bd",
- "google.be",
- "google.bf",
- "google.bg",
- "google.com.bh",
- "google.bi",
- "google.bj",
- "google.com.bn",
- "google.com.bo",
- "google.com.br",
- "google.bs",
- "google.co.bw",
- "google.com.by",
- "google.by",
- "google.com.bz",
- "google.ca",
- "google.com.kh",
- "google.cc",
- "google.cd",
- "google.cf",
- "google.cat",
- "google.cg",
- "google.ch",
- "google.ci",
- "google.co.ck",
- "google.cl",
- "google.cm",
- "google.cn",
- "google.com.co",
- "google.co.cr",
- "google.com.cu",
- "google.cv",
- "google.com.cy",
- "google.cz",
- "google.de",
- "google.dj",
- "google.dk",
- "google.dm",
- "google.com.do",
- "google.dz",
- "google.com.ec",
- "google.ee",
- "google.com.eg",
- "google.es",
- "google.com.et",
- "google.fi",
- "google.com.fj",
- "google.fm",
- "google.fr",
- "google.ga",
- "google.gd",
- "google.ge",
- "google.gf",
- "google.gg",
- "google.com.gh",
- "google.com.gi",
- "google.gl",
- "google.gm",
- "google.gp",
- "google.gr",
- "google.com.gt",
- "google.gy",
- "google.com.hk",
- "google.hn",
- "google.hr",
- "google.ht",
- "google.hu",
- "google.co.id",
- "google.iq",
- "google.ie",
- "google.co.il",
- "google.im",
- "google.co.in",
- "google.io",
- "google.is",
- "google.it",
- "google.je",
- "google.com.jm",
- "google.jo",
- "google.co.jp",
- "google.co.ke",
- "google.com.kh",
- "google.ki",
- "google.kg",
- "google.co.kr",
- "google.com.kw",
- "google.kz",
- "google.la",
- "google.com.lb",
- "google.com.lc",
- "google.li",
- "google.lk",
- "google.co.ls",
- "google.lt",
- "google.lu",
- "google.lv",
- "google.com.ly",
- "google.co.ma",
- "google.md",
- "google.me",
- "google.mg",
- "google.mk",
- "google.ml",
- "google.mn",
- "google.ms",
- "google.com.mt",
- "google.mu",
- "google.mv",
- "google.mw",
- "google.com.mx",
- "google.com.my",
- "google.co.mz",
- "google.com.na",
- "google.ne",
- "google.com.nf",
- "google.com.ng",
- "google.com.ni",
- "google.nl",
- "google.no",
- "google.com.np",
- "google.nr",
- "google.nu",
- "google.co.nz",
- "google.com.om",
- "google.com.pa",
- "google.com.pe",
- "google.com.ph",
- "google.com.pk",
- "google.pl",
- "google.pn",
- "google.com.pr",
- "google.ps",
- "google.pt",
- "google.com.py",
- "google.com.qa",
- "google.ro",
- "google.rs",
- "google.ru",
- "google.rw",
- "google.com.sa",
- "google.com.sb",
- "google.sc",
- "google.se",
- "google.com.sg",
- "google.sh",
- "google.si",
- "google.sk",
- "google.com.sl",
- "google.sn",
- "google.sm",
- "google.so",
- "google.st",
- "google.com.sv",
- "google.td",
- "google.tg",
- "google.co.th",
- "google.com.tj",
- "google.tk",
- "google.tl",
- "google.tm",
- "google.to",
- "google.com.tn",
- "google.com.tr",
- "google.tt",
- "google.com.tw",
- "google.co.tz",
- "google.com.ua",
- "google.co.ug",
- "google.ae",
- "google.co.uk",
- "google.us",
- "google.com.uy",
- "google.co.uz",
- "google.com.vc",
- "google.co.ve",
- "google.vg",
- "google.co.vi",
- "google.com.vn",
- "google.vu",
- "google.ws",
- "google.co.za",
- "google.co.zm",
- "google.co.zw",
- "search.avg.com",
- "isearch.avg.com",
- "www.cnn.com",
- "darkoogle.com",
- "search.darkoogle.com",
- "search.foxtab.com",
- "www.gooofullsearch.com",
- "search.hiyo.com",
- "search.incredimail.com",
- "search1.incredimail.com",
- "search2.incredimail.com",
- "search3.incredimail.com",
- "search4.incredimail.com",
- "search.incredibar.com",
- "search.sweetim.com",
- "www.fastweb.it",
- "search.juno.com",
- "find.tdc.dk",
- "searchresults.verizon.com",
- "search.walla.co.il",
- "search.alot.com",
- "www.googleearth.de",
- "www.googleearth.fr",
- "webcache.googleusercontent.com",
- "encrypted.google.com",
- "googlesyndicatedsearch.com"
- ],
- "parameters": [
- "q",
- "query",
- "Keywords"
- ]
- },
- "Google Blogsearch": {
- "domains": [
- "blogsearch.google.ac",
- "blogsearch.google.ad",
- "blogsearch.google.ae",
- "blogsearch.google.am",
- "blogsearch.google.as",
- "blogsearch.google.at",
- "blogsearch.google.az",
- "blogsearch.google.ba",
- "blogsearch.google.be",
- "blogsearch.google.bf",
- "blogsearch.google.bg",
- "blogsearch.google.bi",
- "blogsearch.google.bj",
- "blogsearch.google.bs",
- "blogsearch.google.by",
- "blogsearch.google.ca",
- "blogsearch.google.cat",
- "blogsearch.google.cc",
- "blogsearch.google.cd",
- "blogsearch.google.cf",
- "blogsearch.google.cg",
- "blogsearch.google.ch",
- "blogsearch.google.ci",
- "blogsearch.google.cl",
- "blogsearch.google.cm",
- "blogsearch.google.cn",
- "blogsearch.google.co.bw",
- "blogsearch.google.co.ck",
- "blogsearch.google.co.cr",
- "blogsearch.google.co.id",
- "blogsearch.google.co.il",
- "blogsearch.google.co.in",
- "blogsearch.google.co.jp",
- "blogsearch.google.co.ke",
- "blogsearch.google.co.kr",
- "blogsearch.google.co.ls",
- "blogsearch.google.co.ma",
- "blogsearch.google.co.mz",
- "blogsearch.google.co.nz",
- "blogsearch.google.co.th",
- "blogsearch.google.co.tz",
- "blogsearch.google.co.ug",
- "blogsearch.google.co.uk",
- "blogsearch.google.co.uz",
- "blogsearch.google.co.ve",
- "blogsearch.google.co.vi",
- "blogsearch.google.co.za",
- "blogsearch.google.co.zm",
- "blogsearch.google.co.zw",
- "blogsearch.google.com",
- "blogsearch.google.com.af",
- "blogsearch.google.com.ag",
- "blogsearch.google.com.ai",
- "blogsearch.google.com.ar",
- "blogsearch.google.com.au",
- "blogsearch.google.com.bd",
- "blogsearch.google.com.bh",
- "blogsearch.google.com.bn",
- "blogsearch.google.com.bo",
- "blogsearch.google.com.br",
- "blogsearch.google.com.by",
- "blogsearch.google.com.bz",
- "blogsearch.google.com.co",
- "blogsearch.google.com.cu",
- "blogsearch.google.com.cy",
- "blogsearch.google.com.do",
- "blogsearch.google.com.ec",
- "blogsearch.google.com.eg",
- "blogsearch.google.com.et",
- "blogsearch.google.com.fj",
- "blogsearch.google.com.gh",
- "blogsearch.google.com.gi",
- "blogsearch.google.com.gt",
- "blogsearch.google.com.hk",
- "blogsearch.google.com.jm",
- "blogsearch.google.com.kh",
- "blogsearch.google.com.kh",
- "blogsearch.google.com.kw",
- "blogsearch.google.com.lb",
- "blogsearch.google.com.lc",
- "blogsearch.google.com.ly",
- "blogsearch.google.com.mt",
- "blogsearch.google.com.mx",
- "blogsearch.google.com.my",
- "blogsearch.google.com.na",
- "blogsearch.google.com.nf",
- "blogsearch.google.com.ng",
- "blogsearch.google.com.ni",
- "blogsearch.google.com.np",
- "blogsearch.google.com.om",
- "blogsearch.google.com.pa",
- "blogsearch.google.com.pe",
- "blogsearch.google.com.ph",
- "blogsearch.google.com.pk",
- "blogsearch.google.com.pr",
- "blogsearch.google.com.py",
- "blogsearch.google.com.qa",
- "blogsearch.google.com.sa",
- "blogsearch.google.com.sb",
- "blogsearch.google.com.sg",
- "blogsearch.google.com.sl",
- "blogsearch.google.com.sv",
- "blogsearch.google.com.tj",
- "blogsearch.google.com.tn",
- "blogsearch.google.com.tr",
- "blogsearch.google.com.tw",
- "blogsearch.google.com.ua",
- "blogsearch.google.com.uy",
- "blogsearch.google.com.vc",
- "blogsearch.google.com.vn",
- "blogsearch.google.cv",
- "blogsearch.google.cz",
- "blogsearch.google.de",
- "blogsearch.google.dj",
- "blogsearch.google.dk",
- "blogsearch.google.dm",
- "blogsearch.google.dz",
- "blogsearch.google.ee",
- "blogsearch.google.es",
- "blogsearch.google.fi",
- "blogsearch.google.fm",
- "blogsearch.google.fr",
- "blogsearch.google.ga",
- "blogsearch.google.gd",
- "blogsearch.google.ge",
- "blogsearch.google.gf",
- "blogsearch.google.gg",
- "blogsearch.google.gl",
- "blogsearch.google.gm",
- "blogsearch.google.gp",
- "blogsearch.google.gr",
- "blogsearch.google.gy",
- "blogsearch.google.hn",
- "blogsearch.google.hr",
- "blogsearch.google.ht",
- "blogsearch.google.hu",
- "blogsearch.google.ie",
- "blogsearch.google.im",
- "blogsearch.google.io",
- "blogsearch.google.iq",
- "blogsearch.google.is",
- "blogsearch.google.it",
- "blogsearch.google.it.ao",
- "blogsearch.google.je",
- "blogsearch.google.jo",
- "blogsearch.google.kg",
- "blogsearch.google.ki",
- "blogsearch.google.kz",
- "blogsearch.google.la",
- "blogsearch.google.li",
- "blogsearch.google.lk",
- "blogsearch.google.lt",
- "blogsearch.google.lu",
- "blogsearch.google.lv",
- "blogsearch.google.md",
- "blogsearch.google.me",
- "blogsearch.google.mg",
- "blogsearch.google.mk",
- "blogsearch.google.ml",
- "blogsearch.google.mn",
- "blogsearch.google.ms",
- "blogsearch.google.mu",
- "blogsearch.google.mv",
- "blogsearch.google.mw",
- "blogsearch.google.ne",
- "blogsearch.google.nl",
- "blogsearch.google.no",
- "blogsearch.google.nr",
- "blogsearch.google.nu",
- "blogsearch.google.pl",
- "blogsearch.google.pn",
- "blogsearch.google.ps",
- "blogsearch.google.pt",
- "blogsearch.google.ro",
- "blogsearch.google.rs",
- "blogsearch.google.ru",
- "blogsearch.google.rw",
- "blogsearch.google.sc",
- "blogsearch.google.se",
- "blogsearch.google.sh",
- "blogsearch.google.si",
- "blogsearch.google.sk",
- "blogsearch.google.sm",
- "blogsearch.google.sn",
- "blogsearch.google.so",
- "blogsearch.google.st",
- "blogsearch.google.td",
- "blogsearch.google.tg",
- "blogsearch.google.tk",
- "blogsearch.google.tl",
- "blogsearch.google.tm",
- "blogsearch.google.to",
- "blogsearch.google.tt",
- "blogsearch.google.us",
- "blogsearch.google.vg",
- "blogsearch.google.vu",
- "blogsearch.google.ws"
- ],
- "parameters": [
- "q"
- ]
- },
- "Hooseek.com": {
- "domains": [
- "www.hooseek.com"
- ],
- "parameters": [
- "recherche"
- ]
- },
- "Dalesearch": {
- "domains": [
- "www.dalesearch.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Alice Adsl": {
- "domains": [
- "rechercher.aliceadsl.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "T-Online": {
- "domains": [
- "suche.t-online.de",
- "brisbane.t-online.de",
- "navigationshilfe.t-online.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "soso.com": {
- "domains": [
- "www.soso.com"
- ],
- "parameters": [
- "w"
- ]
- },
- "Sogou": {
- "domains": [
- "www.sougou.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Hit-Parade": {
- "domains": [
- "req.-hit-parade.com",
- "class.hit-parade.com",
- "www.hit-parade.com"
- ],
- "parameters": [
- "p7"
- ]
- },
- "SearchCanvas": {
- "domains": [
- "www.searchcanvas.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Interia": {
- "domains": [
- "www.google.interia.pl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Genieo": {
- "domains": [
- "search.genieo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Tiscali": {
- "domains": [
- "search.tiscali.it",
- "search-dyn.tiscali.it",
- "hledani.tiscali.cz"
- ],
- "parameters": [
- "q",
- "key"
- ]
- },
- "Clix": {
- "domains": [
- "pesquisa.clix.pt"
- ],
- "parameters": [
- "question"
- ]
- }
- },
- "email": {
- "Bigpond": {
- "domains": [
- "webmail.bigpond.com",
- "webmail2.bigpond.com"
- ]
- },
- "Naver Mail": {
- "domains": [
- "mail.naver.com"
- ]
- },
- "Optus Zoo": {
- "domains": [
- "webmail.optuszoo.com.au"
- ]
- },
- "Seznam Mail": {
- "domains": [
- "email.seznam.cz"
- ]
- },
- "126 Mail": {
- "domains": [
- "mail.126.com"
- ]
- },
- "Outlook.com": {
- "domains": [
- "mail.live.com"
- ]
- },
- "AOL Mail": {
- "domains": [
- "mail.aol.com"
- ]
- },
- "Daum Mail": {
- "domains": [
- "mail2.daum.net"
- ]
- },
- "Yahoo! Mail": {
- "domains": [
- "mail.yahoo.net",
- "mail.yahoo.com",
- "mail.yahoo.co.uk",
- "mail.yahoo.co.jp"
- ]
- },
- "163 Mail": {
- "domains": [
- "mail.163.com"
- ]
- },
- "Orange Webmail": {
- "domains": [
- "orange.fr/webmail"
- ]
- },
- "QQ Mail": {
- "domains": [
- "mail.qq.com"
- ]
- },
- "Mynet Mail": {
- "domains": [
- "mail.mynet.com"
- ]
- },
- "Gmail": {
- "domains": [
- "mail.google.com"
- ]
- }
- },
- "social": {
- "hi5": {
- "domains": [
- "hi5.com"
- ]
- },
- "Friendster": {
- "domains": [
- "friendster.com"
- ]
- },
- "Weibo": {
- "domains": [
- "weibo.com",
- "t.cn"
- ]
- },
- "Xanga": {
- "domains": [
- "xanga.com"
- ]
- },
- "Myspace": {
- "domains": [
- "myspace.com"
- ]
- },
- "Buzznet": {
- "domains": [
- "wayn.com"
- ]
- },
- "MyLife": {
- "domains": [
- "mylife.ru"
- ]
- },
- "Flickr": {
- "domains": [
- "flickr.com"
- ]
- },
- "Sonico.com": {
- "domains": [
- "sonico.com"
- ]
- },
- "Odnoklassniki": {
- "domains": [
- "odnoklassniki.ru"
- ]
- },
- "GitHub": {
- "domains": [
- "github.com"
- ]
- },
- "Classmates": {
- "domains": [
- "classmates.com"
- ]
- },
- "Friends Reunited": {
- "domains": [
- "friendsreunited.com"
- ]
- },
- "Renren": {
- "domains": [
- "renren.com"
- ]
- },
- "Quora": {
- "domains": [
- "quora.com"
- ]
- },
- "Gaia Online": {
- "domains": [
- "gaiaonline.com"
- ]
- },
- "Netlog": {
- "domains": [
- "netlog.com"
- ]
- },
- "Orkut": {
- "domains": [
- "orkut.com"
- ]
- },
- "MyHeritage": {
- "domains": [
- "myheritage.com"
- ]
- },
- "Multiply": {
- "domains": [
- "multiply.com"
- ]
- },
- "myYearbook": {
- "domains": [
- "myyearbook.com"
- ]
- },
- "WeeWorld": {
- "domains": [
- "weeworld.com"
- ]
- },
- "Vimeo": {
- "domains": [
- "vimeo.com"
- ]
- },
- "Eksi Sozluk": {
- "domains": [
- "Sozluk.com",
- "sourtimes.org"
- ]
- },
- "Geni": {
- "domains": [
- "geni.com"
- ]
- },
- "Uludag Sozluk": {
- "domains": [
- "uludagsozluk.com",
- "ulusozluk.com"
- ]
- },
- "SourceForge": {
- "domains": [
- "sourceforge.net"
- ]
- },
- "Plaxo": {
- "domains": [
- "plaxo.com"
- ]
- },
- "Taringa!": {
- "domains": [
- "taringa.net"
- ]
- },
- "Tagged": {
- "domains": [
- "login.tagged.com"
- ]
- },
- "XING": {
- "domains": [
- "xing.com"
- ]
- },
- "Instagram": {
- "domains": [
- "instagram.com"
- ]
- },
- "Vkontakte": {
- "domains": [
- "vk.com",
- "vkontakte.ru"
- ]
- },
- "Twitter": {
- "domains": [
- "twitter.com",
- "t.co"
- ]
- },
- "vKruguDruzei.ru": {
- "domains": [
- "vkrugudruzei.ru"
- ]
- },
- "Donanimhaber": {
- "domains": [
- "donanimhaber.com"
- ]
- },
- "WAYN": {
- "domains": [
- "wayn.com"
- ]
- },
- "Tuenti": {
- "domains": [
- "tuenti.com"
- ]
- },
- "Mail.ru": {
- "domains": [
- "my.mail.ru"
- ]
- },
- "Badoo": {
- "domains": [
- "badoo.com"
- ]
- },
- "Instela": {
- "domains": [
- "instela.com"
- ]
- },
- "Habbo": {
- "domains": [
- "habbo.com"
- ]
- },
- "Pinterest": {
- "domains": [
- "pinterest.com"
- ]
- },
- "LinkedIn": {
- "domains": [
- "linkedin.com",
- "lnkd.in"
- ]
- },
- "Foursquare": {
- "domains": [
- "foursquare.com"
- ]
- },
- "Flixster": {
- "domains": [
- "flixster.com"
- ]
- },
- "Windows Live Spaces": {
- "domains": [
- "login.live.com"
- ]
- },
- "BlackPlanet": {
- "domains": [
- "blackplanet.com"
- ]
- },
- "Cyworld": {
- "domains": [
- "global.cyworld.com"
- ]
- },
- "Pocket": {
- "domains": [
- "itusozluk.com"
- ],
- "ITU Sozluk": null
- },
- "Skyrock": {
- "domains": [
- "skyrock.com"
- ]
- },
- "Facebook": {
- "domains": [
- "facebook.com",
- "fb.me",
- "m.facebook.com",
- "l.facebook.com",
- "lm.facebook.com"
- ]
- },
- "Disqus": {
- "domains": [
- "redirect.disqus.com",
- "disq.us",
- "disqus.com"
- ]
- },
- "StudiVZ": {
- "domains": [
- "studivz.net"
- ]
- },
- "Fotolog": {
- "domains": [
- "fotolog.com"
- ]
- },
- "Google+": {
- "domains": [
- "url.google.com",
- "plus.google.com"
- ]
- },
- "Nasza-klasa.pl": {
- "domains": [
- "nk.pl"
- ]
- },
- "Qzone": {
- "domains": [
- "qzone.qq.com"
- ]
- },
- "Douban": {
- "domains": [
- "douban.com"
- ]
- },
- "Bebo": {
- "domains": [
- "bebo.com"
- ]
- },
- "Youtube": {
- "domains": [
- "youtube.com",
- "youtu.be"
- ]
- },
- "Reddit": {
- "domains": [
- "reddit.com"
- ]
- },
- "Identi.ca": {
- "domains": [
- "identi.ca"
- ]
- },
- "StackOverflow": {
- "domains": [
- "stackoverflow.com"
- ]
- },
- "Mixi": {
- "domains": [
- "mixi.jp"
- ]
- },
- "StumbleUpon": {
- "domains": [
- "stumbleupon.com"
- ]
- },
- "Inci Sozluk": {
- "domains": [
- "inci.sozlukspot.com",
- "incisozluk.com",
- "incisozluk.cc"
- ]
- },
- "Viadeo": {
- "domains": [
- "viadeo.com"
- ]
- },
- "Last.fm": {
- "domains": [
- "lastfm.ru"
- ]
- },
- "LiveJournal": {
- "domains": [
- "livejournal.ru"
- ]
- },
- "Tumblr": {
- "domains": [
- "tumblr.com"
- ]
- },
- "Hacker News": {
- "domains": [
- "news.ycombinator.com"
- ]
- },
- "Hocam.com": {
- "domains": [
- "hocam.com"
- ]
- },
- "Delicious": {
- "domains": [
- "delicious.com"
- ]
- },
- "Hyves": {
- "domains": [
- "hyves.nl"
- ]
- },
- "Paper.li": {
- "domains": [
- "paper.li"
- ]
- },
- "MoiKrug.ru": {
- "domains": [
- "moikrug.ru"
- ]
- }
- }
-}
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/nodejs/data/referers.yml b/vendor/snowplow/referer-parser/nodejs/data/referers.yml
deleted file mode 100644
index e1ecf54f7..000000000
--- a/vendor/snowplow/referer-parser/nodejs/data/referers.yml
+++ /dev/null
@@ -1,3621 +0,0 @@
-# #######################################################################################################
-#
-# ALL SUPPORTED REFERERS
-#
-# Broken down into:
-#
-# 1. Medium-unknown providers
-# 2. Email providers
-# 3. Social providers
-# 4. Search providers
-
-
-# #######################################################################################################
-#
-# MEDIUM-UNKNOWN PROVIDERS
-#
-# We know the source, but not the medium.
-# This section is useful for reducing false positives in the other sections
-
-unknown:
-
- Google:
- domains:
- - support.google.com
- - developers.google.com
- - maps.google.com
- - accounts.google.com
- - drive.google.com
- - sites.google.com
- - groups.google.com
- - groups.google.co.uk
- - news.google.co.uk
-
- Yahoo!:
- domains:
- - finance.yahoo.com
- - news.yahoo.com
- - eurosport.yahoo.com
- - sports.yahoo.com
- - astrology.yahoo.com
- - travel.yahoo.com
- - answers.yahoo.com
- - screen.yahoo.com
- - weather.yahoo.com
- - messenger.yahoo.com
- - games.yahoo.com
- - shopping.yahoo.net
- - movies.yahoo.com
- - cars.yahoo.com
- - lifestyle.yahoo.com
- - omg.yahoo.com
- - match.yahoo.net
-
- Taboola:
- domains:
- - trc.taboola.com
- - api.taboola.com
-
- Outbrain:
- domains:
- - paid.outbrain.com
-
-
-# #######################################################################################################
-#
-# EMAIL PROVIDERS
-
-email:
-
- 126 Mail:
- domains:
- - mail.126.com
-
- 163 Mail:
- domains:
- - mail.163.com
-
- AOL Mail:
- domains:
- - mail.aol.com
-
- Bigpond:
- domains:
- - webmail.bigpond.com
- - webmail2.bigpond.com
-
- Daum Mail:
- domains:
- - mail2.daum.net
-
- Gmail:
- domains:
- - mail.google.com
-
- Naver Mail:
- domains:
- - mail.naver.com
-
- Optus Zoo:
- domains:
- - webmail.optuszoo.com.au
-
- Orange Webmail:
- domains:
- - orange.fr/webmail
-
- Outlook.com:
- domains:
- - mail.live.com
-
- QQ Mail:
- domains:
- - mail.qq.com
-
- Seznam Mail:
- domains:
- - email.seznam.cz
-
- Yahoo! Mail:
- domains:
- - mail.yahoo.net
- - mail.yahoo.com
- - mail.yahoo.co.uk
- - mail.yahoo.co.jp
-
- Mynet Mail:
- domains:
- - mail.mynet.com
-
-
-# #######################################################################################################
-#
-# SOCIAL PROVIDERS
-
-social:
-
- Facebook:
- domains:
- - facebook.com
- - fb.me
- - m.facebook.com
- - l.facebook.com
- - lm.facebook.com
-
- Qzone:
- domains:
- - qzone.qq.com
-
- Habbo:
- domains:
- - habbo.com
-
- Twitter:
- domains:
- - twitter.com
- - t.co
-
- Instagram:
- domains:
- - instagram.com
-
- Youtube:
- domains:
- - youtube.com
- - youtu.be
-
- Vimeo:
- domains:
- - vimeo.com
-
- Renren:
- domains:
- - renren.com
-
- Windows Live Spaces:
- domains:
- - login.live.com
-
- LinkedIn:
- domains:
- - linkedin.com
- - lnkd.in
-
- Bebo:
- domains:
- - bebo.com
-
- Vkontakte:
- domains:
- - vk.com
- - vkontakte.ru
-
- Tagged:
- domains:
- - login.tagged.com
-
- Orkut:
- domains:
- - orkut.com
-
- Myspace:
- domains:
- - myspace.com
-
- Friendster:
- domains:
- - friendster.com
-
- Badoo:
- domains:
- - badoo.com
-
- hi5:
- domains:
- - hi5.com
-
- Netlog:
- domains:
- - netlog.com
-
- Flixster:
- domains:
- - flixster.com
-
- MyLife:
- domains:
- - mylife.ru
-
- Paper.li:
- domains:
- - paper.li
-
- Classmates:
- domains:
- - classmates.com
-
- GitHub:
- domains:
- - github.com
-
- Google+:
- domains:
- - url.google.com
- - plus.google.com
-
- Douban:
- domains:
- - douban.com
-
- Odnoklassniki:
- domains:
- - odnoklassniki.ru
-
- Viadeo:
- domains:
- - viadeo.com
-
- Flickr:
- domains:
- - flickr.com
-
- WeeWorld:
- domains:
- - weeworld.com
-
- Last.fm:
- domains:
- - lastfm.ru
-
- MyHeritage:
- domains:
- - myheritage.com
-
- Xanga:
- domains:
- - xanga.com
-
- Mixi:
- domains:
- - mixi.jp
-
- Cyworld:
- domains:
- - global.cyworld.com
-
- Gaia Online:
- domains:
- - gaiaonline.com
-
- Skyrock:
- domains:
- - skyrock.com
-
- BlackPlanet:
- domains:
- - blackplanet.com
-
- myYearbook:
- domains:
- - myyearbook.com
-
- Fotolog:
- domains:
- - fotolog.com
-
- Friends Reunited:
- domains:
- - friendsreunited.com
-
- LiveJournal:
- domains:
- - livejournal.ru
-
- StudiVZ:
- domains:
- - studivz.net
-
- StackOverflow:
- domains:
- - stackoverflow.com
-
- Sonico.com:
- domains:
- - sonico.com
-
- Pinterest:
- domains:
- - pinterest.com
-
- Plaxo:
- domains:
- - plaxo.com
-
- Geni:
- domains:
- - geni.com
-
- Tuenti:
- domains:
- - tuenti.com
-
- XING:
- domains:
- - xing.com
-
- Taringa!:
- domains:
- - taringa.net
-
- Tumblr:
- domains:
- - tumblr.com
-
- Nasza-klasa.pl:
- domains:
- - nk.pl
-
- StumbleUpon:
- domains:
- - stumbleupon.com
-
- SourceForge:
- domains:
- - sourceforge.net
-
- Hyves:
- domains:
- - hyves.nl
-
- WAYN:
- domains:
- - wayn.com
-
- Buzznet:
- domains:
- - wayn.com
-
- Multiply:
- domains:
- - multiply.com
-
- Foursquare:
- domains:
- - foursquare.com
-
- vKruguDruzei.ru:
- domains:
- - vkrugudruzei.ru
-
- Mail.ru:
- domains:
- - my.mail.ru
-
- MoiKrug.ru:
- domains:
- - moikrug.ru
-
- Reddit:
- domains:
- - reddit.com
-
- Hacker News:
- domains:
- - news.ycombinator.com
-
- Identi.ca:
- domains:
- - identi.ca
-
- Weibo:
- domains:
- - weibo.com
- - t.cn
-
- Delicious:
- domains:
- - delicious.com
-
- Pocket:
- domains:
- - getpocket.com
-
- ITU Sozluk:
- domains:
- - itusozluk.com
-
- Instela:
- domains:
- - instela.com
-
- Eksi Sozluk:
- domains:
- - Sozluk.com
- - sourtimes.org
-
- Uludag Sozluk:
- domains:
- - uludagsozluk.com
- - ulusozluk.com
-
- Inci Sozluk:
- domains:
- - inci.sozlukspot.com
- - incisozluk.com
- - incisozluk.cc
-
- Hocam.com:
- domains:
- - hocam.com
-
- Donanimhaber:
- domains:
- - donanimhaber.com
-
- Disqus:
- domains:
- - redirect.disqus.com
- - disq.us
- - disqus.com
-
- Quora:
- domains:
- - quora.com
-
-# #######################################################################################################
-#
-# SEARCH PROVIDERS
-
-search:
-
- 1.cz:
- parameters:
- - q
- domains:
- - 1.cz
-
- # 123people TODO
-
- 1und1:
- parameters:
- - su
- domains:
- - search.1und1.de
-
- 360.cn:
- parameters:
- - q
- domains:
- - so.360.cn
- - www.so.com
-
- Abacho:
- parameters:
- - q
- domains:
- - www.abacho.de
- - www.abacho.com
- - www.abacho.co.uk
- - www.se.abacho.com
- - www.tr.abacho.com
- - www.abacho.at
- - www.abacho.fr
- - www.abacho.es
- - www.abacho.ch
- - www.abacho.it
-
- ABCsøk:
- parameters:
- - q
- domains:
- - abcsolk.no
- - verden.abcsok.no
-
- Acoon:
- parameters:
- - begriff
- domains:
- - www.acoon.de
-
- Alexa:
- parameters:
- - q
- domains:
- - alexa.com
- - search.toolbars.alexa.com
-
- Alice Adsl:
- parameters:
- - q
- domains:
- - rechercher.aliceadsl.fr
-
- AllTheWeb:
- parameters:
- - q
- domains:
- - www.alltheweb.com
-
- all.by:
- parameters:
- - query
- domains:
- - all.by
-
- Altavista:
- parameters:
- - q
- domains:
- - www.altavista.com
- - search.altavista.com
- - listings.altavista.com
- - altavista.de
- - altavista.fr
- - be-nl.altavista.com
- - be-fr.altavista.com
-
- Amazon:
- parameters:
- - keywords
- domains:
- - amazon.com
- - www.amazon.com
-
- AOL:
- parameters:
- - q
- - query
- domains:
- - search.aol.com
- - search.aol.it
- - aolsearch.aol.com
- - aolsearch.com
- - www.aolrecherche.aol.fr
- - www.aolrecherches.aol.fr
- - www.aolimages.aol.fr
- - aim.search.aol.com
- - www.recherche.aol.fr
- - find.web.aol.com
- - recherche.aol.ca
- - aolsearch.aol.co.uk
- - search.aol.co.uk
- - aolrecherche.aol.fr
- - sucheaol.aol.de
- - suche.aol.de
- - suche.aolsvc.de
- - aolbusqueda.aol.com.mx
- - alicesuche.aol.de
- - alicesuchet.aol.de
- - suchet2.aol.de
- - search.hp.my.aol.com.au
- - search.hp.my.aol.de
- - search.hp.my.aol.it
- - search-intl.netscape.com
-
- Apollo Latvia:
- parameters:
- - q
- domains:
- - apollo.lv/portal/search/
-
- APOLL07:
- parameters:
- - query
- domains:
- - apollo7.de
-
- Apontador:
- parameters:
- - q
- domains:
- - apontador.com.br
- - www.apontador.com.br
-
- Aport:
- parameters:
- - r
- domains:
- - sm.aport.ru
-
- arama:
- parameters:
- - q
- domains:
- - arama.com
-
- Arcor:
- parameters:
- - Keywords
- domains:
- - www.arcor.de
-
- Arianna:
- parameters:
- - query
- domains:
- - arianna.libero.it
- - www.arianna.com
-
- Ask:
- parameters:
- - q
- domains:
- - ask.com
- - www.ask.com
- - web.ask.com
- - int.ask.com
- - mws.ask.com
- - uk.ask.com
- - images.ask.com
- - ask.reference.com
- - www.askkids.com
- - iwon.ask.com
- - www.ask.co.uk
- - www.qbyrd.com
- - search-results.com
- - uk.search-results.com
- - www.search-results.com
- - int.search-results.com
-
- Ask Toolbar:
- parameters:
- - searchfor
- domains:
- - search.tb.ask.com
-
- Atlas:
- parameters:
- - q
- domains:
- - searchatlas.centrum.cz
-
- Austronaut:
- parameters:
- - q
- domains:
- - www2.austronaut.at
- - www1.astronaut.at
-
- Babylon:
- parameters:
- - q
- domains:
- - search.babylon.com
- - searchassist.babylon.com
-
- Baidu:
- parameters:
- - wd
- - word
- - kw
- - k
- domains:
- - www.baidu.com
- - www1.baidu.com
- - zhidao.baidu.com
- - tieba.baidu.com
- - news.baidu.com
- - web.gougou.com
-
- Biglobe:
- parameters:
- - q
- domains:
- - cgi.search.biglobe.ne.jp
-
- Bing:
- parameters:
- - q
- - Q
- domains:
- - bing.com
- - www.bing.com
- - msnbc.msn.com
- - dizionario.it.msn.com
- - cc.bingj.com
- - m.bing.com
-
- Bing Images:
- parameters:
- - q
- - Q
- domains:
- - bing.com/images/search
- - www.bing.com/images/search
-
- blekko:
- parameters:
- - q
- domains:
- - blekko.com
-
- Blogdigger:
- parameters:
- - q
- domains:
- - www.blogdigger.com
-
- Blogpulse:
- parameters:
- - query
- domains:
- - www.blogpulse.com
-
- Bluewin:
- parameters:
- - searchTerm
- domains:
- - search.bluewin.ch
-
- canoe.ca:
- parameters:
- - q
- domains:
- - web.canoe.ca
-
- Centrum:
- parameters:
- - q
- domains:
- - serach.centrum.cz
- - morfeo.centrum.cz
-
- Certified-Toolbar:
- parameters:
- - q
- domains:
- - search.certified-toolbar.com
-
- Charter:
- parameters:
- - q
- domains:
- - www.charter.net
-
- Clix:
- parameters:
- - question
- domains:
- - pesquisa.clix.pt
-
- Comcast:
- parameters:
- - q
- domains:
- - search.comcast.net
-
- Conduit:
- parameters:
- - q
- domains:
- - search.conduit.com
-
- Comcast:
- parameters:
- - q
- domains:
- - serach.comcast.net
-
- Crawler:
- parameters:
- - q
- domains:
- - www.crawler.com
-
- Compuserve:
- parameters:
- - query
- domains:
- - websearch.cs.com
-
- Cuil:
- parameters:
- - q
- domains:
- - www.cuil.com
-
- Daemon search:
- parameters:
- - q
- domains:
- - daemon-search.com
- - my.daemon-search.com
-
- Dalesearch:
- parameters:
- - q
- domains:
- - www.dalesearch.com
-
- DasOertliche:
- parameters:
- - kw
- domains:
- - www.dasoertliche.de
-
- DasTelefonbuch:
- parameters:
- - kw
- domains:
- - www1.dastelefonbuch.de
-
- Daum:
- parameters:
- - q
- domains:
- - search.daum.net
-
- Delfi latvia:
- parameters:
- - q
- domains:
- - smart.delfi.lv
-
- Delfi:
- parameters:
- - q
- domains:
- - otsing.delfi.ee
-
- Digg:
- parameters:
- - s
- domains:
- - digg.com
-
- dmoz:
- parameters:
- - q
- domains:
- - dmoz.org
- - editors.dmoz.org
-
- DuckDuckGo:
- parameters:
- - q
- domains:
- - duckduckgo.com
-
- earthlink:
- parameters:
- - q
- domains:
- - search.earthlink.net
-
- Ecosia:
- parameters:
- - q
- domains:
- - ecosia.org
-
- Eniro:
- parameters:
- - q
- - search_word
- domains:
- - www.eniro.se
-
- Eurip:
- parameters:
- - q
- domains:
- - www.eurip.com
-
- Euroseek:
- parameters:
- - string
- domains:
- - www.euroseek.com
-
- Everyclick:
- parameters:
- - keyword
- domains:
- - www.everyclick.com
-
- Excite:
- parameters:
- - q
- - search
- domains:
- - search.excite.it
- - search.excite.fr
- - search.excite.de
- - search.excite.co.uk
- - serach.excite.es
- - search.excite.nl
- - msxml.excite.com
- - www.excite.co.jp
-
- Exalead:
- parameters:
- - q
- domains:
- - www.exalead.fr
- - www.exalead.com
-
- eo:
- parameters:
- - x_query
- domains:
- - eo.st
-
- Fast Browser Search:
- parameters:
- - q
- domains:
- - www.fastbrowsersearch.com
-
- Francite:
- parameters:
- - name
- domains:
- - recherche.francite.com
-
- Findwide:
- parameters:
- - k
- domains:
- - search.findwide.com
-
- Fireball:
- parameters:
- - q
- domains:
- - www.fireball.de
-
- Firstfind:
- parameters:
- - qry
- domains:
- - www.firstsfind.com
-
- Fixsuche:
- parameters:
- - q
- domains:
- - www.fixsuche.de
-
- Flix:
- parameters:
- - keyword
- domains:
- - www.flix.de
-
- Forestle:
- parameters:
- - q
- domains:
- - forestle.org
- - www.forestle.org
- - forestle.mobi
-
- Free:
- parameters:
- - q
- domains:
- - search.free.fr
- - search1-2.free.fr
- - search1-1.free.fr
-
- Freecause:
- parameters:
- - p
- domains:
- - search.freecause.com
-
- Freenet:
- parameters:
- - query
- - Keywords
- domains:
- - suche.freenet.de
-
- Freshweather:
- parameters:
- - q
- domains:
- - www.fresh-weather.com
-
- FriendFeed:
- parameters:
- - q
- domains:
- - friendfeed.com
-
- GAIS:
- parameters:
- - q
- domains:
- - gais.cs.ccu.edu.tw
-
- Geona:
- parameters:
- - q
- domains:
- - geona.net
-
- Genieo:
- parameters:
- - q
- domains:
- - search.genieo.com
-
- Gigablast:
- parameters:
- - q
- domains:
- - www.gigablast.com
- - dir.gigablast.com
-
- Globososo:
- parameters:
- - q
- domains:
- - searches.globososo.com
- - search.globososo.com
-
- GMX:
- parameters:
- - su
- domains:
- - suche.gmx.net
-
- Gnadenmeer:
- parameters:
- - keyword
- domains:
- - www.gnadenmeer.de
-
- Gomeo:
- parameters:
- - Keywords
- domains:
- - www.gomeo.com
-
- goo:
- parameters:
- - MT
- domains:
- - search.goo.ne.jp
- - ocnsearch.goo.ne.jp
-
- Google:
- parameters:
- - q
- - query # For www.cnn.com (powered by Google)
- - Keywords # For gooofullsearch.com (powered by Google)
- domains:
- - www.google.com
- - www.google.ac
- - www.google.ad
- - www.google.com.af
- - www.google.com.ag
- - www.google.com.ai
- - www.google.am
- - www.google.it.ao
- - www.google.com.ar
- - www.google.as
- - www.google.at
- - www.google.com.au
- - www.google.az
- - www.google.ba
- - www.google.com.bd
- - www.google.be
- - www.google.bf
- - www.google.bg
- - www.google.com.bh
- - www.google.bi
- - www.google.bj
- - www.google.com.bn
- - www.google.com.bo
- - www.google.com.br
- - www.google.bs
- - www.google.co.bw
- - www.google.com.by
- - www.google.by
- - www.google.com.bz
- - www.google.ca
- - www.google.com.kh
- - www.google.cc
- - www.google.cd
- - www.google.cf
- - www.google.cat
- - www.google.cg
- - www.google.ch
- - www.google.ci
- - www.google.co.ck
- - www.google.cl
- - www.google.cm
- - www.google.cn
- - www.google.com.co
- - www.google.co.cr
- - www.google.com.cu
- - www.google.cv
- - www.google.com.cy
- - www.google.cz
- - www.google.de
- - www.google.dj
- - www.google.dk
- - www.google.dm
- - www.google.com.do
- - www.google.dz
- - www.google.com.ec
- - www.google.ee
- - www.google.com.eg
- - www.google.es
- - www.google.com.et
- - www.google.fi
- - www.google.com.fj
- - www.google.fm
- - www.google.fr
- - www.google.ga
- - www.google.gd
- - www.google.ge
- - www.google.gf
- - www.google.gg
- - www.google.com.gh
- - www.google.com.gi
- - www.google.gl
- - www.google.gm
- - www.google.gp
- - www.google.gr
- - www.google.com.gt
- - www.google.gy
- - www.google.com.hk
- - www.google.hn
- - www.google.hr
- - www.google.ht
- - www.google.hu
- - www.google.co.id
- - www.google.iq
- - www.google.ie
- - www.google.co.il
- - www.google.im
- - www.google.co.in
- - www.google.io
- - www.google.is
- - www.google.it
- - www.google.je
- - www.google.com.jm
- - www.google.jo
- - www.google.co.jp
- - www.google.co.ke
- - www.google.com.kh
- - www.google.ki
- - www.google.kg
- - www.google.co.kr
- - www.google.com.kw
- - www.google.kz
- - www.google.la
- - www.google.com.lb
- - www.google.com.lc
- - www.google.li
- - www.google.lk
- - www.google.co.ls
- - www.google.lt
- - www.google.lu
- - www.google.lv
- - www.google.com.ly
- - www.google.co.ma
- - www.google.md
- - www.google.me
- - www.google.mg
- - www.google.mk
- - www.google.ml
- - www.google.mn
- - www.google.ms
- - www.google.com.mt
- - www.google.mu
- - www.google.mv
- - www.google.mw
- - www.google.com.mx
- - www.google.com.my
- - www.google.co.mz
- - www.google.com.na
- - www.google.ne
- - www.google.com.nf
- - www.google.com.ng
- - www.google.com.ni
- - www.google.nl
- - www.google.no
- - www.google.com.np
- - www.google.nr
- - www.google.nu
- - www.google.co.nz
- - www.google.com.om
- - www.google.com.pa
- - www.google.com.pe
- - www.google.com.ph
- - www.google.com.pk
- - www.google.pl
- - www.google.pn
- - www.google.com.pr
- - www.google.ps
- - www.google.pt
- - www.google.com.py
- - www.google.com.qa
- - www.google.ro
- - www.google.rs
- - www.google.ru
- - www.google.rw
- - www.google.com.sa
- - www.google.com.sb
- - www.google.sc
- - www.google.se
- - www.google.com.sg
- - www.google.sh
- - www.google.si
- - www.google.sk
- - www.google.com.sl
- - www.google.sn
- - www.google.sm
- - www.google.so
- - www.google.st
- - www.google.com.sv
- - www.google.td
- - www.google.tg
- - www.google.co.th
- - www.google.com.tj
- - www.google.tk
- - www.google.tl
- - www.google.tm
- - www.google.to
- - www.google.com.tn
- - www.google.com.tr
- - www.google.tt
- - www.google.com.tw
- - www.google.co.tz
- - www.google.com.ua
- - www.google.co.ug
- - www.google.ae
- - www.google.co.uk
- - www.google.us
- - www.google.com.uy
- - www.google.co.uz
- - www.google.com.vc
- - www.google.co.ve
- - www.google.vg
- - www.google.co.vi
- - www.google.com.vn
- - www.google.vu
- - www.google.ws
- - www.google.co.za
- - www.google.co.zm
- - www.google.co.zw
- - google.com
- - google.ac
- - google.ad
- - google.com.af
- - google.com.ag
- - google.com.ai
- - google.am
- - google.it.ao
- - google.com.ar
- - google.as
- - google.at
- - google.com.au
- - google.az
- - google.ba
- - google.com.bd
- - google.be
- - google.bf
- - google.bg
- - google.com.bh
- - google.bi
- - google.bj
- - google.com.bn
- - google.com.bo
- - google.com.br
- - google.bs
- - google.co.bw
- - google.com.by
- - google.by
- - google.com.bz
- - google.ca
- - google.com.kh
- - google.cc
- - google.cd
- - google.cf
- - google.cat
- - google.cg
- - google.ch
- - google.ci
- - google.co.ck
- - google.cl
- - google.cm
- - google.cn
- - google.com.co
- - google.co.cr
- - google.com.cu
- - google.cv
- - google.com.cy
- - google.cz
- - google.de
- - google.dj
- - google.dk
- - google.dm
- - google.com.do
- - google.dz
- - google.com.ec
- - google.ee
- - google.com.eg
- - google.es
- - google.com.et
- - google.fi
- - google.com.fj
- - google.fm
- - google.fr
- - google.ga
- - google.gd
- - google.ge
- - google.gf
- - google.gg
- - google.com.gh
- - google.com.gi
- - google.gl
- - google.gm
- - google.gp
- - google.gr
- - google.com.gt
- - google.gy
- - google.com.hk
- - google.hn
- - google.hr
- - google.ht
- - google.hu
- - google.co.id
- - google.iq
- - google.ie
- - google.co.il
- - google.im
- - google.co.in
- - google.io
- - google.is
- - google.it
- - google.je
- - google.com.jm
- - google.jo
- - google.co.jp
- - google.co.ke
- - google.com.kh
- - google.ki
- - google.kg
- - google.co.kr
- - google.com.kw
- - google.kz
- - google.la
- - google.com.lb
- - google.com.lc
- - google.li
- - google.lk
- - google.co.ls
- - google.lt
- - google.lu
- - google.lv
- - google.com.ly
- - google.co.ma
- - google.md
- - google.me
- - google.mg
- - google.mk
- - google.ml
- - google.mn
- - google.ms
- - google.com.mt
- - google.mu
- - google.mv
- - google.mw
- - google.com.mx
- - google.com.my
- - google.co.mz
- - google.com.na
- - google.ne
- - google.com.nf
- - google.com.ng
- - google.com.ni
- - google.nl
- - google.no
- - google.com.np
- - google.nr
- - google.nu
- - google.co.nz
- - google.com.om
- - google.com.pa
- - google.com.pe
- - google.com.ph
- - google.com.pk
- - google.pl
- - google.pn
- - google.com.pr
- - google.ps
- - google.pt
- - google.com.py
- - google.com.qa
- - google.ro
- - google.rs
- - google.ru
- - google.rw
- - google.com.sa
- - google.com.sb
- - google.sc
- - google.se
- - google.com.sg
- - google.sh
- - google.si
- - google.sk
- - google.com.sl
- - google.sn
- - google.sm
- - google.so
- - google.st
- - google.com.sv
- - google.td
- - google.tg
- - google.co.th
- - google.com.tj
- - google.tk
- - google.tl
- - google.tm
- - google.to
- - google.com.tn
- - google.com.tr
- - google.tt
- - google.com.tw
- - google.co.tz
- - google.com.ua
- - google.co.ug
- - google.ae
- - google.co.uk
- - google.us
- - google.com.uy
- - google.co.uz
- - google.com.vc
- - google.co.ve
- - google.vg
- - google.co.vi
- - google.com.vn
- - google.vu
- - google.ws
- - google.co.za
- - google.co.zm
- - google.co.zw
- # powered by Google
- - search.avg.com
- - isearch.avg.com
- - www.cnn.com
- - darkoogle.com
- - search.darkoogle.com
- - search.foxtab.com
- - www.gooofullsearch.com
- - search.hiyo.com
- - search.incredimail.com
- - search1.incredimail.com
- - search2.incredimail.com
- - search3.incredimail.com
- - search4.incredimail.com
- - search.incredibar.com
- - search.sweetim.com
- - www.fastweb.it
- - search.juno.com
- - find.tdc.dk
- - searchresults.verizon.com
- - search.walla.co.il
- - search.alot.com
- # Google Earch
- - www.googleearth.de
- - www.googleearth.fr
- # Google Cache
- - webcache.googleusercontent.com
- # Google SSL
- - encrypted.google.com
- # Syndicated search
- - googlesyndicatedsearch.com
-
- Google Blogsearch:
- parameters:
- - q
- domains:
- - blogsearch.google.ac
- - blogsearch.google.ad
- - blogsearch.google.ae
- - blogsearch.google.am
- - blogsearch.google.as
- - blogsearch.google.at
- - blogsearch.google.az
- - blogsearch.google.ba
- - blogsearch.google.be
- - blogsearch.google.bf
- - blogsearch.google.bg
- - blogsearch.google.bi
- - blogsearch.google.bj
- - blogsearch.google.bs
- - blogsearch.google.by
- - blogsearch.google.ca
- - blogsearch.google.cat
- - blogsearch.google.cc
- - blogsearch.google.cd
- - blogsearch.google.cf
- - blogsearch.google.cg
- - blogsearch.google.ch
- - blogsearch.google.ci
- - blogsearch.google.cl
- - blogsearch.google.cm
- - blogsearch.google.cn
- - blogsearch.google.co.bw
- - blogsearch.google.co.ck
- - blogsearch.google.co.cr
- - blogsearch.google.co.id
- - blogsearch.google.co.il
- - blogsearch.google.co.in
- - blogsearch.google.co.jp
- - blogsearch.google.co.ke
- - blogsearch.google.co.kr
- - blogsearch.google.co.ls
- - blogsearch.google.co.ma
- - blogsearch.google.co.mz
- - blogsearch.google.co.nz
- - blogsearch.google.co.th
- - blogsearch.google.co.tz
- - blogsearch.google.co.ug
- - blogsearch.google.co.uk
- - blogsearch.google.co.uz
- - blogsearch.google.co.ve
- - blogsearch.google.co.vi
- - blogsearch.google.co.za
- - blogsearch.google.co.zm
- - blogsearch.google.co.zw
- - blogsearch.google.com
- - blogsearch.google.com.af
- - blogsearch.google.com.ag
- - blogsearch.google.com.ai
- - blogsearch.google.com.ar
- - blogsearch.google.com.au
- - blogsearch.google.com.bd
- - blogsearch.google.com.bh
- - blogsearch.google.com.bn
- - blogsearch.google.com.bo
- - blogsearch.google.com.br
- - blogsearch.google.com.by
- - blogsearch.google.com.bz
- - blogsearch.google.com.co
- - blogsearch.google.com.cu
- - blogsearch.google.com.cy
- - blogsearch.google.com.do
- - blogsearch.google.com.ec
- - blogsearch.google.com.eg
- - blogsearch.google.com.et
- - blogsearch.google.com.fj
- - blogsearch.google.com.gh
- - blogsearch.google.com.gi
- - blogsearch.google.com.gt
- - blogsearch.google.com.hk
- - blogsearch.google.com.jm
- - blogsearch.google.com.kh
- - blogsearch.google.com.kh
- - blogsearch.google.com.kw
- - blogsearch.google.com.lb
- - blogsearch.google.com.lc
- - blogsearch.google.com.ly
- - blogsearch.google.com.mt
- - blogsearch.google.com.mx
- - blogsearch.google.com.my
- - blogsearch.google.com.na
- - blogsearch.google.com.nf
- - blogsearch.google.com.ng
- - blogsearch.google.com.ni
- - blogsearch.google.com.np
- - blogsearch.google.com.om
- - blogsearch.google.com.pa
- - blogsearch.google.com.pe
- - blogsearch.google.com.ph
- - blogsearch.google.com.pk
- - blogsearch.google.com.pr
- - blogsearch.google.com.py
- - blogsearch.google.com.qa
- - blogsearch.google.com.sa
- - blogsearch.google.com.sb
- - blogsearch.google.com.sg
- - blogsearch.google.com.sl
- - blogsearch.google.com.sv
- - blogsearch.google.com.tj
- - blogsearch.google.com.tn
- - blogsearch.google.com.tr
- - blogsearch.google.com.tw
- - blogsearch.google.com.ua
- - blogsearch.google.com.uy
- - blogsearch.google.com.vc
- - blogsearch.google.com.vn
- - blogsearch.google.cv
- - blogsearch.google.cz
- - blogsearch.google.de
- - blogsearch.google.dj
- - blogsearch.google.dk
- - blogsearch.google.dm
- - blogsearch.google.dz
- - blogsearch.google.ee
- - blogsearch.google.es
- - blogsearch.google.fi
- - blogsearch.google.fm
- - blogsearch.google.fr
- - blogsearch.google.ga
- - blogsearch.google.gd
- - blogsearch.google.ge
- - blogsearch.google.gf
- - blogsearch.google.gg
- - blogsearch.google.gl
- - blogsearch.google.gm
- - blogsearch.google.gp
- - blogsearch.google.gr
- - blogsearch.google.gy
- - blogsearch.google.hn
- - blogsearch.google.hr
- - blogsearch.google.ht
- - blogsearch.google.hu
- - blogsearch.google.ie
- - blogsearch.google.im
- - blogsearch.google.io
- - blogsearch.google.iq
- - blogsearch.google.is
- - blogsearch.google.it
- - blogsearch.google.it.ao
- - blogsearch.google.je
- - blogsearch.google.jo
- - blogsearch.google.kg
- - blogsearch.google.ki
- - blogsearch.google.kz
- - blogsearch.google.la
- - blogsearch.google.li
- - blogsearch.google.lk
- - blogsearch.google.lt
- - blogsearch.google.lu
- - blogsearch.google.lv
- - blogsearch.google.md
- - blogsearch.google.me
- - blogsearch.google.mg
- - blogsearch.google.mk
- - blogsearch.google.ml
- - blogsearch.google.mn
- - blogsearch.google.ms
- - blogsearch.google.mu
- - blogsearch.google.mv
- - blogsearch.google.mw
- - blogsearch.google.ne
- - blogsearch.google.nl
- - blogsearch.google.no
- - blogsearch.google.nr
- - blogsearch.google.nu
- - blogsearch.google.pl
- - blogsearch.google.pn
- - blogsearch.google.ps
- - blogsearch.google.pt
- - blogsearch.google.ro
- - blogsearch.google.rs
- - blogsearch.google.ru
- - blogsearch.google.rw
- - blogsearch.google.sc
- - blogsearch.google.se
- - blogsearch.google.sh
- - blogsearch.google.si
- - blogsearch.google.sk
- - blogsearch.google.sm
- - blogsearch.google.sn
- - blogsearch.google.so
- - blogsearch.google.st
- - blogsearch.google.td
- - blogsearch.google.tg
- - blogsearch.google.tk
- - blogsearch.google.tl
- - blogsearch.google.tm
- - blogsearch.google.to
- - blogsearch.google.tt
- - blogsearch.google.us
- - blogsearch.google.vg
- - blogsearch.google.vu
- - blogsearch.google.ws
-
- Google Images:
- parameters:
- - q
- domains:
- - google.ac/imgres
- - google.ad/imgres
- - google.ae/imgres
- - google.am/imgres
- - google.as/imgres
- - google.at/imgres
- - google.az/imgres
- - google.ba/imgres
- - google.be/imgres
- - google.bf/imgres
- - google.bg/imgres
- - google.bi/imgres
- - google.bj/imgres
- - google.bs/imgres
- - google.by/imgres
- - google.ca/imgres
- - google.cat/imgres
- - google.cc/imgres
- - google.cd/imgres
- - google.cf/imgres
- - google.cg/imgres
- - google.ch/imgres
- - google.ci/imgres
- - google.cl/imgres
- - google.cm/imgres
- - google.cn/imgres
- - google.co.bw/imgres
- - google.co.ck/imgres
- - google.co.cr/imgres
- - google.co.id/imgres
- - google.co.il/imgres
- - google.co.in/imgres
- - google.co.jp/imgres
- - google.co.ke/imgres
- - google.co.kr/imgres
- - google.co.ls/imgres
- - google.co.ma/imgres
- - google.co.mz/imgres
- - google.co.nz/imgres
- - google.co.th/imgres
- - google.co.tz/imgres
- - google.co.ug/imgres
- - google.co.uk/imgres
- - google.co.uz/imgres
- - google.co.ve/imgres
- - google.co.vi/imgres
- - google.co.za/imgres
- - google.co.zm/imgres
- - google.co.zw/imgres
- - google.com/imgres
- - google.com.af/imgres
- - google.com.ag/imgres
- - google.com.ai/imgres
- - google.com.ar/imgres
- - google.com.au/imgres
- - google.com.bd/imgres
- - google.com.bh/imgres
- - google.com.bn/imgres
- - google.com.bo/imgres
- - google.com.br/imgres
- - google.com.by/imgres
- - google.com.bz/imgres
- - google.com.co/imgres
- - google.com.cu/imgres
- - google.com.cy/imgres
- - google.com.do/imgres
- - google.com.ec/imgres
- - google.com.eg/imgres
- - google.com.et/imgres
- - google.com.fj/imgres
- - google.com.gh/imgres
- - google.com.gi/imgres
- - google.com.gt/imgres
- - google.com.hk/imgres
- - google.com.jm/imgres
- - google.com.kh/imgres
- - google.com.kw/imgres
- - google.com.lb/imgres
- - google.com.lc/imgres
- - google.com.ly/imgres
- - google.com.mt/imgres
- - google.com.mx/imgres
- - google.com.my/imgres
- - google.com.na/imgres
- - google.com.nf/imgres
- - google.com.ng/imgres
- - google.com.ni/imgres
- - google.com.np/imgres
- - google.com.om/imgres
- - google.com.pa/imgres
- - google.com.pe/imgres
- - google.com.ph/imgres
- - google.com.pk/imgres
- - google.com.pr/imgres
- - google.com.py/imgres
- - google.com.qa/imgres
- - google.com.sa/imgres
- - google.com.sb/imgres
- - google.com.sg/imgres
- - google.com.sl/imgres
- - google.com.sv/imgres
- - google.com.tj/imgres
- - google.com.tn/imgres
- - google.com.tr/imgres
- - google.com.tw/imgres
- - google.com.ua/imgres
- - google.com.uy/imgres
- - google.com.vc/imgres
- - google.com.vn/imgres
- - google.cv/imgres
- - google.cz/imgres
- - google.de/imgres
- - google.dj/imgres
- - google.dk/imgres
- - google.dm/imgres
- - google.dz/imgres
- - google.ee/imgres
- - google.es/imgres
- - google.fi/imgres
- - google.fm/imgres
- - google.fr/imgres
- - google.ga/imgres
- - google.gd/imgres
- - google.ge/imgres
- - google.gf/imgres
- - google.gg/imgres
- - google.gl/imgres
- - google.gm/imgres
- - google.gp/imgres
- - google.gr/imgres
- - google.gy/imgres
- - google.hn/imgres
- - google.hr/imgres
- - google.ht/imgres
- - google.hu/imgres
- - google.ie/imgres
- - google.im/imgres
- - google.io/imgres
- - google.iq/imgres
- - google.is/imgres
- - google.it/imgres
- - google.it.ao/imgres
- - google.je/imgres
- - google.jo/imgres
- - google.kg/imgres
- - google.ki/imgres
- - google.kz/imgres
- - google.la/imgres
- - google.li/imgres
- - google.lk/imgres
- - google.lt/imgres
- - google.lu/imgres
- - google.lv/imgres
- - google.md/imgres
- - google.me/imgres
- - google.mg/imgres
- - google.mk/imgres
- - google.ml/imgres
- - google.mn/imgres
- - google.ms/imgres
- - google.mu/imgres
- - google.mv/imgres
- - google.mw/imgres
- - google.ne/imgres
- - google.nl/imgres
- - google.no/imgres
- - google.nr/imgres
- - google.nu/imgres
- - google.pl/imgres
- - google.pn/imgres
- - google.ps/imgres
- - google.pt/imgres
- - google.ro/imgres
- - google.rs/imgres
- - google.ru/imgres
- - google.rw/imgres
- - google.sc/imgres
- - google.se/imgres
- - google.sh/imgres
- - google.si/imgres
- - google.sk/imgres
- - google.sm/imgres
- - google.sn/imgres
- - google.so/imgres
- - google.st/imgres
- - google.td/imgres
- - google.tg/imgres
- - google.tk/imgres
- - google.tl/imgres
- - google.tm/imgres
- - google.to/imgres
- - google.tt/imgres
- - google.us/imgres
- - google.vg/imgres
- - google.vu/imgres
- - images.google.ws
- - images.google.ac
- - images.google.ad
- - images.google.ae
- - images.google.am
- - images.google.as
- - images.google.at
- - images.google.az
- - images.google.ba
- - images.google.be
- - images.google.bf
- - images.google.bg
- - images.google.bi
- - images.google.bj
- - images.google.bs
- - images.google.by
- - images.google.ca
- - images.google.cat
- - images.google.cc
- - images.google.cd
- - images.google.cf
- - images.google.cg
- - images.google.ch
- - images.google.ci
- - images.google.cl
- - images.google.cm
- - images.google.cn
- - images.google.co.bw
- - images.google.co.ck
- - images.google.co.cr
- - images.google.co.id
- - images.google.co.il
- - images.google.co.in
- - images.google.co.jp
- - images.google.co.ke
- - images.google.co.kr
- - images.google.co.ls
- - images.google.co.ma
- - images.google.co.mz
- - images.google.co.nz
- - images.google.co.th
- - images.google.co.tz
- - images.google.co.ug
- - images.google.co.uk
- - images.google.co.uz
- - images.google.co.ve
- - images.google.co.vi
- - images.google.co.za
- - images.google.co.zm
- - images.google.co.zw
- - images.google.com
- - images.google.com.af
- - images.google.com.ag
- - images.google.com.ai
- - images.google.com.ar
- - images.google.com.au
- - images.google.com.bd
- - images.google.com.bh
- - images.google.com.bn
- - images.google.com.bo
- - images.google.com.br
- - images.google.com.by
- - images.google.com.bz
- - images.google.com.co
- - images.google.com.cu
- - images.google.com.cy
- - images.google.com.do
- - images.google.com.ec
- - images.google.com.eg
- - images.google.com.et
- - images.google.com.fj
- - images.google.com.gh
- - images.google.com.gi
- - images.google.com.gt
- - images.google.com.hk
- - images.google.com.jm
- - images.google.com.kh
- - images.google.com.kh
- - images.google.com.kw
- - images.google.com.lb
- - images.google.com.lc
- - images.google.com.ly
- - images.google.com.mt
- - images.google.com.mx
- - images.google.com.my
- - images.google.com.na
- - images.google.com.nf
- - images.google.com.ng
- - images.google.com.ni
- - images.google.com.np
- - images.google.com.om
- - images.google.com.pa
- - images.google.com.pe
- - images.google.com.ph
- - images.google.com.pk
- - images.google.com.pr
- - images.google.com.py
- - images.google.com.qa
- - images.google.com.sa
- - images.google.com.sb
- - images.google.com.sg
- - images.google.com.sl
- - images.google.com.sv
- - images.google.com.tj
- - images.google.com.tn
- - images.google.com.tr
- - images.google.com.tw
- - images.google.com.ua
- - images.google.com.uy
- - images.google.com.vc
- - images.google.com.vn
- - images.google.cv
- - images.google.cz
- - images.google.de
- - images.google.dj
- - images.google.dk
- - images.google.dm
- - images.google.dz
- - images.google.ee
- - images.google.es
- - images.google.fi
- - images.google.fm
- - images.google.fr
- - images.google.ga
- - images.google.gd
- - images.google.ge
- - images.google.gf
- - images.google.gg
- - images.google.gl
- - images.google.gm
- - images.google.gp
- - images.google.gr
- - images.google.gy
- - images.google.hn
- - images.google.hr
- - images.google.ht
- - images.google.hu
- - images.google.ie
- - images.google.im
- - images.google.io
- - images.google.iq
- - images.google.is
- - images.google.it
- - images.google.it.ao
- - images.google.je
- - images.google.jo
- - images.google.kg
- - images.google.ki
- - images.google.kz
- - images.google.la
- - images.google.li
- - images.google.lk
- - images.google.lt
- - images.google.lu
- - images.google.lv
- - images.google.md
- - images.google.me
- - images.google.mg
- - images.google.mk
- - images.google.ml
- - images.google.mn
- - images.google.ms
- - images.google.mu
- - images.google.mv
- - images.google.mw
- - images.google.ne
- - images.google.nl
- - images.google.no
- - images.google.nr
- - images.google.nu
- - images.google.pl
- - images.google.pn
- - images.google.ps
- - images.google.pt
- - images.google.ro
- - images.google.rs
- - images.google.ru
- - images.google.rw
- - images.google.sc
- - images.google.se
- - images.google.sh
- - images.google.si
- - images.google.sk
- - images.google.sm
- - images.google.sn
- - images.google.so
- - images.google.st
- - images.google.td
- - images.google.tg
- - images.google.tk
- - images.google.tl
- - images.google.tm
- - images.google.to
- - images.google.tt
- - images.google.us
- - images.google.vg
- - images.google.vu
- - images.google.ws
-
- Google News:
- parameters:
- - q
- domains:
- - news.google.ac
- - news.google.ad
- - news.google.ae
- - news.google.am
- - news.google.as
- - news.google.at
- - news.google.az
- - news.google.ba
- - news.google.be
- - news.google.bf
- - news.google.bg
- - news.google.bi
- - news.google.bj
- - news.google.bs
- - news.google.by
- - news.google.ca
- - news.google.cat
- - news.google.cc
- - news.google.cd
- - news.google.cf
- - news.google.cg
- - news.google.ch
- - news.google.ci
- - news.google.cl
- - news.google.cm
- - news.google.cn
- - news.google.co.bw
- - news.google.co.ck
- - news.google.co.cr
- - news.google.co.id
- - news.google.co.il
- - news.google.co.in
- - news.google.co.jp
- - news.google.co.ke
- - news.google.co.kr
- - news.google.co.ls
- - news.google.co.ma
- - news.google.co.mz
- - news.google.co.nz
- - news.google.co.th
- - news.google.co.tz
- - news.google.co.ug
- - news.google.co.uk
- - news.google.co.uz
- - news.google.co.ve
- - news.google.co.vi
- - news.google.co.za
- - news.google.co.zm
- - news.google.co.zw
- - news.google.com
- - news.google.com.af
- - news.google.com.ag
- - news.google.com.ai
- - news.google.com.ar
- - news.google.com.au
- - news.google.com.bd
- - news.google.com.bh
- - news.google.com.bn
- - news.google.com.bo
- - news.google.com.br
- - news.google.com.by
- - news.google.com.bz
- - news.google.com.co
- - news.google.com.cu
- - news.google.com.cy
- - news.google.com.do
- - news.google.com.ec
- - news.google.com.eg
- - news.google.com.et
- - news.google.com.fj
- - news.google.com.gh
- - news.google.com.gi
- - news.google.com.gt
- - news.google.com.hk
- - news.google.com.jm
- - news.google.com.kh
- - news.google.com.kh
- - news.google.com.kw
- - news.google.com.lb
- - news.google.com.lc
- - news.google.com.ly
- - news.google.com.mt
- - news.google.com.mx
- - news.google.com.my
- - news.google.com.na
- - news.google.com.nf
- - news.google.com.ng
- - news.google.com.ni
- - news.google.com.np
- - news.google.com.om
- - news.google.com.pa
- - news.google.com.pe
- - news.google.com.ph
- - news.google.com.pk
- - news.google.com.pr
- - news.google.com.py
- - news.google.com.qa
- - news.google.com.sa
- - news.google.com.sb
- - news.google.com.sg
- - news.google.com.sl
- - news.google.com.sv
- - news.google.com.tj
- - news.google.com.tn
- - news.google.com.tr
- - news.google.com.tw
- - news.google.com.ua
- - news.google.com.uy
- - news.google.com.vc
- - news.google.com.vn
- - news.google.cv
- - news.google.cz
- - news.google.de
- - news.google.dj
- - news.google.dk
- - news.google.dm
- - news.google.dz
- - news.google.ee
- - news.google.es
- - news.google.fi
- - news.google.fm
- - news.google.fr
- - news.google.ga
- - news.google.gd
- - news.google.ge
- - news.google.gf
- - news.google.gg
- - news.google.gl
- - news.google.gm
- - news.google.gp
- - news.google.gr
- - news.google.gy
- - news.google.hn
- - news.google.hr
- - news.google.ht
- - news.google.hu
- - news.google.ie
- - news.google.im
- - news.google.io
- - news.google.iq
- - news.google.is
- - news.google.it
- - news.google.it.ao
- - news.google.je
- - news.google.jo
- - news.google.kg
- - news.google.ki
- - news.google.kz
- - news.google.la
- - news.google.li
- - news.google.lk
- - news.google.lt
- - news.google.lu
- - news.google.lv
- - news.google.md
- - news.google.me
- - news.google.mg
- - news.google.mk
- - news.google.ml
- - news.google.mn
- - news.google.ms
- - news.google.mu
- - news.google.mv
- - news.google.mw
- - news.google.ne
- - news.google.nl
- - news.google.no
- - news.google.nr
- - news.google.nu
- - news.google.pl
- - news.google.pn
- - news.google.ps
- - news.google.pt
- - news.google.ro
- - news.google.rs
- - news.google.ru
- - news.google.rw
- - news.google.sc
- - news.google.se
- - news.google.sh
- - news.google.si
- - news.google.sk
- - news.google.sm
- - news.google.sn
- - news.google.so
- - news.google.st
- - news.google.td
- - news.google.tg
- - news.google.tk
- - news.google.tl
- - news.google.tm
- - news.google.to
- - news.google.tt
- - news.google.us
- - news.google.vg
- - news.google.vu
- - news.google.ws
-
- Google Product Search:
- parameters:
- - q
- domains:
- - google.ac/products
- - google.ad/products
- - google.ae/products
- - google.am/products
- - google.as/products
- - google.at/products
- - google.az/products
- - google.ba/products
- - google.be/products
- - google.bf/products
- - google.bg/products
- - google.bi/products
- - google.bj/products
- - google.bs/products
- - google.by/products
- - google.ca/products
- - google.cat/products
- - google.cc/products
- - google.cd/products
- - google.cf/products
- - google.cg/products
- - google.ch/products
- - google.ci/products
- - google.cl/products
- - google.cm/products
- - google.cn/products
- - google.co.bw/products
- - google.co.ck/products
- - google.co.cr/products
- - google.co.id/products
- - google.co.il/products
- - google.co.in/products
- - google.co.jp/products
- - google.co.ke/products
- - google.co.kr/products
- - google.co.ls/products
- - google.co.ma/products
- - google.co.mz/products
- - google.co.nz/products
- - google.co.th/products
- - google.co.tz/products
- - google.co.ug/products
- - google.co.uk/products
- - google.co.uz/products
- - google.co.ve/products
- - google.co.vi/products
- - google.co.za/products
- - google.co.zm/products
- - google.co.zw/products
- - google.com/products
- - google.com.af/products
- - google.com.ag/products
- - google.com.ai/products
- - google.com.ar/products
- - google.com.au/products
- - google.com.bd/products
- - google.com.bh/products
- - google.com.bn/products
- - google.com.bo/products
- - google.com.br/products
- - google.com.by/products
- - google.com.bz/products
- - google.com.co/products
- - google.com.cu/products
- - google.com.cy/products
- - google.com.do/products
- - google.com.ec/products
- - google.com.eg/products
- - google.com.et/products
- - google.com.fj/products
- - google.com.gh/products
- - google.com.gi/products
- - google.com.gt/products
- - google.com.hk/products
- - google.com.jm/products
- - google.com.kh/products
- - google.com.kh/products
- - google.com.kw/products
- - google.com.lb/products
- - google.com.lc/products
- - google.com.ly/products
- - google.com.mt/products
- - google.com.mx/products
- - google.com.my/products
- - google.com.na/products
- - google.com.nf/products
- - google.com.ng/products
- - google.com.ni/products
- - google.com.np/products
- - google.com.om/products
- - google.com.pa/products
- - google.com.pe/products
- - google.com.ph/products
- - google.com.pk/products
- - google.com.pr/products
- - google.com.py/products
- - google.com.qa/products
- - google.com.sa/products
- - google.com.sb/products
- - google.com.sg/products
- - google.com.sl/products
- - google.com.sv/products
- - google.com.tj/products
- - google.com.tn/products
- - google.com.tr/products
- - google.com.tw/products
- - google.com.ua/products
- - google.com.uy/products
- - google.com.vc/products
- - google.com.vn/products
- - google.cv/products
- - google.cz/products
- - google.de/products
- - google.dj/products
- - google.dk/products
- - google.dm/products
- - google.dz/products
- - google.ee/products
- - google.es/products
- - google.fi/products
- - google.fm/products
- - google.fr/products
- - google.ga/products
- - google.gd/products
- - google.ge/products
- - google.gf/products
- - google.gg/products
- - google.gl/products
- - google.gm/products
- - google.gp/products
- - google.gr/products
- - google.gy/products
- - google.hn/products
- - google.hr/products
- - google.ht/products
- - google.hu/products
- - google.ie/products
- - google.im/products
- - google.io/products
- - google.iq/products
- - google.is/products
- - google.it/products
- - google.it.ao/products
- - google.je/products
- - google.jo/products
- - google.kg/products
- - google.ki/products
- - google.kz/products
- - google.la/products
- - google.li/products
- - google.lk/products
- - google.lt/products
- - google.lu/products
- - google.lv/products
- - google.md/products
- - google.me/products
- - google.mg/products
- - google.mk/products
- - google.ml/products
- - google.mn/products
- - google.ms/products
- - google.mu/products
- - google.mv/products
- - google.mw/products
- - google.ne/products
- - google.nl/products
- - google.no/products
- - google.nr/products
- - google.nu/products
- - google.pl/products
- - google.pn/products
- - google.ps/products
- - google.pt/products
- - google.ro/products
- - google.rs/products
- - google.ru/products
- - google.rw/products
- - google.sc/products
- - google.se/products
- - google.sh/products
- - google.si/products
- - google.sk/products
- - google.sm/products
- - google.sn/products
- - google.so/products
- - google.st/products
- - google.td/products
- - google.tg/products
- - google.tk/products
- - google.tl/products
- - google.tm/products
- - google.to/products
- - google.tt/products
- - google.us/products
- - google.vg/products
- - google.vu/products
- - google.ws/products
- - www.google.ac/products
- - www.google.ad/products
- - www.google.ae/products
- - www.google.am/products
- - www.google.as/products
- - www.google.at/products
- - www.google.az/products
- - www.google.ba/products
- - www.google.be/products
- - www.google.bf/products
- - www.google.bg/products
- - www.google.bi/products
- - www.google.bj/products
- - www.google.bs/products
- - www.google.by/products
- - www.google.ca/products
- - www.google.cat/products
- - www.google.cc/products
- - www.google.cd/products
- - www.google.cf/products
- - www.google.cg/products
- - www.google.ch/products
- - www.google.ci/products
- - www.google.cl/products
- - www.google.cm/products
- - www.google.cn/products
- - www.google.co.bw/products
- - www.google.co.ck/products
- - www.google.co.cr/products
- - www.google.co.id/products
- - www.google.co.il/products
- - www.google.co.in/products
- - www.google.co.jp/products
- - www.google.co.ke/products
- - www.google.co.kr/products
- - www.google.co.ls/products
- - www.google.co.ma/products
- - www.google.co.mz/products
- - www.google.co.nz/products
- - www.google.co.th/products
- - www.google.co.tz/products
- - www.google.co.ug/products
- - www.google.co.uk/products
- - www.google.co.uz/products
- - www.google.co.ve/products
- - www.google.co.vi/products
- - www.google.co.za/products
- - www.google.co.zm/products
- - www.google.co.zw/products
- - www.google.com/products
- - www.google.com.af/products
- - www.google.com.ag/products
- - www.google.com.ai/products
- - www.google.com.ar/products
- - www.google.com.au/products
- - www.google.com.bd/products
- - www.google.com.bh/products
- - www.google.com.bn/products
- - www.google.com.bo/products
- - www.google.com.br/products
- - www.google.com.by/products
- - www.google.com.bz/products
- - www.google.com.co/products
- - www.google.com.cu/products
- - www.google.com.cy/products
- - www.google.com.do/products
- - www.google.com.ec/products
- - www.google.com.eg/products
- - www.google.com.et/products
- - www.google.com.fj/products
- - www.google.com.gh/products
- - www.google.com.gi/products
- - www.google.com.gt/products
- - www.google.com.hk/products
- - www.google.com.jm/products
- - www.google.com.kh/products
- - www.google.com.kh/products
- - www.google.com.kw/products
- - www.google.com.lb/products
- - www.google.com.lc/products
- - www.google.com.ly/products
- - www.google.com.mt/products
- - www.google.com.mx/products
- - www.google.com.my/products
- - www.google.com.na/products
- - www.google.com.nf/products
- - www.google.com.ng/products
- - www.google.com.ni/products
- - www.google.com.np/products
- - www.google.com.om/products
- - www.google.com.pa/products
- - www.google.com.pe/products
- - www.google.com.ph/products
- - www.google.com.pk/products
- - www.google.com.pr/products
- - www.google.com.py/products
- - www.google.com.qa/products
- - www.google.com.sa/products
- - www.google.com.sb/products
- - www.google.com.sg/products
- - www.google.com.sl/products
- - www.google.com.sv/products
- - www.google.com.tj/products
- - www.google.com.tn/products
- - www.google.com.tr/products
- - www.google.com.tw/products
- - www.google.com.ua/products
- - www.google.com.uy/products
- - www.google.com.vc/products
- - www.google.com.vn/products
- - www.google.cv/products
- - www.google.cz/products
- - www.google.de/products
- - www.google.dj/products
- - www.google.dk/products
- - www.google.dm/products
- - www.google.dz/products
- - www.google.ee/products
- - www.google.es/products
- - www.google.fi/products
- - www.google.fm/products
- - www.google.fr/products
- - www.google.ga/products
- - www.google.gd/products
- - www.google.ge/products
- - www.google.gf/products
- - www.google.gg/products
- - www.google.gl/products
- - www.google.gm/products
- - www.google.gp/products
- - www.google.gr/products
- - www.google.gy/products
- - www.google.hn/products
- - www.google.hr/products
- - www.google.ht/products
- - www.google.hu/products
- - www.google.ie/products
- - www.google.im/products
- - www.google.io/products
- - www.google.iq/products
- - www.google.is/products
- - www.google.it/products
- - www.google.it.ao/products
- - www.google.je/products
- - www.google.jo/products
- - www.google.kg/products
- - www.google.ki/products
- - www.google.kz/products
- - www.google.la/products
- - www.google.li/products
- - www.google.lk/products
- - www.google.lt/products
- - www.google.lu/products
- - www.google.lv/products
- - www.google.md/products
- - www.google.me/products
- - www.google.mg/products
- - www.google.mk/products
- - www.google.ml/products
- - www.google.mn/products
- - www.google.ms/products
- - www.google.mu/products
- - www.google.mv/products
- - www.google.mw/products
- - www.google.ne/products
- - www.google.nl/products
- - www.google.no/products
- - www.google.nr/products
- - www.google.nu/products
- - www.google.pl/products
- - www.google.pn/products
- - www.google.ps/products
- - www.google.pt/products
- - www.google.ro/products
- - www.google.rs/products
- - www.google.ru/products
- - www.google.rw/products
- - www.google.sc/products
- - www.google.se/products
- - www.google.sh/products
- - www.google.si/products
- - www.google.sk/products
- - www.google.sm/products
- - www.google.sn/products
- - www.google.so/products
- - www.google.st/products
- - www.google.td/products
- - www.google.tg/products
- - www.google.tk/products
- - www.google.tl/products
- - www.google.tm/products
- - www.google.to/products
- - www.google.tt/products
- - www.google.us/products
- - www.google.vg/products
- - www.google.vu/products
- - www.google.ws/products
-
- Google Video:
- parameters:
- - q
- domains:
- - video.google.com
-
- Goyellow.de:
- parameters:
- - MDN
- domains:
- - www.goyellow.de
-
- Gule Sider:
- parameters:
- - q
- domains:
- - www.gulesider.no
-
- HighBeam:
- parameters:
- - q
- domains:
- - www.highbeam.com
-
- Hit-Parade:
- parameters:
- - p7
- domains:
- - req.-hit-parade.com
- - class.hit-parade.com
- - www.hit-parade.com
-
- Holmes:
- parameters:
- - q
- domains:
- - holmes.ge
-
- Hooseek.com:
- parameters:
- - recherche
- domains:
- - www.hooseek.com
-
- Hotbot:
- parameters:
- - query
- domains:
- - www.hotbot.com
-
- Icerockeet:
- parameters:
- - q
- domains:
- - blogs.icerocket.com
-
- ICQ:
- parameters:
- - q
- domains:
- - www.icq.com
- - search.icq.com
-
- Ilse:
- parameters:
- - search_for
- domains:
- - www.ilse.nl
-
- InfoSpace:
- parameters:
- - q
- - s
- domains:
- - infospace.com
- - dogpile.com
- - www.dogpile.com
- - metacrawler.com
- - webfetch.com
- - webcrawler.com
- - search.kiwee.com
- # powered by InfoSpace
- - isearch.babylon.com
- - start.facemoods.com
- - search.magnetic.com
- - search.searchcompletion.com
- - clusty.com
-
- Interia:
- parameters:
- - q
- domains:
- - www.google.interia.pl
-
- I-play:
- parameters:
- - q
- domains:
- - start.iplay.com
-
- IXquick:
- parameters:
- - query
- domains:
- - ixquick.com
- - www.eu.ixquick.com
- - ixquick.de
- - www.ixquick.de
- - us.ixquick.com
- - s1.us.ixquick.com
- - s2.us.ixquick.com
- - s3.us.ixquick.com
- - s4.us.ixquick.com
- - s5.us.ixquick.com
- - eu.ixquick.com
- - s8-eu.ixquick.com
- - s1-eu.ixquick.de
-
- Jyxo:
- parameters:
- - q
- domains:
- - jyxo.1188.cz
-
- Jungle Spider:
- parameters:
- - q
- domains:
- - www.jungle-spider.de
-
- Jungle Key:
- parameters:
- - query
- domains:
- - junglekey.com
- - junglekey.fr
-
- Kataweb:
- parameters:
- - q
- domains:
- - www.kataweb.it
-
- Kvasir:
- parameters:
- - q
- domains:
- - www.kvasir.no
-
- Latne:
- parameters:
- - q
- domains:
- - www.latne.lv
-
- La Toile Du Quebec Via Google:
- parameters:
- - q
- domains:
- - www.toile.com
- - web.toile.com
-
- Looksmart:
- parameters:
- - key
- domains:
- - www.looksmart.com
-
- Lo.st:
- parameters:
- - x_query
- domains:
- - lo.st
-
- Lycos:
- parameters:
- - query
- domains:
- - search.lycos.com
- - www.lycos.com
- - lycos.com
-
- maailm:
- parameters:
- - tekst
- domains:
- - www.maailm.com
-
- Mail.ru:
- parameters:
- - q
- domains:
- - go.mail.ru
-
- Mamma:
- parameters:
- - query
- domains:
- - www.mamma.com
- - mamma75.mamma.com
-
- Marktplaats:
- parameters:
- - query
- domains:
- - www.marktplaats.nl
-
- Maxwebsearch:
- parameters:
- - query
- domains:
- - maxwebsearch.com
-
- Meta:
- parameters:
- - q
- domains:
- - meta.ua
-
- MetaCrawler.de:
- parameters:
- - qry
- domains:
- - s1.metacrawler.de
- - s2.metacrawler.de
- - s3.metacrawler.de
-
- Metager:
- parameters:
- - eingabe
- domains:
- - meta.rrzn.uni-hannover.de
- - www.metager.de
-
- Metager2:
- parameters:
- - q
- domains:
- - metager2.de
-
- Meinestadt:
- parameters:
- - words
- domains:
- - www.meinestadt.de
-
- Mister Wong:
- parameters:
- - Keywords
- domains:
- - www.mister-wong.com
- - www.mister-wong.de
-
- Monstercrawler:
- parameters:
- - qry
- domains:
- - www.monstercrawler.com
-
- Mozbot:
- parameters:
- - q
- domains:
- - www.mozbot.fr
- - www.mozbot.co.uk
- - www.mozbot.com
-
- El Mundo:
- parameters:
- - q
- domains:
- - ariadna.elmundo.es
-
- MySearch:
- parameters:
- - searchfor
- - searchFor
- domains:
- - www.mysearch.com
- - ms114.mysearch.com
- - ms146.mysearch.com
- - kf.mysearch.myway.com
- - ki.mysearch.myway.com
- - search.myway.com
- - search.mywebsearch.com
-
- Najdi:
- parameters:
- - q
- domains:
- - www.najdi.si
-
- Nate:
- parameters:
- - q
- domains:
- - search.nate.com
-
- Naver:
- parameters:
- - query
- domains:
- - search.naver.com
-
- Naver Images:
- parameters:
- - query
- domains:
- - image.search.naver.com
- - imagesearch.naver.com
-
- Needtofind:
- parameters:
- - searchfor
- domains:
- - ko.search.need2find.com
-
- Neti:
- parameters:
- - query
- domains:
- - www.neti.ee
-
- Nifty:
- parameters:
- - q
- domains:
- - search.nifty.com
-
- Nigma:
- parameters:
- - s
- domains:
- - nigma.ru
-
- Onet:
- parameters:
- - qt
- domains:
- - szukaj.onet.pl
-
- Online.no:
- parameters:
- - q
- domains:
- - online.no
-
- Opplysningen 1881:
- parameters:
- - Query
- domains:
- - www.1881.no
-
- Orange:
- parameters:
- - q
- domains:
- - busca.orange.es
- - search.orange.co.uk
-
- Paperball:
- parameters:
- - q
- domains:
- - www.paperball.de
-
- PeoplePC:
- parameters:
- - q
- domains:
- - search.peoplepc.com
-
- Picsearch:
- parameters:
- - q
- domains:
- - www.picsearch.com
-
- Plazoo:
- parameters:
- - q
- domains:
- - www.plazoo.com
-
- Poisk.ru:
- parameters:
- - q
- domains:
- - www.plazoo.com
-
- PriceRunner:
- parameters:
- - q
- domains:
- - www.pricerunner.co.uk
-
- qip:
- parameters:
- - query
- domains:
- - search.qip.ru
-
- Qualigo:
- parameters:
- - q
- domains:
- - www.qualigo.at
- - www.qualigo.ch
- - www.qualigo.de
- - www.qualigo.nl
-
- Rakuten:
- parameters:
- - qt
- domains:
- - websearch.rakuten.co.jp
-
- Rambler:
- parameters:
- - query
- - words
- domains:
- - nova.rambler.ru
-
- RPMFind:
- parameters:
- - query
- domains:
- - rpmfind.net
- - fr2.rpmfind.net
-
- Road Runner Search:
- parameters:
- - q
- domains:
- - search.rr.com
-
- Sapo:
- parameters:
- - q
- domains:
- - pesquisa.sapo.pt
-
- # Add Scour.com
-
- Search.com:
- parameters:
- - q
- domains:
- - www.search.com
-
- Search.ch:
- parameters:
- - q
- domains:
- - www.search.ch
-
- Searchalot:
- parameters:
- - q
- domains:
- - searchalot.com
-
- SearchCanvas:
- parameters:
- - q
- domains:
- - www.searchcanvas.com
-
- Searchy:
- parameters:
- - q
- domains:
- - www.searchy.co.uk
-
- # Add setooz.com
-
- Seznam:
- parameters:
- - q
- domains:
- - search.seznam.cz
-
- Sharelook:
- parameters:
- - keyword
- domains:
- - www.sharelook.fr
-
- Skynet:
- parameters:
- - q
- domains:
- - www.skynet.be
-
- Sogou:
- parameters:
- - query
- domains:
- - www.sougou.com
-
- Softonic:
- parameters:
- - q
- domains:
- - search.softonic.com
-
- soso.com:
- parameters:
- - w
- domains:
- - www.soso.com
-
- Snapdo:
- parameters:
- - q
- domains:
- - search.snapdo.com
-
- Startpagina:
- parameters:
- - q
- domains:
- - startgoogle.startpagina.nl
-
- Startsiden:
- parameters:
- - q
- domains:
- - www.startsiden.no
-
- suche.info:
- parameters:
- - q
- domains:
- - suche.info
-
- Suchmaschine.com:
- parameters:
- - suchstr
- domains:
- - www.suchmaschine.com
-
- Suchnase:
- parameters:
- - q
- domains:
- - www.suchnase.de
-
- TalkTalk:
- parameters:
- - query
- domains:
- - www.talktalk.co.uk
-
- Technorati:
- parameters:
- - q
- domains:
- - technorati.com
-
- Teoma:
- parameters:
- - q
- domains:
- - www.teoma.com
-
- Terra:
- parameters:
- - query
- domains:
- - buscador.terra.es
- - buscador.terra.cl
- - buscador.terra.com.br
-
- Tiscali:
- parameters:
- - q
- - key
- domains:
- - search.tiscali.it
- - search-dyn.tiscali.it
- - hledani.tiscali.cz
-
- Tixuma:
- parameters:
- - sc
- domains:
- - www.tixuma.de
-
- T-Online:
- parameters:
- - q
- domains:
- - suche.t-online.de
- - brisbane.t-online.de
- - navigationshilfe.t-online.de
-
- Toolbarhome:
- parameters:
- - q
- domains:
- - www.toolbarhome.com
- - vshare.toolbarhome.com
-
- Trouvez.com:
- parameters:
- - query
- domains:
- - www.trouvez.com
-
- TrovaRapido:
- parameters:
- - q
- domains:
- - www.trovarapido.com
-
- Trusted-Search:
- parameters:
- - w
- domains:
- - www.trusted--search.com
-
- Twingly:
- parameters:
- - q
- domains:
- - www.twingly.com
-
- uol.com.br:
- parameters:
- - q
- domains:
- - busca.uol.com.br
-
- URL.ORGanizier:
- parameters:
- - q
- domains:
- - www.url.org
-
- Vinden:
- parameters:
- - q
- domains:
- - www.vinden.nl
-
- Vindex:
- parameters:
- - search_for
- domains:
- - www.vindex.nl
- - search.vindex.nl
-
- Virgilio:
- parameters:
- - qs
- domains:
- - ricerca.virgilio.it
- - ricercaimmagini.virgilio.it
- - ricercavideo.virgilio.it
- - ricercanews.virgilio.it
- - mobile.virgilio.it
-
- Voila:
- parameters:
- - rdata
- - kw
- domains:
- - search.ke.voila.fr
- - www.lemoteur.fr
-
- Volny:
- parameters:
- - search
- domains:
- - web.volny.cz
-
- Walhello :
- parameters:
- - key
- domains:
- - www.walhello.info
- - www.walhello.com
- - www.walhello.de
- - www.walhello.nl
-
- Web.de:
- parameters:
- - su
- domains:
- - suche.web.de
-
- Web.nl:
- parameters:
- - zoekwoord
- domains:
- - www.web.nl
-
- Weborama:
- parameters:
- - QUERY
- domains:
- - www.weborama.com
-
- WebSearch:
- parameters:
- - qkw
- - q
- domains:
- - www.websearch.com
-
- Winamp:
- parameters:
- - q
- domains:
- - search.winamp.com
-
- Witch:
- parameters:
- - search
- domains:
- - www.witch.de
-
- Wirtualna Polska:
- parameters:
- - szukaj
- domains:
- - szukaj.wp.pl
-
- WWW:
- parameters:
- - query
- domains:
- - search.www.ee
-
- X-recherche:
- parameters:
- - MOTS
- domains:
- - www.x-recherche.com
-
- Yahoo!:
- parameters:
- - p
- - q
- domains:
- - search.yahoo.com
- - yahoo.com
- - ar.search.yahoo.com
- - ar.yahoo.com
- - au.search.yahoo.com
- - au.yahoo.com
- - br.search.yahoo.com
- - br.yahoo.com
- - cade.searchde.yahoo.com
- - cade.yahoo.com
- - chinese.searchinese.yahoo.com
- - chinese.yahoo.com
- - cn.search.yahoo.com
- - cn.yahoo.com
- - de.search.yahoo.com
- - de.yahoo.com
- - dk.search.yahoo.com
- - dk.yahoo.com
- - es.search.yahoo.com
- - es.yahoo.com
- - espanol.searchpanol.yahoo.com
- - espanol.searchpanol.yahoo.com
- - espanol.yahoo.com
- - espanol.yahoo.com
- - fr.search.yahoo.com
- - fr.yahoo.com
- - ie.search.yahoo.com
- - ie.yahoo.com
- - it.search.yahoo.com
- - it.yahoo.com
- - kr.search.yahoo.com
- - kr.yahoo.com
- - mx.search.yahoo.com
- - mx.yahoo.com
- - no.search.yahoo.com
- - no.yahoo.com
- - nz.search.yahoo.com
- - nz.yahoo.com
- - one.cn.yahoo.com
- - one.searchn.yahoo.com
- - qc.search.yahoo.com
- - qc.search.yahoo.com
- - qc.search.yahoo.com
- - qc.yahoo.com
- - qc.yahoo.com
- - se.search.yahoo.com
- - se.search.yahoo.com
- - se.yahoo.com
- - search.searcharch.yahoo.com
- - search.yahoo.com
- - uk.search.yahoo.com
- - uk.yahoo.com
- - www.yahoo.co.jp
- - search.yahoo.co.jp
- # powered by Yahoo
- - www.cercato.it
- - search.offerbox.com
- - ys.mirostart.com
-
- Yahoo! Images:
- parameters:
- - p
- - q
- domains:
- - image.yahoo.cn
- - images.search.yahoo.com
-
- Yam:
- parameters:
- - k
- domains:
- - search.yam.com
-
- Yandex:
- parameters:
- - text
- domains:
- - yandex.ru
- - yandex.ua
- - yandex.com
- - yandex.by
- - www.yandex.ru
- - www.yandex.ua
- - www.yandex.com
- - www.yandex.by
-
- Yandex Images:
- parameters:
- - text
- domains:
- - images.yandex.ru
- - images.yandex.ua
- - images.yandex.com
-
- Yasni:
- parameters:
- - query
- domains:
- - www.yasni.de
- - www.yasni.com
- - www.yasni.co.uk
- - www.yasni.ch
- - www.yasni.at
-
- Yatedo:
- parameters:
- - q
- domains:
- - www.yatedo.com
- - www.yatedo.fr
-
- # Add Yellowmap:
-
- Yippy:
- parameters:
- - q
- - query
- domains:
- - search.yippy.com
-
- YouGoo:
- parameters:
- - q
- domains:
- - www.yougoo.fr
-
- Zapmeta:
- parameters:
- - q
- - query
- domains:
- - www.zapmeta.com
- - www.zapmeta.nl
- - www.zapmeta.de
- - uk.zapmeta.com
-
- Zoek:
- parameters:
- - q
- domains:
- - www3.zoek.nl
-
- Zhongsou:
- parameters:
- - w
- domains:
- - p.zhongsou.com
-
- Zoeken:
- parameters:
- - q
- domains:
- - www.zoeken.nl
-
- Zoohoo:
- parameters:
- - q
- domains:
- - zoohoo.cz
diff --git a/vendor/snowplow/referer-parser/nodejs/index.js b/vendor/snowplow/referer-parser/nodejs/index.js
deleted file mode 100644
index e70f5fa52..000000000
--- a/vendor/snowplow/referer-parser/nodejs/index.js
+++ /dev/null
@@ -1,133 +0,0 @@
-
-var fs = require('fs')
- , url = require('url')
- , querystring = require('querystring')
- , yaml = require('js-yaml')
- , path = require('path')
- ;
-
-module.exports = Referer
-
-var dataFile = fs.readFileSync(path.join(__dirname, 'data', 'referers.yml'))
-var REFERERS = loadReferers(yaml.load(dataFile.toString()))
-
-function loadReferers (source) {
- var referers_dict = {}
-
- for(var medium in source) {
- var conf_list = source[medium]
-
- for(var referer_name in conf_list) {
- var config = conf_list[referer_name]
- var params = null
-
- if(config.parameters) {
- params = config.parameters.map(function(p) { return p.toLowerCase() })
- }
- config.domains.forEach(function(domain){
- referers_dict[domain] = {
- 'name': referer_name,
- 'medium': medium
- }
- if(params){
- referers_dict[domain]['params'] = params
- }
- })
- }
- }
- return referers_dict
-}
-
-function Referer (referer_url, current_url, referers) {
- this.known = false
- this.referer = null
- this.medium = 'unknown'
- this.search_parameter = null
- this.search_term = null
- this.referers = referers || REFERERS
-
- var ref_uri = url.parse(referer_url)
- var ref_host = ref_uri.hostname
- this.known = Boolean(~['http:', 'https:'].indexOf(ref_uri.protocol))
- this.uri = ref_uri
-
- if(!this.known) return
-
- if(current_url){
- var curr_uri = url.parse(current_url)
- var curr_host = curr_uri.hostname
-
- if(curr_host == ref_host) {
- this.medium = 'internal'
- return
- }
- }
-
- var referer = this._lookup_referer(ref_host, ref_uri.pathname, true)
- if(!referer){
- referer = this._lookup_referer(ref_host, ref_uri.pathname, false)
- if(!referer){
- this.medium = 'unknown'
- return
- }
- }
-
- this.referer = referer['name']
- this.medium = referer['medium']
-
- if(referer['medium'] == 'search') {
- if(!referer['params']) return
-
- var pqs = querystring.parse(ref_uri.query)
-
- for(var param in pqs) {
- var val = pqs[param]
-
- if(referer['params'].indexOf(param.toLowerCase()) !== -1) {
- this.search_parameter = param
- this.search_term = val
- }
- }
- }
-}
-
-Referer.prototype._lookup_referer = function(ref_host, ref_path, include_path) {
- // console.log(ref_host, ref_path, include_path)
- var referer = null
-
- if(include_path)
- referer = this.referers[ref_host + ref_path]
- else
- referer = this.referers[ref_host]
- if(!referer) {
- if(include_path){
- var path_parts = ref_path.split('/')
- if(path_parts.length > 1) {
- try {
- referer = this.referers[ref_host + '/' + path_parts[1]]
- } catch (e) {
-
- }
- }
- }
- }
-
- if(!referer) {
- try{
- var idx = ref_host.indexOf('.')
- if(idx === -1) return null
-
- var slicedHost = ref_host.slice(idx + 1)
- return this._lookup_referer(
- slicedHost,
- ref_path, include_path
- )
- } catch (e) {
- console.error(e)
- return null
- }
- } else return referer
-};
-
-// var r = new Referer("http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari")
-// console.log(r.uri)
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/nodejs/package.json b/vendor/snowplow/referer-parser/nodejs/package.json
deleted file mode 100644
index cbefc3bd9..000000000
--- a/vendor/snowplow/referer-parser/nodejs/package.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "name": "referer-parser",
- "version": "0.0.3",
- "description": "library for extracting marketing attribution data (such as search terms) from referrer URLs",
- "main": "index.js",
- "scripts": {
- "test": "make test"
- },
- "repository": "",
- "author": "Martin Katrenik ",
- "licenses": [
- {
- "type": "Apache License, Version 2.0",
- "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
- }
- ],
- "dependencies": {
- "js-yaml": "~2.1.0"
- },
- "devDependencies": {
- "mocha": "~1.12.0"
- }
-}
diff --git a/vendor/snowplow/referer-parser/nodejs/test/test.js b/vendor/snowplow/referer-parser/nodejs/test/test.js
deleted file mode 100644
index 69c4a797a..000000000
--- a/vendor/snowplow/referer-parser/nodejs/test/test.js
+++ /dev/null
@@ -1,182 +0,0 @@
-
-var assert = require('assert')
- , Referer = require('..')
- ;
-
-function checkEquals (ref_obj, referer, term, medium) {
- assert.ok(ref_obj.known)
- assert.equal(ref_obj.referer, referer)
- assert.equal(ref_obj.search_term, term)
- assert.equal(ref_obj.medium, medium)
-}
-
-function check_no_term (ref_obj, referer, medium) {
- assert.ok(ref_obj.known)
- assert.equal(ref_obj.referer, referer)
- assert.equal(ref_obj.search_term, null)
- assert.equal(ref_obj.medium, medium)
-}
-
-describe('tests', function(){
- it('test_google_minimal', function(){
- var r = new Referer("http://www.google.com/search")
- assert.ok(r.known)
- assert.equal(r.referer, 'Google')
- assert.equal(r.search_term, null)
- assert.equal(r.medium, 'search')
- })
-
- it('test_google_term', function(){
- var r = new Referer("http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari")
- checkEquals(r, 'Google', 'gateway oracle cards denise linn', 'search')
- })
-
- it('test_powered_by_google', function(){
- var r = new Referer("http://isearch.avg.com/pages/images.aspx?q=tarot+card+change&sap=\
- dsp&lang=en&mid=209215200c4147d1a9d6d1565005540b-b0d4f81a8999f5981f04537c5ec8468fd523459\
- 3&cid=%7B50F9298B-C111-4C7E-9740-363BF0015949%7D&v=12.1.0.21&ds=AVG&d=7%2F23%2F2012+10%3\
- A31%3A08+PM&pr=fr&sba=06oENya4ZG1YS6vOLJwpLiFdjG91ICt2YE59W2p5ENc2c4w8KvJb5xbvjkj3ceMjny\
- TSpZq-e6pj7GQUylIQtuK4psJU60wZuI-8PbjX-OqtdX3eIcxbMoxg3qnIasP0ww2fuID1B-p2qJln8vBHxWztkp\
- xeixjZPSppHnrb9fEcx62a9DOR0pZ-V-Kjhd-85bIL0QG5qi1OuA4M1eOP4i_NzJQVRXPQDmXb-CpIcruc2h5FE9\
- 2Tc8QMUtNiTEWBbX-QiCoXlgbHLpJo5Jlq-zcOisOHNWU2RSHYJnK7IUe_SH6iQ.%2CYT0zO2s9MTA7aD1mNjZmZ\
- DBjMjVmZDAxMGU4&snd=hdr&tc=test1")
- checkEquals(r, 'Google', 'tarot card change', 'search')
- })
-
- it('test_google_img_search', function(){
- var r = new Referer("http://www.google.fr/imgres?q=Ogham+the+celtic+oracle&hl=fr&safe=\
- off&client=firefox-a&hs=ZDu&sa=X&rls=org.mozilla:fr-FR:unofficial&tbm=isch&prmd=imvnsa&t\
- bnid=HUVaj-o88ZRdYM:&imgrefurl=http://www.psychicbazaar.com/oracles/101-ogham-the-celtic\
- -oracle-set.html&docid=DY5_pPFMliYUQM&imgurl=http://mdm.pbzstatic.com/oracles/ogham-the-\
- celtic-oracle-set/montage.png&w=734&h=250&ei=GPdWUIePCOqK0AWp3oCQBA&zoom=1&iact=hc&vpx=1\
- 29&vpy=276&dur=827&hovh=131&hovw=385&tx=204&ty=71&sig=104115776612919232039&page=1&tbnh=\
- 69&tbnw=202&start=0&ndsp=26&ved=1t:429,r:13,s:0,i:114&biw=1272&bih=826")
- checkEquals(r, 'Google Images', 'Ogham the celtic oracle', 'search')
- })
-
- it('test_yahoo_search', function(){
- var r = new Referer("http://es.search.yahoo.com/search;_ylt=A7x9QbwbZXxQ9EMAPCKT.Qt.?p="
- +"BIEDERMEIER+FORTUNE+TELLING+CARDS&ei=utf-8&type=685749&fr=chr-greentree_gc&xargs=0&pstar"
- +"t=1&b=11")
- checkEquals(r, 'Yahoo!', 'BIEDERMEIER FORTUNE TELLING CARDS', 'search')
- })
-
- it('test_yahoo_img_search', function(){
- var r = new Referer("http://it.images.search.yahoo.com/images/view;_ylt=A0PDodgQmGBQpn\
- 4AWQgdDQx.;_ylu=X3oDMTBlMTQ4cGxyBHNlYwNzcgRzbGsDaW1n?back=http%3A%2F%2Fit.images.search.\
- yahoo.com%2Fsearch%2Fimages%3Fp%3DEarth%2BMagic%2BOracle%2BCards%26fr%3Dmcafee%26fr2%3Dp\
- iv-web%26tab%3Dorganic%26ri%3D5&w=1064&h=1551&imgurl=mdm.pbzstatic.com%2Foracles%2Fearth\
- -magic-oracle-cards%2Fcard-1.png&rurl=http%3A%2F%2Fwww.psychicbazaar.com%2Foracles%2F143\
- -earth-magic-oracle-cards.html&size=2.8+KB&name=Earth+Magic+Oracle+Cards+-+Psychic+Bazaa\
- r&p=Earth+Magic+Oracle+Cards&oid=f0a5ad5c4211efe1c07515f56cf5a78e&fr2=piv-web&fr=mcafee&\
- tt=Earth%2BMagic%2BOracle%2BCards%2B-%2BPsychic%2BBazaar&b=0&ni=90&no=5&ts=&tab=organic&\
- sigr=126n355ib&sigb=13hbudmkc&sigi=11ta8f0gd&.crumb=IZBOU1c0UHU")
- checkEquals(r, 'Yahoo! Images', 'Earth Magic Oracle Cards', 'search')
- })
-
- it("test_price_runner_search", function(){
- var r = new Referer("http://www.pricerunner.co.uk/search?displayNoHitsMessage=1&q=wild+wisdom+of+the+faery+oracle")
- checkEquals(r, 'PriceRunner', 'wild wisdom of the faery oracle', 'search')
- })
-
- it("test_bing_img", function(){
- var r = new Referer("http://www.bing.com/images/search?q=psychic+oracle+cards&view=det\
- ail&id=D268EDDEA8D3BF20AF887E62AF41E8518FE96F08")
- checkEquals(r, 'Bing Images', 'psychic oracle cards', 'search')
- })
-
- it("test_ixquick", function(){
- var r = new Referer("https://s3-us3.ixquick.com/do/search")
- assert.ok(r.known)
- assert.equal(r.referer, 'IXquick')
- assert.equal(r.search_term, null)
- assert.equal(r.medium, 'search')
- })
-
- it("test_aol_search", function(){
- var r = new Referer("http://aolsearch.aol.co.uk/aol/search?s_chn=hp&enabled_terms=&s_i\
- t=aoluk-homePage50&q=pendulums")
- checkEquals(r, 'AOL', 'pendulums', 'search')
- })
-
- it("test_ask_search", function(){
- var r = new Referer("http://uk.search-results.com/web?qsrc=1&o=1921&l=dis&q=pendulums&\
- dm=ctry&atb=sysid%3D406%3Aappid%3D113%3Auid%3D8f40f651e7b608b5%3Auc%3D1346336505%3Aqu%3D\
- pendulums%3Asrc%3Dcrt%3Ao%3D1921&locale=en_GB")
- checkEquals(r, 'Ask', 'pendulums', 'search')
- })
-
- it("test_mailru_search", function(){
- var r = new Referer("http://go.mail.ru/search?q=Gothic%20Tarot%20Cards&where=any&num=1\
- 0&rch=e&sf=20")
- checkEquals(r, 'Mail.ru', 'Gothic Tarot Cards', 'search')
- })
-
- it("test_yandex_search", function(){
- var r = new Referer("http://images.yandex.ru/yandsearch?text=Blue%20Angel%20Oracle%20B"
- +"lue%20Angel%20Oracle&noreask=1&pos=16&rpt=simage&lr=45&img_url=http%3A%2F%2Fmdm.pbzstati"
- +"c.com%2Foracles%2Fblue-angel-oracle%2Fbox-small.png")
- checkEquals(r, 'Yandex Images', 'Blue Angel Oracle Blue Angel Oracle', 'search')
- })
-
- it("test_twitter_redirect", function(){
- var r = new Referer("http://t.co/chrgFZDb")
- check_no_term(r, 'Twitter', 'social')
- })
-
- it("test_fb_social", function(){
- var r = new Referer("http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.psychicbazaar.co\
- m&h=yAQHZtXxS&s=1")
- check_no_term(r, 'Facebook', 'social')
- })
-
- it("test_fb_mobile", function(){
- var r = new Referer("http://m.facebook.com/l.php?u=http%3A%2F%2Fwww.psychicbazaar.com%\
- 2Fblog%2F2012%2F09%2Fpsychic-bazaar-reviews-tarot-foundations-31-days-to-read-tarot-with\
- -confidence%2F&h=kAQGXKbf9&s=1")
- check_no_term(r, 'Facebook', 'social')
- })
-
- it("test_odnoklassniki", function(){
- var r = new Referer("http://www.odnoklassniki.ru/dk?cmd=logExternal&st._aid=Conversati\
- ons_Openlink&st.name=externalLinkRedirect&st.link=http%3A%2F%2Fwww.psychicbazaar.com%2Fo\
- racles%2F187-blue-angel-oracle.html")
- check_no_term(r, 'Odnoklassniki', 'social')
- })
-
- it("test_tumblr", function(){
- var r = new Referer("http://www.tumblr.com/dashboard")
- check_no_term(r, 'Tumblr', 'social')
- })
-
- it("test_tumblr_subdomain", function(){
- var r = new Referer("http://psychicbazaar.tumblr.com/")
- check_no_term(r, 'Tumblr', 'social')
- })
-
- it("test_yahoo_mail", function(){
- var r = new Referer("http://36ohk6dgmcd1n-c.c.yom.mail.yahoo.net/om/api/1.0/openmail.a\
- pp.invoke/36ohk6dgmcd1n/11/1.0.35/us/en-US/view.html/0")
- check_no_term(r, 'Yahoo! Mail', 'email')
- })
-
- it("test_outlookcom_mail", function(){
- var r = new Referer("http://co106w.col106.mail.live.com/default.aspx?rru=inbox")
- check_no_term(r, 'Outlook.com', 'email')
- })
-
- it("test_orange_webmail", function(){
- var r = new Referer("http://webmail1m.orange.fr/webmail/fr_FR/read.html?FOLDER=SF_INBO\
-X&IDMSG=8594&check=&SORTBY=31")
- check_no_term(r, 'Orange Webmail', 'email')
- })
-
- it("test_internal", function(){
- var r = new Referer("http://www.snowplowanalytics.com/about/team",
- "http://www.snowplowanalytics.com/account/profile")
- assert.ok(r.known)
- assert.equal(r.medium, 'internal')
- assert.equal(r.search_term, null)
- assert.equal(r.referer, null)
- })
-})
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/php/MIT-LICENSE.txt b/vendor/snowplow/referer-parser/php/MIT-LICENSE.txt
deleted file mode 100644
index 1a5992ce7..000000000
--- a/vendor/snowplow/referer-parser/php/MIT-LICENSE.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2013 Lars Strojny.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/php/README.md b/vendor/snowplow/referer-parser/php/README.md
deleted file mode 100644
index 86923cff8..000000000
--- a/vendor/snowplow/referer-parser/php/README.md
+++ /dev/null
@@ -1,60 +0,0 @@
-# referer-parser PHP library
-
-This is the PHP implementation of [referer-parser] [referer-parser], the library for extracting search marketing data from referer _(sic)_ URLs.
-
-The implementation uses the shared 'database' of known referers found in [`referers.yml`] [referers-yml].
-
-The PHP version of referer-parser is maintained by [Lars Strojny] [lstrojny].
-
-## Installation
-
-```
-php composer.phar require snowplow/referer-parser dev-master
-```
-
-## Usage
-
-```php
-use Snowplow\RefererParser\Parser;
-
-$parser = new Parser();
-$referer = $parser->parse(
- 'http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari',
- 'http:/www.psychicbazaar.com/shop'
-);
-
-if ($referer->isKnown()) {
- echo $referer->getMedium(); // "Search"
- echo $referer->getSource(); // "Google"
- echo $referer->getSearchTerm(); // "gateway oracle cards denise linn"
-}
-```
-
-## Copyright and license
-
-The referer-parser PHP library is distributed under the MIT License.
-
-Copyright (c) 2013 Lars Strojny.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-[referer-parser]: https://github.com/snowplow/referer-parser
-[referers-yml]: https://github.com/snowplow/referer-parser/blob/master/resources/referers.yml
-
-[lstrojny]: https://github.com/lstrojny
diff --git a/vendor/snowplow/referer-parser/php/build.xml b/vendor/snowplow/referer-parser/php/build.xml
deleted file mode 100644
index 6d4969a86..000000000
--- a/vendor/snowplow/referer-parser/php/build.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vendor/snowplow/referer-parser/php/build/.gitkeep b/vendor/snowplow/referer-parser/php/build/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/vendor/snowplow/referer-parser/php/data/referers.json b/vendor/snowplow/referer-parser/php/data/referers.json
deleted file mode 100644
index 460975ef2..000000000
--- a/vendor/snowplow/referer-parser/php/data/referers.json
+++ /dev/null
@@ -1,4090 +0,0 @@
-{
- "unknown": {
- "Outbrain": {
- "domains": [
- "paid.outbrain.com"
- ]
- },
- "Google": {
- "domains": [
- "support.google.com",
- "developers.google.com",
- "maps.google.com",
- "accounts.google.com",
- "drive.google.com",
- "sites.google.com",
- "groups.google.com",
- "groups.google.co.uk",
- "news.google.co.uk"
- ]
- },
- "Taboola": {
- "domains": [
- "trc.taboola.com",
- "api.taboola.com"
- ]
- },
- "Yahoo!": {
- "domains": [
- "finance.yahoo.com",
- "news.yahoo.com",
- "eurosport.yahoo.com",
- "sports.yahoo.com",
- "astrology.yahoo.com",
- "travel.yahoo.com",
- "answers.yahoo.com",
- "screen.yahoo.com",
- "weather.yahoo.com",
- "messenger.yahoo.com",
- "games.yahoo.com",
- "shopping.yahoo.net",
- "movies.yahoo.com",
- "cars.yahoo.com",
- "lifestyle.yahoo.com",
- "omg.yahoo.com",
- "match.yahoo.net"
- ]
- }
- },
- "search": {
- "TalkTalk": {
- "domains": [
- "www.talktalk.co.uk"
- ],
- "parameters": [
- "query"
- ]
- },
- "1.cz": {
- "domains": [
- "1.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Softonic": {
- "domains": [
- "search.softonic.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "GAIS": {
- "domains": [
- "gais.cs.ccu.edu.tw"
- ],
- "parameters": [
- "q"
- ]
- },
- "Freecause": {
- "domains": [
- "search.freecause.com"
- ],
- "parameters": [
- "p"
- ]
- },
- "360.cn": {
- "domains": [
- "so.360.cn",
- "www.so.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "RPMFind": {
- "domains": [
- "rpmfind.net",
- "fr2.rpmfind.net"
- ],
- "parameters": [
- "query"
- ]
- },
- "Comcast": {
- "domains": [
- "serach.comcast.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Voila": {
- "domains": [
- "search.ke.voila.fr",
- "www.lemoteur.fr"
- ],
- "parameters": [
- "rdata",
- "kw"
- ]
- },
- "Nifty": {
- "domains": [
- "search.nifty.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Atlas": {
- "domains": [
- "searchatlas.centrum.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Lo.st": {
- "domains": [
- "lo.st"
- ],
- "parameters": [
- "x_query"
- ]
- },
- "DasTelefonbuch": {
- "domains": [
- "www1.dastelefonbuch.de"
- ],
- "parameters": [
- "kw"
- ]
- },
- "Fireball": {
- "domains": [
- "www.fireball.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "1und1": {
- "domains": [
- "search.1und1.de"
- ],
- "parameters": [
- "su"
- ]
- },
- "Virgilio": {
- "domains": [
- "ricerca.virgilio.it",
- "ricercaimmagini.virgilio.it",
- "ricercavideo.virgilio.it",
- "ricercanews.virgilio.it",
- "mobile.virgilio.it"
- ],
- "parameters": [
- "qs"
- ]
- },
- "Web.nl": {
- "domains": [
- "www.web.nl"
- ],
- "parameters": [
- "zoekwoord"
- ]
- },
- "Plazoo": {
- "domains": [
- "www.plazoo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Goyellow.de": {
- "domains": [
- "www.goyellow.de"
- ],
- "parameters": [
- "MDN"
- ]
- },
- "AOL": {
- "domains": [
- "search.aol.com",
- "search.aol.it",
- "aolsearch.aol.com",
- "aolsearch.com",
- "www.aolrecherche.aol.fr",
- "www.aolrecherches.aol.fr",
- "www.aolimages.aol.fr",
- "aim.search.aol.com",
- "www.recherche.aol.fr",
- "find.web.aol.com",
- "recherche.aol.ca",
- "aolsearch.aol.co.uk",
- "search.aol.co.uk",
- "aolrecherche.aol.fr",
- "sucheaol.aol.de",
- "suche.aol.de",
- "suche.aolsvc.de",
- "aolbusqueda.aol.com.mx",
- "alicesuche.aol.de",
- "alicesuchet.aol.de",
- "suchet2.aol.de",
- "search.hp.my.aol.com.au",
- "search.hp.my.aol.de",
- "search.hp.my.aol.it",
- "search-intl.netscape.com"
- ],
- "parameters": [
- "q",
- "query"
- ]
- },
- "Acoon": {
- "domains": [
- "www.acoon.de"
- ],
- "parameters": [
- "begriff"
- ]
- },
- "Free": {
- "domains": [
- "search.free.fr",
- "search1-2.free.fr",
- "search1-1.free.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "Apollo Latvia": {
- "domains": [
- "apollo.lv/portal/search/"
- ],
- "parameters": [
- "q"
- ]
- },
- "HighBeam": {
- "domains": [
- "www.highbeam.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "I-play": {
- "domains": [
- "start.iplay.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "FriendFeed": {
- "domains": [
- "friendfeed.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yasni": {
- "domains": [
- "www.yasni.de",
- "www.yasni.com",
- "www.yasni.co.uk",
- "www.yasni.ch",
- "www.yasni.at"
- ],
- "parameters": [
- "query"
- ]
- },
- "Gigablast": {
- "domains": [
- "www.gigablast.com",
- "dir.gigablast.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "arama": {
- "domains": [
- "arama.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Fixsuche": {
- "domains": [
- "www.fixsuche.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Apontador": {
- "domains": [
- "apontador.com.br",
- "www.apontador.com.br"
- ],
- "parameters": [
- "q"
- ]
- },
- "Search.com": {
- "domains": [
- "www.search.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Monstercrawler": {
- "domains": [
- "www.monstercrawler.com"
- ],
- "parameters": [
- "qry"
- ]
- },
- "Google Images": {
- "domains": [
- "google.ac/imgres",
- "google.ad/imgres",
- "google.ae/imgres",
- "google.am/imgres",
- "google.as/imgres",
- "google.at/imgres",
- "google.az/imgres",
- "google.ba/imgres",
- "google.be/imgres",
- "google.bf/imgres",
- "google.bg/imgres",
- "google.bi/imgres",
- "google.bj/imgres",
- "google.bs/imgres",
- "google.by/imgres",
- "google.ca/imgres",
- "google.cat/imgres",
- "google.cc/imgres",
- "google.cd/imgres",
- "google.cf/imgres",
- "google.cg/imgres",
- "google.ch/imgres",
- "google.ci/imgres",
- "google.cl/imgres",
- "google.cm/imgres",
- "google.cn/imgres",
- "google.co.bw/imgres",
- "google.co.ck/imgres",
- "google.co.cr/imgres",
- "google.co.id/imgres",
- "google.co.il/imgres",
- "google.co.in/imgres",
- "google.co.jp/imgres",
- "google.co.ke/imgres",
- "google.co.kr/imgres",
- "google.co.ls/imgres",
- "google.co.ma/imgres",
- "google.co.mz/imgres",
- "google.co.nz/imgres",
- "google.co.th/imgres",
- "google.co.tz/imgres",
- "google.co.ug/imgres",
- "google.co.uk/imgres",
- "google.co.uz/imgres",
- "google.co.ve/imgres",
- "google.co.vi/imgres",
- "google.co.za/imgres",
- "google.co.zm/imgres",
- "google.co.zw/imgres",
- "google.com/imgres",
- "google.com.af/imgres",
- "google.com.ag/imgres",
- "google.com.ai/imgres",
- "google.com.ar/imgres",
- "google.com.au/imgres",
- "google.com.bd/imgres",
- "google.com.bh/imgres",
- "google.com.bn/imgres",
- "google.com.bo/imgres",
- "google.com.br/imgres",
- "google.com.by/imgres",
- "google.com.bz/imgres",
- "google.com.co/imgres",
- "google.com.cu/imgres",
- "google.com.cy/imgres",
- "google.com.do/imgres",
- "google.com.ec/imgres",
- "google.com.eg/imgres",
- "google.com.et/imgres",
- "google.com.fj/imgres",
- "google.com.gh/imgres",
- "google.com.gi/imgres",
- "google.com.gt/imgres",
- "google.com.hk/imgres",
- "google.com.jm/imgres",
- "google.com.kh/imgres",
- "google.com.kw/imgres",
- "google.com.lb/imgres",
- "google.com.lc/imgres",
- "google.com.ly/imgres",
- "google.com.mt/imgres",
- "google.com.mx/imgres",
- "google.com.my/imgres",
- "google.com.na/imgres",
- "google.com.nf/imgres",
- "google.com.ng/imgres",
- "google.com.ni/imgres",
- "google.com.np/imgres",
- "google.com.om/imgres",
- "google.com.pa/imgres",
- "google.com.pe/imgres",
- "google.com.ph/imgres",
- "google.com.pk/imgres",
- "google.com.pr/imgres",
- "google.com.py/imgres",
- "google.com.qa/imgres",
- "google.com.sa/imgres",
- "google.com.sb/imgres",
- "google.com.sg/imgres",
- "google.com.sl/imgres",
- "google.com.sv/imgres",
- "google.com.tj/imgres",
- "google.com.tn/imgres",
- "google.com.tr/imgres",
- "google.com.tw/imgres",
- "google.com.ua/imgres",
- "google.com.uy/imgres",
- "google.com.vc/imgres",
- "google.com.vn/imgres",
- "google.cv/imgres",
- "google.cz/imgres",
- "google.de/imgres",
- "google.dj/imgres",
- "google.dk/imgres",
- "google.dm/imgres",
- "google.dz/imgres",
- "google.ee/imgres",
- "google.es/imgres",
- "google.fi/imgres",
- "google.fm/imgres",
- "google.fr/imgres",
- "google.ga/imgres",
- "google.gd/imgres",
- "google.ge/imgres",
- "google.gf/imgres",
- "google.gg/imgres",
- "google.gl/imgres",
- "google.gm/imgres",
- "google.gp/imgres",
- "google.gr/imgres",
- "google.gy/imgres",
- "google.hn/imgres",
- "google.hr/imgres",
- "google.ht/imgres",
- "google.hu/imgres",
- "google.ie/imgres",
- "google.im/imgres",
- "google.io/imgres",
- "google.iq/imgres",
- "google.is/imgres",
- "google.it/imgres",
- "google.it.ao/imgres",
- "google.je/imgres",
- "google.jo/imgres",
- "google.kg/imgres",
- "google.ki/imgres",
- "google.kz/imgres",
- "google.la/imgres",
- "google.li/imgres",
- "google.lk/imgres",
- "google.lt/imgres",
- "google.lu/imgres",
- "google.lv/imgres",
- "google.md/imgres",
- "google.me/imgres",
- "google.mg/imgres",
- "google.mk/imgres",
- "google.ml/imgres",
- "google.mn/imgres",
- "google.ms/imgres",
- "google.mu/imgres",
- "google.mv/imgres",
- "google.mw/imgres",
- "google.ne/imgres",
- "google.nl/imgres",
- "google.no/imgres",
- "google.nr/imgres",
- "google.nu/imgres",
- "google.pl/imgres",
- "google.pn/imgres",
- "google.ps/imgres",
- "google.pt/imgres",
- "google.ro/imgres",
- "google.rs/imgres",
- "google.ru/imgres",
- "google.rw/imgres",
- "google.sc/imgres",
- "google.se/imgres",
- "google.sh/imgres",
- "google.si/imgres",
- "google.sk/imgres",
- "google.sm/imgres",
- "google.sn/imgres",
- "google.so/imgres",
- "google.st/imgres",
- "google.td/imgres",
- "google.tg/imgres",
- "google.tk/imgres",
- "google.tl/imgres",
- "google.tm/imgres",
- "google.to/imgres",
- "google.tt/imgres",
- "google.us/imgres",
- "google.vg/imgres",
- "google.vu/imgres",
- "images.google.ws",
- "images.google.ac",
- "images.google.ad",
- "images.google.ae",
- "images.google.am",
- "images.google.as",
- "images.google.at",
- "images.google.az",
- "images.google.ba",
- "images.google.be",
- "images.google.bf",
- "images.google.bg",
- "images.google.bi",
- "images.google.bj",
- "images.google.bs",
- "images.google.by",
- "images.google.ca",
- "images.google.cat",
- "images.google.cc",
- "images.google.cd",
- "images.google.cf",
- "images.google.cg",
- "images.google.ch",
- "images.google.ci",
- "images.google.cl",
- "images.google.cm",
- "images.google.cn",
- "images.google.co.bw",
- "images.google.co.ck",
- "images.google.co.cr",
- "images.google.co.id",
- "images.google.co.il",
- "images.google.co.in",
- "images.google.co.jp",
- "images.google.co.ke",
- "images.google.co.kr",
- "images.google.co.ls",
- "images.google.co.ma",
- "images.google.co.mz",
- "images.google.co.nz",
- "images.google.co.th",
- "images.google.co.tz",
- "images.google.co.ug",
- "images.google.co.uk",
- "images.google.co.uz",
- "images.google.co.ve",
- "images.google.co.vi",
- "images.google.co.za",
- "images.google.co.zm",
- "images.google.co.zw",
- "images.google.com",
- "images.google.com.af",
- "images.google.com.ag",
- "images.google.com.ai",
- "images.google.com.ar",
- "images.google.com.au",
- "images.google.com.bd",
- "images.google.com.bh",
- "images.google.com.bn",
- "images.google.com.bo",
- "images.google.com.br",
- "images.google.com.by",
- "images.google.com.bz",
- "images.google.com.co",
- "images.google.com.cu",
- "images.google.com.cy",
- "images.google.com.do",
- "images.google.com.ec",
- "images.google.com.eg",
- "images.google.com.et",
- "images.google.com.fj",
- "images.google.com.gh",
- "images.google.com.gi",
- "images.google.com.gt",
- "images.google.com.hk",
- "images.google.com.jm",
- "images.google.com.kh",
- "images.google.com.kh",
- "images.google.com.kw",
- "images.google.com.lb",
- "images.google.com.lc",
- "images.google.com.ly",
- "images.google.com.mt",
- "images.google.com.mx",
- "images.google.com.my",
- "images.google.com.na",
- "images.google.com.nf",
- "images.google.com.ng",
- "images.google.com.ni",
- "images.google.com.np",
- "images.google.com.om",
- "images.google.com.pa",
- "images.google.com.pe",
- "images.google.com.ph",
- "images.google.com.pk",
- "images.google.com.pr",
- "images.google.com.py",
- "images.google.com.qa",
- "images.google.com.sa",
- "images.google.com.sb",
- "images.google.com.sg",
- "images.google.com.sl",
- "images.google.com.sv",
- "images.google.com.tj",
- "images.google.com.tn",
- "images.google.com.tr",
- "images.google.com.tw",
- "images.google.com.ua",
- "images.google.com.uy",
- "images.google.com.vc",
- "images.google.com.vn",
- "images.google.cv",
- "images.google.cz",
- "images.google.de",
- "images.google.dj",
- "images.google.dk",
- "images.google.dm",
- "images.google.dz",
- "images.google.ee",
- "images.google.es",
- "images.google.fi",
- "images.google.fm",
- "images.google.fr",
- "images.google.ga",
- "images.google.gd",
- "images.google.ge",
- "images.google.gf",
- "images.google.gg",
- "images.google.gl",
- "images.google.gm",
- "images.google.gp",
- "images.google.gr",
- "images.google.gy",
- "images.google.hn",
- "images.google.hr",
- "images.google.ht",
- "images.google.hu",
- "images.google.ie",
- "images.google.im",
- "images.google.io",
- "images.google.iq",
- "images.google.is",
- "images.google.it",
- "images.google.it.ao",
- "images.google.je",
- "images.google.jo",
- "images.google.kg",
- "images.google.ki",
- "images.google.kz",
- "images.google.la",
- "images.google.li",
- "images.google.lk",
- "images.google.lt",
- "images.google.lu",
- "images.google.lv",
- "images.google.md",
- "images.google.me",
- "images.google.mg",
- "images.google.mk",
- "images.google.ml",
- "images.google.mn",
- "images.google.ms",
- "images.google.mu",
- "images.google.mv",
- "images.google.mw",
- "images.google.ne",
- "images.google.nl",
- "images.google.no",
- "images.google.nr",
- "images.google.nu",
- "images.google.pl",
- "images.google.pn",
- "images.google.ps",
- "images.google.pt",
- "images.google.ro",
- "images.google.rs",
- "images.google.ru",
- "images.google.rw",
- "images.google.sc",
- "images.google.se",
- "images.google.sh",
- "images.google.si",
- "images.google.sk",
- "images.google.sm",
- "images.google.sn",
- "images.google.so",
- "images.google.st",
- "images.google.td",
- "images.google.tg",
- "images.google.tk",
- "images.google.tl",
- "images.google.tm",
- "images.google.to",
- "images.google.tt",
- "images.google.us",
- "images.google.vg",
- "images.google.vu",
- "images.google.ws"
- ],
- "parameters": [
- "q"
- ]
- },
- "ABCs\u00f8k": {
- "domains": [
- "abcsolk.no",
- "verden.abcsok.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Google Product Search": {
- "domains": [
- "google.ac/products",
- "google.ad/products",
- "google.ae/products",
- "google.am/products",
- "google.as/products",
- "google.at/products",
- "google.az/products",
- "google.ba/products",
- "google.be/products",
- "google.bf/products",
- "google.bg/products",
- "google.bi/products",
- "google.bj/products",
- "google.bs/products",
- "google.by/products",
- "google.ca/products",
- "google.cat/products",
- "google.cc/products",
- "google.cd/products",
- "google.cf/products",
- "google.cg/products",
- "google.ch/products",
- "google.ci/products",
- "google.cl/products",
- "google.cm/products",
- "google.cn/products",
- "google.co.bw/products",
- "google.co.ck/products",
- "google.co.cr/products",
- "google.co.id/products",
- "google.co.il/products",
- "google.co.in/products",
- "google.co.jp/products",
- "google.co.ke/products",
- "google.co.kr/products",
- "google.co.ls/products",
- "google.co.ma/products",
- "google.co.mz/products",
- "google.co.nz/products",
- "google.co.th/products",
- "google.co.tz/products",
- "google.co.ug/products",
- "google.co.uk/products",
- "google.co.uz/products",
- "google.co.ve/products",
- "google.co.vi/products",
- "google.co.za/products",
- "google.co.zm/products",
- "google.co.zw/products",
- "google.com/products",
- "google.com.af/products",
- "google.com.ag/products",
- "google.com.ai/products",
- "google.com.ar/products",
- "google.com.au/products",
- "google.com.bd/products",
- "google.com.bh/products",
- "google.com.bn/products",
- "google.com.bo/products",
- "google.com.br/products",
- "google.com.by/products",
- "google.com.bz/products",
- "google.com.co/products",
- "google.com.cu/products",
- "google.com.cy/products",
- "google.com.do/products",
- "google.com.ec/products",
- "google.com.eg/products",
- "google.com.et/products",
- "google.com.fj/products",
- "google.com.gh/products",
- "google.com.gi/products",
- "google.com.gt/products",
- "google.com.hk/products",
- "google.com.jm/products",
- "google.com.kh/products",
- "google.com.kh/products",
- "google.com.kw/products",
- "google.com.lb/products",
- "google.com.lc/products",
- "google.com.ly/products",
- "google.com.mt/products",
- "google.com.mx/products",
- "google.com.my/products",
- "google.com.na/products",
- "google.com.nf/products",
- "google.com.ng/products",
- "google.com.ni/products",
- "google.com.np/products",
- "google.com.om/products",
- "google.com.pa/products",
- "google.com.pe/products",
- "google.com.ph/products",
- "google.com.pk/products",
- "google.com.pr/products",
- "google.com.py/products",
- "google.com.qa/products",
- "google.com.sa/products",
- "google.com.sb/products",
- "google.com.sg/products",
- "google.com.sl/products",
- "google.com.sv/products",
- "google.com.tj/products",
- "google.com.tn/products",
- "google.com.tr/products",
- "google.com.tw/products",
- "google.com.ua/products",
- "google.com.uy/products",
- "google.com.vc/products",
- "google.com.vn/products",
- "google.cv/products",
- "google.cz/products",
- "google.de/products",
- "google.dj/products",
- "google.dk/products",
- "google.dm/products",
- "google.dz/products",
- "google.ee/products",
- "google.es/products",
- "google.fi/products",
- "google.fm/products",
- "google.fr/products",
- "google.ga/products",
- "google.gd/products",
- "google.ge/products",
- "google.gf/products",
- "google.gg/products",
- "google.gl/products",
- "google.gm/products",
- "google.gp/products",
- "google.gr/products",
- "google.gy/products",
- "google.hn/products",
- "google.hr/products",
- "google.ht/products",
- "google.hu/products",
- "google.ie/products",
- "google.im/products",
- "google.io/products",
- "google.iq/products",
- "google.is/products",
- "google.it/products",
- "google.it.ao/products",
- "google.je/products",
- "google.jo/products",
- "google.kg/products",
- "google.ki/products",
- "google.kz/products",
- "google.la/products",
- "google.li/products",
- "google.lk/products",
- "google.lt/products",
- "google.lu/products",
- "google.lv/products",
- "google.md/products",
- "google.me/products",
- "google.mg/products",
- "google.mk/products",
- "google.ml/products",
- "google.mn/products",
- "google.ms/products",
- "google.mu/products",
- "google.mv/products",
- "google.mw/products",
- "google.ne/products",
- "google.nl/products",
- "google.no/products",
- "google.nr/products",
- "google.nu/products",
- "google.pl/products",
- "google.pn/products",
- "google.ps/products",
- "google.pt/products",
- "google.ro/products",
- "google.rs/products",
- "google.ru/products",
- "google.rw/products",
- "google.sc/products",
- "google.se/products",
- "google.sh/products",
- "google.si/products",
- "google.sk/products",
- "google.sm/products",
- "google.sn/products",
- "google.so/products",
- "google.st/products",
- "google.td/products",
- "google.tg/products",
- "google.tk/products",
- "google.tl/products",
- "google.tm/products",
- "google.to/products",
- "google.tt/products",
- "google.us/products",
- "google.vg/products",
- "google.vu/products",
- "google.ws/products",
- "www.google.ac/products",
- "www.google.ad/products",
- "www.google.ae/products",
- "www.google.am/products",
- "www.google.as/products",
- "www.google.at/products",
- "www.google.az/products",
- "www.google.ba/products",
- "www.google.be/products",
- "www.google.bf/products",
- "www.google.bg/products",
- "www.google.bi/products",
- "www.google.bj/products",
- "www.google.bs/products",
- "www.google.by/products",
- "www.google.ca/products",
- "www.google.cat/products",
- "www.google.cc/products",
- "www.google.cd/products",
- "www.google.cf/products",
- "www.google.cg/products",
- "www.google.ch/products",
- "www.google.ci/products",
- "www.google.cl/products",
- "www.google.cm/products",
- "www.google.cn/products",
- "www.google.co.bw/products",
- "www.google.co.ck/products",
- "www.google.co.cr/products",
- "www.google.co.id/products",
- "www.google.co.il/products",
- "www.google.co.in/products",
- "www.google.co.jp/products",
- "www.google.co.ke/products",
- "www.google.co.kr/products",
- "www.google.co.ls/products",
- "www.google.co.ma/products",
- "www.google.co.mz/products",
- "www.google.co.nz/products",
- "www.google.co.th/products",
- "www.google.co.tz/products",
- "www.google.co.ug/products",
- "www.google.co.uk/products",
- "www.google.co.uz/products",
- "www.google.co.ve/products",
- "www.google.co.vi/products",
- "www.google.co.za/products",
- "www.google.co.zm/products",
- "www.google.co.zw/products",
- "www.google.com/products",
- "www.google.com.af/products",
- "www.google.com.ag/products",
- "www.google.com.ai/products",
- "www.google.com.ar/products",
- "www.google.com.au/products",
- "www.google.com.bd/products",
- "www.google.com.bh/products",
- "www.google.com.bn/products",
- "www.google.com.bo/products",
- "www.google.com.br/products",
- "www.google.com.by/products",
- "www.google.com.bz/products",
- "www.google.com.co/products",
- "www.google.com.cu/products",
- "www.google.com.cy/products",
- "www.google.com.do/products",
- "www.google.com.ec/products",
- "www.google.com.eg/products",
- "www.google.com.et/products",
- "www.google.com.fj/products",
- "www.google.com.gh/products",
- "www.google.com.gi/products",
- "www.google.com.gt/products",
- "www.google.com.hk/products",
- "www.google.com.jm/products",
- "www.google.com.kh/products",
- "www.google.com.kh/products",
- "www.google.com.kw/products",
- "www.google.com.lb/products",
- "www.google.com.lc/products",
- "www.google.com.ly/products",
- "www.google.com.mt/products",
- "www.google.com.mx/products",
- "www.google.com.my/products",
- "www.google.com.na/products",
- "www.google.com.nf/products",
- "www.google.com.ng/products",
- "www.google.com.ni/products",
- "www.google.com.np/products",
- "www.google.com.om/products",
- "www.google.com.pa/products",
- "www.google.com.pe/products",
- "www.google.com.ph/products",
- "www.google.com.pk/products",
- "www.google.com.pr/products",
- "www.google.com.py/products",
- "www.google.com.qa/products",
- "www.google.com.sa/products",
- "www.google.com.sb/products",
- "www.google.com.sg/products",
- "www.google.com.sl/products",
- "www.google.com.sv/products",
- "www.google.com.tj/products",
- "www.google.com.tn/products",
- "www.google.com.tr/products",
- "www.google.com.tw/products",
- "www.google.com.ua/products",
- "www.google.com.uy/products",
- "www.google.com.vc/products",
- "www.google.com.vn/products",
- "www.google.cv/products",
- "www.google.cz/products",
- "www.google.de/products",
- "www.google.dj/products",
- "www.google.dk/products",
- "www.google.dm/products",
- "www.google.dz/products",
- "www.google.ee/products",
- "www.google.es/products",
- "www.google.fi/products",
- "www.google.fm/products",
- "www.google.fr/products",
- "www.google.ga/products",
- "www.google.gd/products",
- "www.google.ge/products",
- "www.google.gf/products",
- "www.google.gg/products",
- "www.google.gl/products",
- "www.google.gm/products",
- "www.google.gp/products",
- "www.google.gr/products",
- "www.google.gy/products",
- "www.google.hn/products",
- "www.google.hr/products",
- "www.google.ht/products",
- "www.google.hu/products",
- "www.google.ie/products",
- "www.google.im/products",
- "www.google.io/products",
- "www.google.iq/products",
- "www.google.is/products",
- "www.google.it/products",
- "www.google.it.ao/products",
- "www.google.je/products",
- "www.google.jo/products",
- "www.google.kg/products",
- "www.google.ki/products",
- "www.google.kz/products",
- "www.google.la/products",
- "www.google.li/products",
- "www.google.lk/products",
- "www.google.lt/products",
- "www.google.lu/products",
- "www.google.lv/products",
- "www.google.md/products",
- "www.google.me/products",
- "www.google.mg/products",
- "www.google.mk/products",
- "www.google.ml/products",
- "www.google.mn/products",
- "www.google.ms/products",
- "www.google.mu/products",
- "www.google.mv/products",
- "www.google.mw/products",
- "www.google.ne/products",
- "www.google.nl/products",
- "www.google.no/products",
- "www.google.nr/products",
- "www.google.nu/products",
- "www.google.pl/products",
- "www.google.pn/products",
- "www.google.ps/products",
- "www.google.pt/products",
- "www.google.ro/products",
- "www.google.rs/products",
- "www.google.ru/products",
- "www.google.rw/products",
- "www.google.sc/products",
- "www.google.se/products",
- "www.google.sh/products",
- "www.google.si/products",
- "www.google.sk/products",
- "www.google.sm/products",
- "www.google.sn/products",
- "www.google.so/products",
- "www.google.st/products",
- "www.google.td/products",
- "www.google.tg/products",
- "www.google.tk/products",
- "www.google.tl/products",
- "www.google.tm/products",
- "www.google.to/products",
- "www.google.tt/products",
- "www.google.us/products",
- "www.google.vg/products",
- "www.google.vu/products",
- "www.google.ws/products"
- ],
- "parameters": [
- "q"
- ]
- },
- "DasOertliche": {
- "domains": [
- "www.dasoertliche.de"
- ],
- "parameters": [
- "kw"
- ]
- },
- "InfoSpace": {
- "domains": [
- "infospace.com",
- "dogpile.com",
- "www.dogpile.com",
- "metacrawler.com",
- "webfetch.com",
- "webcrawler.com",
- "search.kiwee.com",
- "isearch.babylon.com",
- "start.facemoods.com",
- "search.magnetic.com",
- "search.searchcompletion.com",
- "clusty.com"
- ],
- "parameters": [
- "q",
- "s"
- ]
- },
- "Weborama": {
- "domains": [
- "www.weborama.com"
- ],
- "parameters": [
- "QUERY"
- ]
- },
- "Bluewin": {
- "domains": [
- "search.bluewin.ch"
- ],
- "parameters": [
- "searchTerm"
- ]
- },
- "Neti": {
- "domains": [
- "www.neti.ee"
- ],
- "parameters": [
- "query"
- ]
- },
- "Winamp": {
- "domains": [
- "search.winamp.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Nigma": {
- "domains": [
- "nigma.ru"
- ],
- "parameters": [
- "s"
- ]
- },
- "Yahoo! Images": {
- "domains": [
- "image.yahoo.cn",
- "images.search.yahoo.com"
- ],
- "parameters": [
- "p",
- "q"
- ]
- },
- "Exalead": {
- "domains": [
- "www.exalead.fr",
- "www.exalead.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Teoma": {
- "domains": [
- "www.teoma.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Needtofind": {
- "domains": [
- "ko.search.need2find.com"
- ],
- "parameters": [
- "searchfor"
- ]
- },
- "Looksmart": {
- "domains": [
- "www.looksmart.com"
- ],
- "parameters": [
- "key"
- ]
- },
- "Wirtualna Polska": {
- "domains": [
- "szukaj.wp.pl"
- ],
- "parameters": [
- "szukaj"
- ]
- },
- "Toolbarhome": {
- "domains": [
- "www.toolbarhome.com",
- "vshare.toolbarhome.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Searchalot": {
- "domains": [
- "searchalot.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yandex": {
- "domains": [
- "yandex.ru",
- "yandex.ua",
- "yandex.com",
- "yandex.by",
- "www.yandex.ru",
- "www.yandex.ua",
- "www.yandex.com",
- "www.yandex.by"
- ],
- "parameters": [
- "text"
- ]
- },
- "canoe.ca": {
- "domains": [
- "web.canoe.ca"
- ],
- "parameters": [
- "q"
- ]
- },
- "Compuserve": {
- "domains": [
- "websearch.cs.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Blogdigger": {
- "domains": [
- "www.blogdigger.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Startpagina": {
- "domains": [
- "startgoogle.startpagina.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "eo": {
- "domains": [
- "eo.st"
- ],
- "parameters": [
- "x_query"
- ]
- },
- "Zhongsou": {
- "domains": [
- "p.zhongsou.com"
- ],
- "parameters": [
- "w"
- ]
- },
- "La Toile Du Quebec Via Google": {
- "domains": [
- "www.toile.com",
- "web.toile.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Paperball": {
- "domains": [
- "www.paperball.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Jungle Spider": {
- "domains": [
- "www.jungle-spider.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "PeoplePC": {
- "domains": [
- "search.peoplepc.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "MetaCrawler.de": {
- "domains": [
- "s1.metacrawler.de",
- "s2.metacrawler.de",
- "s3.metacrawler.de"
- ],
- "parameters": [
- "qry"
- ]
- },
- "Orange": {
- "domains": [
- "busca.orange.es",
- "search.orange.co.uk"
- ],
- "parameters": [
- "q"
- ]
- },
- "Gule Sider": {
- "domains": [
- "www.gulesider.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Francite": {
- "domains": [
- "recherche.francite.com"
- ],
- "parameters": [
- "name"
- ]
- },
- "Ask Toolbar": {
- "domains": [
- "search.tb.ask.com"
- ],
- "parameters": [
- "searchfor"
- ]
- },
- "Trusted-Search": {
- "domains": [
- "www.trusted--search.com"
- ],
- "parameters": [
- "w"
- ]
- },
- "goo": {
- "domains": [
- "search.goo.ne.jp",
- "ocnsearch.goo.ne.jp"
- ],
- "parameters": [
- "MT"
- ]
- },
- "Fast Browser Search": {
- "domains": [
- "www.fastbrowsersearch.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Blogpulse": {
- "domains": [
- "www.blogpulse.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Volny": {
- "domains": [
- "web.volny.cz"
- ],
- "parameters": [
- "search"
- ]
- },
- "Icerockeet": {
- "domains": [
- "blogs.icerocket.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Terra": {
- "domains": [
- "buscador.terra.es",
- "buscador.terra.cl",
- "buscador.terra.com.br"
- ],
- "parameters": [
- "query"
- ]
- },
- "Amazon": {
- "domains": [
- "amazon.com",
- "www.amazon.com"
- ],
- "parameters": [
- "keywords"
- ]
- },
- "Onet": {
- "domains": [
- "szukaj.onet.pl"
- ],
- "parameters": [
- "qt"
- ]
- },
- "Digg": {
- "domains": [
- "digg.com"
- ],
- "parameters": [
- "s"
- ]
- },
- "Abacho": {
- "domains": [
- "www.abacho.de",
- "www.abacho.com",
- "www.abacho.co.uk",
- "www.se.abacho.com",
- "www.tr.abacho.com",
- "www.abacho.at",
- "www.abacho.fr",
- "www.abacho.es",
- "www.abacho.ch",
- "www.abacho.it"
- ],
- "parameters": [
- "q"
- ]
- },
- "maailm": {
- "domains": [
- "www.maailm.com"
- ],
- "parameters": [
- "tekst"
- ]
- },
- "Flix": {
- "domains": [
- "www.flix.de"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Suchnase": {
- "domains": [
- "www.suchnase.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Freenet": {
- "domains": [
- "suche.freenet.de"
- ],
- "parameters": [
- "query",
- "Keywords"
- ]
- },
- "Poisk.ru": {
- "domains": [
- "www.plazoo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Sharelook": {
- "domains": [
- "www.sharelook.fr"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Najdi": {
- "domains": [
- "www.najdi.si"
- ],
- "parameters": [
- "q"
- ]
- },
- "Picsearch": {
- "domains": [
- "www.picsearch.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Mail.ru": {
- "domains": [
- "go.mail.ru"
- ],
- "parameters": [
- "q"
- ]
- },
- "Alexa": {
- "domains": [
- "alexa.com",
- "search.toolbars.alexa.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Metager": {
- "domains": [
- "meta.rrzn.uni-hannover.de",
- "www.metager.de"
- ],
- "parameters": [
- "eingabe"
- ]
- },
- "Technorati": {
- "domains": [
- "technorati.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Globososo": {
- "domains": [
- "searches.globososo.com",
- "search.globososo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "WWW": {
- "domains": [
- "search.www.ee"
- ],
- "parameters": [
- "query"
- ]
- },
- "Trouvez.com": {
- "domains": [
- "www.trouvez.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "IXquick": {
- "domains": [
- "ixquick.com",
- "www.eu.ixquick.com",
- "ixquick.de",
- "www.ixquick.de",
- "us.ixquick.com",
- "s1.us.ixquick.com",
- "s2.us.ixquick.com",
- "s3.us.ixquick.com",
- "s4.us.ixquick.com",
- "s5.us.ixquick.com",
- "eu.ixquick.com",
- "s8-eu.ixquick.com",
- "s1-eu.ixquick.de"
- ],
- "parameters": [
- "query"
- ]
- },
- "Naver Images": {
- "domains": [
- "image.search.naver.com",
- "imagesearch.naver.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Zapmeta": {
- "domains": [
- "www.zapmeta.com",
- "www.zapmeta.nl",
- "www.zapmeta.de",
- "uk.zapmeta.com"
- ],
- "parameters": [
- "q",
- "query"
- ]
- },
- "Yippy": {
- "domains": [
- "search.yippy.com"
- ],
- "parameters": [
- "q",
- "query"
- ]
- },
- "Gomeo": {
- "domains": [
- "www.gomeo.com"
- ],
- "parameters": [
- "Keywords"
- ]
- },
- "Walhello": {
- "domains": [
- "www.walhello.info",
- "www.walhello.com",
- "www.walhello.de",
- "www.walhello.nl"
- ],
- "parameters": [
- "key"
- ]
- },
- "Meta": {
- "domains": [
- "meta.ua"
- ],
- "parameters": [
- "q"
- ]
- },
- "Skynet": {
- "domains": [
- "www.skynet.be"
- ],
- "parameters": [
- "q"
- ]
- },
- "Searchy": {
- "domains": [
- "www.searchy.co.uk"
- ],
- "parameters": [
- "q"
- ]
- },
- "Findwide": {
- "domains": [
- "search.findwide.com"
- ],
- "parameters": [
- "k"
- ]
- },
- "WebSearch": {
- "domains": [
- "www.websearch.com"
- ],
- "parameters": [
- "qkw",
- "q"
- ]
- },
- "Rambler": {
- "domains": [
- "nova.rambler.ru"
- ],
- "parameters": [
- "query",
- "words"
- ]
- },
- "Latne": {
- "domains": [
- "www.latne.lv"
- ],
- "parameters": [
- "q"
- ]
- },
- "MySearch": {
- "domains": [
- "www.mysearch.com",
- "ms114.mysearch.com",
- "ms146.mysearch.com",
- "kf.mysearch.myway.com",
- "ki.mysearch.myway.com",
- "search.myway.com",
- "search.mywebsearch.com"
- ],
- "parameters": [
- "searchfor",
- "searchFor"
- ]
- },
- "Cuil": {
- "domains": [
- "www.cuil.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Tixuma": {
- "domains": [
- "www.tixuma.de"
- ],
- "parameters": [
- "sc"
- ]
- },
- "Sapo": {
- "domains": [
- "pesquisa.sapo.pt"
- ],
- "parameters": [
- "q"
- ]
- },
- "Gnadenmeer": {
- "domains": [
- "www.gnadenmeer.de"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Arcor": {
- "domains": [
- "www.arcor.de"
- ],
- "parameters": [
- "Keywords"
- ]
- },
- "Naver": {
- "domains": [
- "search.naver.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Zoeken": {
- "domains": [
- "www.zoeken.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Startsiden": {
- "domains": [
- "www.startsiden.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yam": {
- "domains": [
- "search.yam.com"
- ],
- "parameters": [
- "k"
- ]
- },
- "Eniro": {
- "domains": [
- "www.eniro.se"
- ],
- "parameters": [
- "q",
- "search_word"
- ]
- },
- "APOLL07": {
- "domains": [
- "apollo7.de"
- ],
- "parameters": [
- "query"
- ]
- },
- "Biglobe": {
- "domains": [
- "cgi.search.biglobe.ne.jp"
- ],
- "parameters": [
- "q"
- ]
- },
- "Mozbot": {
- "domains": [
- "www.mozbot.fr",
- "www.mozbot.co.uk",
- "www.mozbot.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "ICQ": {
- "domains": [
- "www.icq.com",
- "search.icq.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Baidu": {
- "domains": [
- "www.baidu.com",
- "www1.baidu.com",
- "zhidao.baidu.com",
- "tieba.baidu.com",
- "news.baidu.com",
- "web.gougou.com"
- ],
- "parameters": [
- "wd",
- "word",
- "kw",
- "k"
- ]
- },
- "Conduit": {
- "domains": [
- "search.conduit.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Vindex": {
- "domains": [
- "www.vindex.nl",
- "search.vindex.nl"
- ],
- "parameters": [
- "search_for"
- ]
- },
- "Babylon": {
- "domains": [
- "search.babylon.com",
- "searchassist.babylon.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "TrovaRapido": {
- "domains": [
- "www.trovarapido.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Suchmaschine.com": {
- "domains": [
- "www.suchmaschine.com"
- ],
- "parameters": [
- "suchstr"
- ]
- },
- "Lycos": {
- "domains": [
- "search.lycos.com",
- "www.lycos.com",
- "lycos.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Vinden": {
- "domains": [
- "www.vinden.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Altavista": {
- "domains": [
- "www.altavista.com",
- "search.altavista.com",
- "listings.altavista.com",
- "altavista.de",
- "altavista.fr",
- "be-nl.altavista.com",
- "be-fr.altavista.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "dmoz": {
- "domains": [
- "dmoz.org",
- "editors.dmoz.org"
- ],
- "parameters": [
- "q"
- ]
- },
- "Ecosia": {
- "domains": [
- "ecosia.org"
- ],
- "parameters": [
- "q"
- ]
- },
- "Maxwebsearch": {
- "domains": [
- "maxwebsearch.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Euroseek": {
- "domains": [
- "www.euroseek.com"
- ],
- "parameters": [
- "string"
- ]
- },
- "Bing": {
- "domains": [
- "bing.com",
- "www.bing.com",
- "msnbc.msn.com",
- "dizionario.it.msn.com",
- "cc.bingj.com",
- "m.bing.com"
- ],
- "parameters": [
- "q",
- "Q"
- ]
- },
- "X-recherche": {
- "domains": [
- "www.x-recherche.com"
- ],
- "parameters": [
- "MOTS"
- ]
- },
- "Yandex Images": {
- "domains": [
- "images.yandex.ru",
- "images.yandex.ua",
- "images.yandex.com"
- ],
- "parameters": [
- "text"
- ]
- },
- "GMX": {
- "domains": [
- "suche.gmx.net"
- ],
- "parameters": [
- "su"
- ]
- },
- "Daemon search": {
- "domains": [
- "daemon-search.com",
- "my.daemon-search.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Jungle Key": {
- "domains": [
- "junglekey.com",
- "junglekey.fr"
- ],
- "parameters": [
- "query"
- ]
- },
- "Firstfind": {
- "domains": [
- "www.firstsfind.com"
- ],
- "parameters": [
- "qry"
- ]
- },
- "Crawler": {
- "domains": [
- "www.crawler.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Holmes": {
- "domains": [
- "holmes.ge"
- ],
- "parameters": [
- "q"
- ]
- },
- "Charter": {
- "domains": [
- "www.charter.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Ilse": {
- "domains": [
- "www.ilse.nl"
- ],
- "parameters": [
- "search_for"
- ]
- },
- "earthlink": {
- "domains": [
- "search.earthlink.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Qualigo": {
- "domains": [
- "www.qualigo.at",
- "www.qualigo.ch",
- "www.qualigo.de",
- "www.qualigo.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "El Mundo": {
- "domains": [
- "ariadna.elmundo.es"
- ],
- "parameters": [
- "q"
- ]
- },
- "Metager2": {
- "domains": [
- "metager2.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Forestle": {
- "domains": [
- "forestle.org",
- "www.forestle.org",
- "forestle.mobi"
- ],
- "parameters": [
- "q"
- ]
- },
- "Search.ch": {
- "domains": [
- "www.search.ch"
- ],
- "parameters": [
- "q"
- ]
- },
- "Meinestadt": {
- "domains": [
- "www.meinestadt.de"
- ],
- "parameters": [
- "words"
- ]
- },
- "Freshweather": {
- "domains": [
- "www.fresh-weather.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "AllTheWeb": {
- "domains": [
- "www.alltheweb.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Snapdo": {
- "domains": [
- "search.snapdo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Zoek": {
- "domains": [
- "www3.zoek.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Daum": {
- "domains": [
- "search.daum.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Marktplaats": {
- "domains": [
- "www.marktplaats.nl"
- ],
- "parameters": [
- "query"
- ]
- },
- "suche.info": {
- "domains": [
- "suche.info"
- ],
- "parameters": [
- "q"
- ]
- },
- "Google News": {
- "domains": [
- "news.google.ac",
- "news.google.ad",
- "news.google.ae",
- "news.google.am",
- "news.google.as",
- "news.google.at",
- "news.google.az",
- "news.google.ba",
- "news.google.be",
- "news.google.bf",
- "news.google.bg",
- "news.google.bi",
- "news.google.bj",
- "news.google.bs",
- "news.google.by",
- "news.google.ca",
- "news.google.cat",
- "news.google.cc",
- "news.google.cd",
- "news.google.cf",
- "news.google.cg",
- "news.google.ch",
- "news.google.ci",
- "news.google.cl",
- "news.google.cm",
- "news.google.cn",
- "news.google.co.bw",
- "news.google.co.ck",
- "news.google.co.cr",
- "news.google.co.id",
- "news.google.co.il",
- "news.google.co.in",
- "news.google.co.jp",
- "news.google.co.ke",
- "news.google.co.kr",
- "news.google.co.ls",
- "news.google.co.ma",
- "news.google.co.mz",
- "news.google.co.nz",
- "news.google.co.th",
- "news.google.co.tz",
- "news.google.co.ug",
- "news.google.co.uk",
- "news.google.co.uz",
- "news.google.co.ve",
- "news.google.co.vi",
- "news.google.co.za",
- "news.google.co.zm",
- "news.google.co.zw",
- "news.google.com",
- "news.google.com.af",
- "news.google.com.ag",
- "news.google.com.ai",
- "news.google.com.ar",
- "news.google.com.au",
- "news.google.com.bd",
- "news.google.com.bh",
- "news.google.com.bn",
- "news.google.com.bo",
- "news.google.com.br",
- "news.google.com.by",
- "news.google.com.bz",
- "news.google.com.co",
- "news.google.com.cu",
- "news.google.com.cy",
- "news.google.com.do",
- "news.google.com.ec",
- "news.google.com.eg",
- "news.google.com.et",
- "news.google.com.fj",
- "news.google.com.gh",
- "news.google.com.gi",
- "news.google.com.gt",
- "news.google.com.hk",
- "news.google.com.jm",
- "news.google.com.kh",
- "news.google.com.kh",
- "news.google.com.kw",
- "news.google.com.lb",
- "news.google.com.lc",
- "news.google.com.ly",
- "news.google.com.mt",
- "news.google.com.mx",
- "news.google.com.my",
- "news.google.com.na",
- "news.google.com.nf",
- "news.google.com.ng",
- "news.google.com.ni",
- "news.google.com.np",
- "news.google.com.om",
- "news.google.com.pa",
- "news.google.com.pe",
- "news.google.com.ph",
- "news.google.com.pk",
- "news.google.com.pr",
- "news.google.com.py",
- "news.google.com.qa",
- "news.google.com.sa",
- "news.google.com.sb",
- "news.google.com.sg",
- "news.google.com.sl",
- "news.google.com.sv",
- "news.google.com.tj",
- "news.google.com.tn",
- "news.google.com.tr",
- "news.google.com.tw",
- "news.google.com.ua",
- "news.google.com.uy",
- "news.google.com.vc",
- "news.google.com.vn",
- "news.google.cv",
- "news.google.cz",
- "news.google.de",
- "news.google.dj",
- "news.google.dk",
- "news.google.dm",
- "news.google.dz",
- "news.google.ee",
- "news.google.es",
- "news.google.fi",
- "news.google.fm",
- "news.google.fr",
- "news.google.ga",
- "news.google.gd",
- "news.google.ge",
- "news.google.gf",
- "news.google.gg",
- "news.google.gl",
- "news.google.gm",
- "news.google.gp",
- "news.google.gr",
- "news.google.gy",
- "news.google.hn",
- "news.google.hr",
- "news.google.ht",
- "news.google.hu",
- "news.google.ie",
- "news.google.im",
- "news.google.io",
- "news.google.iq",
- "news.google.is",
- "news.google.it",
- "news.google.it.ao",
- "news.google.je",
- "news.google.jo",
- "news.google.kg",
- "news.google.ki",
- "news.google.kz",
- "news.google.la",
- "news.google.li",
- "news.google.lk",
- "news.google.lt",
- "news.google.lu",
- "news.google.lv",
- "news.google.md",
- "news.google.me",
- "news.google.mg",
- "news.google.mk",
- "news.google.ml",
- "news.google.mn",
- "news.google.ms",
- "news.google.mu",
- "news.google.mv",
- "news.google.mw",
- "news.google.ne",
- "news.google.nl",
- "news.google.no",
- "news.google.nr",
- "news.google.nu",
- "news.google.pl",
- "news.google.pn",
- "news.google.ps",
- "news.google.pt",
- "news.google.ro",
- "news.google.rs",
- "news.google.ru",
- "news.google.rw",
- "news.google.sc",
- "news.google.se",
- "news.google.sh",
- "news.google.si",
- "news.google.sk",
- "news.google.sm",
- "news.google.sn",
- "news.google.so",
- "news.google.st",
- "news.google.td",
- "news.google.tg",
- "news.google.tk",
- "news.google.tl",
- "news.google.tm",
- "news.google.to",
- "news.google.tt",
- "news.google.us",
- "news.google.vg",
- "news.google.vu",
- "news.google.ws"
- ],
- "parameters": [
- "q"
- ]
- },
- "Zoohoo": {
- "domains": [
- "zoohoo.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Seznam": {
- "domains": [
- "search.seznam.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Online.no": {
- "domains": [
- "online.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Eurip": {
- "domains": [
- "www.eurip.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "all.by": {
- "domains": [
- "all.by"
- ],
- "parameters": [
- "query"
- ]
- },
- "Road Runner Search": {
- "domains": [
- "search.rr.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Opplysningen 1881": {
- "domains": [
- "www.1881.no"
- ],
- "parameters": [
- "Query"
- ]
- },
- "YouGoo": {
- "domains": [
- "www.yougoo.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "Bing Images": {
- "domains": [
- "bing.com/images/search",
- "www.bing.com/images/search"
- ],
- "parameters": [
- "q",
- "Q"
- ]
- },
- "Geona": {
- "domains": [
- "geona.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Nate": {
- "domains": [
- "search.nate.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "DuckDuckGo": {
- "domains": [
- "duckduckgo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Hotbot": {
- "domains": [
- "www.hotbot.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Kvasir": {
- "domains": [
- "www.kvasir.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Austronaut": {
- "domains": [
- "www2.austronaut.at",
- "www1.astronaut.at"
- ],
- "parameters": [
- "q"
- ]
- },
- "Excite": {
- "domains": [
- "search.excite.it",
- "search.excite.fr",
- "search.excite.de",
- "search.excite.co.uk",
- "serach.excite.es",
- "search.excite.nl",
- "msxml.excite.com",
- "www.excite.co.jp"
- ],
- "parameters": [
- "q",
- "search"
- ]
- },
- "qip": {
- "domains": [
- "search.qip.ru"
- ],
- "parameters": [
- "query"
- ]
- },
- "Certified-Toolbar": {
- "domains": [
- "search.certified-toolbar.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yahoo!": {
- "domains": [
- "search.yahoo.com",
- "yahoo.com",
- "ar.search.yahoo.com",
- "ar.yahoo.com",
- "au.search.yahoo.com",
- "au.yahoo.com",
- "br.search.yahoo.com",
- "br.yahoo.com",
- "cade.searchde.yahoo.com",
- "cade.yahoo.com",
- "chinese.searchinese.yahoo.com",
- "chinese.yahoo.com",
- "cn.search.yahoo.com",
- "cn.yahoo.com",
- "de.search.yahoo.com",
- "de.yahoo.com",
- "dk.search.yahoo.com",
- "dk.yahoo.com",
- "es.search.yahoo.com",
- "es.yahoo.com",
- "espanol.searchpanol.yahoo.com",
- "espanol.searchpanol.yahoo.com",
- "espanol.yahoo.com",
- "espanol.yahoo.com",
- "fr.search.yahoo.com",
- "fr.yahoo.com",
- "ie.search.yahoo.com",
- "ie.yahoo.com",
- "it.search.yahoo.com",
- "it.yahoo.com",
- "kr.search.yahoo.com",
- "kr.yahoo.com",
- "mx.search.yahoo.com",
- "mx.yahoo.com",
- "no.search.yahoo.com",
- "no.yahoo.com",
- "nz.search.yahoo.com",
- "nz.yahoo.com",
- "one.cn.yahoo.com",
- "one.searchn.yahoo.com",
- "qc.search.yahoo.com",
- "qc.search.yahoo.com",
- "qc.search.yahoo.com",
- "qc.yahoo.com",
- "qc.yahoo.com",
- "se.search.yahoo.com",
- "se.search.yahoo.com",
- "se.yahoo.com",
- "search.searcharch.yahoo.com",
- "search.yahoo.com",
- "uk.search.yahoo.com",
- "uk.yahoo.com",
- "www.yahoo.co.jp",
- "search.yahoo.co.jp",
- "www.cercato.it",
- "search.offerbox.com",
- "ys.mirostart.com"
- ],
- "parameters": [
- "p",
- "q"
- ]
- },
- "URL.ORGanizier": {
- "domains": [
- "www.url.org"
- ],
- "parameters": [
- "q"
- ]
- },
- "Witch": {
- "domains": [
- "www.witch.de"
- ],
- "parameters": [
- "search"
- ]
- },
- "Mister Wong": {
- "domains": [
- "www.mister-wong.com",
- "www.mister-wong.de"
- ],
- "parameters": [
- "Keywords"
- ]
- },
- "Aport": {
- "domains": [
- "sm.aport.ru"
- ],
- "parameters": [
- "r"
- ]
- },
- "Web.de": {
- "domains": [
- "suche.web.de"
- ],
- "parameters": [
- "su"
- ]
- },
- "Ask": {
- "domains": [
- "ask.com",
- "www.ask.com",
- "web.ask.com",
- "int.ask.com",
- "mws.ask.com",
- "uk.ask.com",
- "images.ask.com",
- "ask.reference.com",
- "www.askkids.com",
- "iwon.ask.com",
- "www.ask.co.uk",
- "www.qbyrd.com",
- "search-results.com",
- "uk.search-results.com",
- "www.search-results.com",
- "int.search-results.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Centrum": {
- "domains": [
- "serach.centrum.cz",
- "morfeo.centrum.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Everyclick": {
- "domains": [
- "www.everyclick.com"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Google Video": {
- "domains": [
- "video.google.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Delfi": {
- "domains": [
- "otsing.delfi.ee"
- ],
- "parameters": [
- "q"
- ]
- },
- "blekko": {
- "domains": [
- "blekko.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Jyxo": {
- "domains": [
- "jyxo.1188.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Kataweb": {
- "domains": [
- "www.kataweb.it"
- ],
- "parameters": [
- "q"
- ]
- },
- "uol.com.br": {
- "domains": [
- "busca.uol.com.br"
- ],
- "parameters": [
- "q"
- ]
- },
- "Arianna": {
- "domains": [
- "arianna.libero.it",
- "www.arianna.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Mamma": {
- "domains": [
- "www.mamma.com",
- "mamma75.mamma.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Yatedo": {
- "domains": [
- "www.yatedo.com",
- "www.yatedo.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "Twingly": {
- "domains": [
- "www.twingly.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Delfi latvia": {
- "domains": [
- "smart.delfi.lv"
- ],
- "parameters": [
- "q"
- ]
- },
- "PriceRunner": {
- "domains": [
- "www.pricerunner.co.uk"
- ],
- "parameters": [
- "q"
- ]
- },
- "Rakuten": {
- "domains": [
- "websearch.rakuten.co.jp"
- ],
- "parameters": [
- "qt"
- ]
- },
- "Google": {
- "domains": [
- "www.google.com",
- "www.google.ac",
- "www.google.ad",
- "www.google.com.af",
- "www.google.com.ag",
- "www.google.com.ai",
- "www.google.am",
- "www.google.it.ao",
- "www.google.com.ar",
- "www.google.as",
- "www.google.at",
- "www.google.com.au",
- "www.google.az",
- "www.google.ba",
- "www.google.com.bd",
- "www.google.be",
- "www.google.bf",
- "www.google.bg",
- "www.google.com.bh",
- "www.google.bi",
- "www.google.bj",
- "www.google.com.bn",
- "www.google.com.bo",
- "www.google.com.br",
- "www.google.bs",
- "www.google.co.bw",
- "www.google.com.by",
- "www.google.by",
- "www.google.com.bz",
- "www.google.ca",
- "www.google.com.kh",
- "www.google.cc",
- "www.google.cd",
- "www.google.cf",
- "www.google.cat",
- "www.google.cg",
- "www.google.ch",
- "www.google.ci",
- "www.google.co.ck",
- "www.google.cl",
- "www.google.cm",
- "www.google.cn",
- "www.google.com.co",
- "www.google.co.cr",
- "www.google.com.cu",
- "www.google.cv",
- "www.google.com.cy",
- "www.google.cz",
- "www.google.de",
- "www.google.dj",
- "www.google.dk",
- "www.google.dm",
- "www.google.com.do",
- "www.google.dz",
- "www.google.com.ec",
- "www.google.ee",
- "www.google.com.eg",
- "www.google.es",
- "www.google.com.et",
- "www.google.fi",
- "www.google.com.fj",
- "www.google.fm",
- "www.google.fr",
- "www.google.ga",
- "www.google.gd",
- "www.google.ge",
- "www.google.gf",
- "www.google.gg",
- "www.google.com.gh",
- "www.google.com.gi",
- "www.google.gl",
- "www.google.gm",
- "www.google.gp",
- "www.google.gr",
- "www.google.com.gt",
- "www.google.gy",
- "www.google.com.hk",
- "www.google.hn",
- "www.google.hr",
- "www.google.ht",
- "www.google.hu",
- "www.google.co.id",
- "www.google.iq",
- "www.google.ie",
- "www.google.co.il",
- "www.google.im",
- "www.google.co.in",
- "www.google.io",
- "www.google.is",
- "www.google.it",
- "www.google.je",
- "www.google.com.jm",
- "www.google.jo",
- "www.google.co.jp",
- "www.google.co.ke",
- "www.google.com.kh",
- "www.google.ki",
- "www.google.kg",
- "www.google.co.kr",
- "www.google.com.kw",
- "www.google.kz",
- "www.google.la",
- "www.google.com.lb",
- "www.google.com.lc",
- "www.google.li",
- "www.google.lk",
- "www.google.co.ls",
- "www.google.lt",
- "www.google.lu",
- "www.google.lv",
- "www.google.com.ly",
- "www.google.co.ma",
- "www.google.md",
- "www.google.me",
- "www.google.mg",
- "www.google.mk",
- "www.google.ml",
- "www.google.mn",
- "www.google.ms",
- "www.google.com.mt",
- "www.google.mu",
- "www.google.mv",
- "www.google.mw",
- "www.google.com.mx",
- "www.google.com.my",
- "www.google.co.mz",
- "www.google.com.na",
- "www.google.ne",
- "www.google.com.nf",
- "www.google.com.ng",
- "www.google.com.ni",
- "www.google.nl",
- "www.google.no",
- "www.google.com.np",
- "www.google.nr",
- "www.google.nu",
- "www.google.co.nz",
- "www.google.com.om",
- "www.google.com.pa",
- "www.google.com.pe",
- "www.google.com.ph",
- "www.google.com.pk",
- "www.google.pl",
- "www.google.pn",
- "www.google.com.pr",
- "www.google.ps",
- "www.google.pt",
- "www.google.com.py",
- "www.google.com.qa",
- "www.google.ro",
- "www.google.rs",
- "www.google.ru",
- "www.google.rw",
- "www.google.com.sa",
- "www.google.com.sb",
- "www.google.sc",
- "www.google.se",
- "www.google.com.sg",
- "www.google.sh",
- "www.google.si",
- "www.google.sk",
- "www.google.com.sl",
- "www.google.sn",
- "www.google.sm",
- "www.google.so",
- "www.google.st",
- "www.google.com.sv",
- "www.google.td",
- "www.google.tg",
- "www.google.co.th",
- "www.google.com.tj",
- "www.google.tk",
- "www.google.tl",
- "www.google.tm",
- "www.google.to",
- "www.google.com.tn",
- "www.google.com.tr",
- "www.google.tt",
- "www.google.com.tw",
- "www.google.co.tz",
- "www.google.com.ua",
- "www.google.co.ug",
- "www.google.ae",
- "www.google.co.uk",
- "www.google.us",
- "www.google.com.uy",
- "www.google.co.uz",
- "www.google.com.vc",
- "www.google.co.ve",
- "www.google.vg",
- "www.google.co.vi",
- "www.google.com.vn",
- "www.google.vu",
- "www.google.ws",
- "www.google.co.za",
- "www.google.co.zm",
- "www.google.co.zw",
- "google.com",
- "google.ac",
- "google.ad",
- "google.com.af",
- "google.com.ag",
- "google.com.ai",
- "google.am",
- "google.it.ao",
- "google.com.ar",
- "google.as",
- "google.at",
- "google.com.au",
- "google.az",
- "google.ba",
- "google.com.bd",
- "google.be",
- "google.bf",
- "google.bg",
- "google.com.bh",
- "google.bi",
- "google.bj",
- "google.com.bn",
- "google.com.bo",
- "google.com.br",
- "google.bs",
- "google.co.bw",
- "google.com.by",
- "google.by",
- "google.com.bz",
- "google.ca",
- "google.com.kh",
- "google.cc",
- "google.cd",
- "google.cf",
- "google.cat",
- "google.cg",
- "google.ch",
- "google.ci",
- "google.co.ck",
- "google.cl",
- "google.cm",
- "google.cn",
- "google.com.co",
- "google.co.cr",
- "google.com.cu",
- "google.cv",
- "google.com.cy",
- "google.cz",
- "google.de",
- "google.dj",
- "google.dk",
- "google.dm",
- "google.com.do",
- "google.dz",
- "google.com.ec",
- "google.ee",
- "google.com.eg",
- "google.es",
- "google.com.et",
- "google.fi",
- "google.com.fj",
- "google.fm",
- "google.fr",
- "google.ga",
- "google.gd",
- "google.ge",
- "google.gf",
- "google.gg",
- "google.com.gh",
- "google.com.gi",
- "google.gl",
- "google.gm",
- "google.gp",
- "google.gr",
- "google.com.gt",
- "google.gy",
- "google.com.hk",
- "google.hn",
- "google.hr",
- "google.ht",
- "google.hu",
- "google.co.id",
- "google.iq",
- "google.ie",
- "google.co.il",
- "google.im",
- "google.co.in",
- "google.io",
- "google.is",
- "google.it",
- "google.je",
- "google.com.jm",
- "google.jo",
- "google.co.jp",
- "google.co.ke",
- "google.com.kh",
- "google.ki",
- "google.kg",
- "google.co.kr",
- "google.com.kw",
- "google.kz",
- "google.la",
- "google.com.lb",
- "google.com.lc",
- "google.li",
- "google.lk",
- "google.co.ls",
- "google.lt",
- "google.lu",
- "google.lv",
- "google.com.ly",
- "google.co.ma",
- "google.md",
- "google.me",
- "google.mg",
- "google.mk",
- "google.ml",
- "google.mn",
- "google.ms",
- "google.com.mt",
- "google.mu",
- "google.mv",
- "google.mw",
- "google.com.mx",
- "google.com.my",
- "google.co.mz",
- "google.com.na",
- "google.ne",
- "google.com.nf",
- "google.com.ng",
- "google.com.ni",
- "google.nl",
- "google.no",
- "google.com.np",
- "google.nr",
- "google.nu",
- "google.co.nz",
- "google.com.om",
- "google.com.pa",
- "google.com.pe",
- "google.com.ph",
- "google.com.pk",
- "google.pl",
- "google.pn",
- "google.com.pr",
- "google.ps",
- "google.pt",
- "google.com.py",
- "google.com.qa",
- "google.ro",
- "google.rs",
- "google.ru",
- "google.rw",
- "google.com.sa",
- "google.com.sb",
- "google.sc",
- "google.se",
- "google.com.sg",
- "google.sh",
- "google.si",
- "google.sk",
- "google.com.sl",
- "google.sn",
- "google.sm",
- "google.so",
- "google.st",
- "google.com.sv",
- "google.td",
- "google.tg",
- "google.co.th",
- "google.com.tj",
- "google.tk",
- "google.tl",
- "google.tm",
- "google.to",
- "google.com.tn",
- "google.com.tr",
- "google.tt",
- "google.com.tw",
- "google.co.tz",
- "google.com.ua",
- "google.co.ug",
- "google.ae",
- "google.co.uk",
- "google.us",
- "google.com.uy",
- "google.co.uz",
- "google.com.vc",
- "google.co.ve",
- "google.vg",
- "google.co.vi",
- "google.com.vn",
- "google.vu",
- "google.ws",
- "google.co.za",
- "google.co.zm",
- "google.co.zw",
- "search.avg.com",
- "isearch.avg.com",
- "www.cnn.com",
- "darkoogle.com",
- "search.darkoogle.com",
- "search.foxtab.com",
- "www.gooofullsearch.com",
- "search.hiyo.com",
- "search.incredimail.com",
- "search1.incredimail.com",
- "search2.incredimail.com",
- "search3.incredimail.com",
- "search4.incredimail.com",
- "search.incredibar.com",
- "search.sweetim.com",
- "www.fastweb.it",
- "search.juno.com",
- "find.tdc.dk",
- "searchresults.verizon.com",
- "search.walla.co.il",
- "search.alot.com",
- "www.googleearth.de",
- "www.googleearth.fr",
- "webcache.googleusercontent.com",
- "encrypted.google.com",
- "googlesyndicatedsearch.com"
- ],
- "parameters": [
- "q",
- "query",
- "Keywords"
- ]
- },
- "Google Blogsearch": {
- "domains": [
- "blogsearch.google.ac",
- "blogsearch.google.ad",
- "blogsearch.google.ae",
- "blogsearch.google.am",
- "blogsearch.google.as",
- "blogsearch.google.at",
- "blogsearch.google.az",
- "blogsearch.google.ba",
- "blogsearch.google.be",
- "blogsearch.google.bf",
- "blogsearch.google.bg",
- "blogsearch.google.bi",
- "blogsearch.google.bj",
- "blogsearch.google.bs",
- "blogsearch.google.by",
- "blogsearch.google.ca",
- "blogsearch.google.cat",
- "blogsearch.google.cc",
- "blogsearch.google.cd",
- "blogsearch.google.cf",
- "blogsearch.google.cg",
- "blogsearch.google.ch",
- "blogsearch.google.ci",
- "blogsearch.google.cl",
- "blogsearch.google.cm",
- "blogsearch.google.cn",
- "blogsearch.google.co.bw",
- "blogsearch.google.co.ck",
- "blogsearch.google.co.cr",
- "blogsearch.google.co.id",
- "blogsearch.google.co.il",
- "blogsearch.google.co.in",
- "blogsearch.google.co.jp",
- "blogsearch.google.co.ke",
- "blogsearch.google.co.kr",
- "blogsearch.google.co.ls",
- "blogsearch.google.co.ma",
- "blogsearch.google.co.mz",
- "blogsearch.google.co.nz",
- "blogsearch.google.co.th",
- "blogsearch.google.co.tz",
- "blogsearch.google.co.ug",
- "blogsearch.google.co.uk",
- "blogsearch.google.co.uz",
- "blogsearch.google.co.ve",
- "blogsearch.google.co.vi",
- "blogsearch.google.co.za",
- "blogsearch.google.co.zm",
- "blogsearch.google.co.zw",
- "blogsearch.google.com",
- "blogsearch.google.com.af",
- "blogsearch.google.com.ag",
- "blogsearch.google.com.ai",
- "blogsearch.google.com.ar",
- "blogsearch.google.com.au",
- "blogsearch.google.com.bd",
- "blogsearch.google.com.bh",
- "blogsearch.google.com.bn",
- "blogsearch.google.com.bo",
- "blogsearch.google.com.br",
- "blogsearch.google.com.by",
- "blogsearch.google.com.bz",
- "blogsearch.google.com.co",
- "blogsearch.google.com.cu",
- "blogsearch.google.com.cy",
- "blogsearch.google.com.do",
- "blogsearch.google.com.ec",
- "blogsearch.google.com.eg",
- "blogsearch.google.com.et",
- "blogsearch.google.com.fj",
- "blogsearch.google.com.gh",
- "blogsearch.google.com.gi",
- "blogsearch.google.com.gt",
- "blogsearch.google.com.hk",
- "blogsearch.google.com.jm",
- "blogsearch.google.com.kh",
- "blogsearch.google.com.kh",
- "blogsearch.google.com.kw",
- "blogsearch.google.com.lb",
- "blogsearch.google.com.lc",
- "blogsearch.google.com.ly",
- "blogsearch.google.com.mt",
- "blogsearch.google.com.mx",
- "blogsearch.google.com.my",
- "blogsearch.google.com.na",
- "blogsearch.google.com.nf",
- "blogsearch.google.com.ng",
- "blogsearch.google.com.ni",
- "blogsearch.google.com.np",
- "blogsearch.google.com.om",
- "blogsearch.google.com.pa",
- "blogsearch.google.com.pe",
- "blogsearch.google.com.ph",
- "blogsearch.google.com.pk",
- "blogsearch.google.com.pr",
- "blogsearch.google.com.py",
- "blogsearch.google.com.qa",
- "blogsearch.google.com.sa",
- "blogsearch.google.com.sb",
- "blogsearch.google.com.sg",
- "blogsearch.google.com.sl",
- "blogsearch.google.com.sv",
- "blogsearch.google.com.tj",
- "blogsearch.google.com.tn",
- "blogsearch.google.com.tr",
- "blogsearch.google.com.tw",
- "blogsearch.google.com.ua",
- "blogsearch.google.com.uy",
- "blogsearch.google.com.vc",
- "blogsearch.google.com.vn",
- "blogsearch.google.cv",
- "blogsearch.google.cz",
- "blogsearch.google.de",
- "blogsearch.google.dj",
- "blogsearch.google.dk",
- "blogsearch.google.dm",
- "blogsearch.google.dz",
- "blogsearch.google.ee",
- "blogsearch.google.es",
- "blogsearch.google.fi",
- "blogsearch.google.fm",
- "blogsearch.google.fr",
- "blogsearch.google.ga",
- "blogsearch.google.gd",
- "blogsearch.google.ge",
- "blogsearch.google.gf",
- "blogsearch.google.gg",
- "blogsearch.google.gl",
- "blogsearch.google.gm",
- "blogsearch.google.gp",
- "blogsearch.google.gr",
- "blogsearch.google.gy",
- "blogsearch.google.hn",
- "blogsearch.google.hr",
- "blogsearch.google.ht",
- "blogsearch.google.hu",
- "blogsearch.google.ie",
- "blogsearch.google.im",
- "blogsearch.google.io",
- "blogsearch.google.iq",
- "blogsearch.google.is",
- "blogsearch.google.it",
- "blogsearch.google.it.ao",
- "blogsearch.google.je",
- "blogsearch.google.jo",
- "blogsearch.google.kg",
- "blogsearch.google.ki",
- "blogsearch.google.kz",
- "blogsearch.google.la",
- "blogsearch.google.li",
- "blogsearch.google.lk",
- "blogsearch.google.lt",
- "blogsearch.google.lu",
- "blogsearch.google.lv",
- "blogsearch.google.md",
- "blogsearch.google.me",
- "blogsearch.google.mg",
- "blogsearch.google.mk",
- "blogsearch.google.ml",
- "blogsearch.google.mn",
- "blogsearch.google.ms",
- "blogsearch.google.mu",
- "blogsearch.google.mv",
- "blogsearch.google.mw",
- "blogsearch.google.ne",
- "blogsearch.google.nl",
- "blogsearch.google.no",
- "blogsearch.google.nr",
- "blogsearch.google.nu",
- "blogsearch.google.pl",
- "blogsearch.google.pn",
- "blogsearch.google.ps",
- "blogsearch.google.pt",
- "blogsearch.google.ro",
- "blogsearch.google.rs",
- "blogsearch.google.ru",
- "blogsearch.google.rw",
- "blogsearch.google.sc",
- "blogsearch.google.se",
- "blogsearch.google.sh",
- "blogsearch.google.si",
- "blogsearch.google.sk",
- "blogsearch.google.sm",
- "blogsearch.google.sn",
- "blogsearch.google.so",
- "blogsearch.google.st",
- "blogsearch.google.td",
- "blogsearch.google.tg",
- "blogsearch.google.tk",
- "blogsearch.google.tl",
- "blogsearch.google.tm",
- "blogsearch.google.to",
- "blogsearch.google.tt",
- "blogsearch.google.us",
- "blogsearch.google.vg",
- "blogsearch.google.vu",
- "blogsearch.google.ws"
- ],
- "parameters": [
- "q"
- ]
- },
- "Hooseek.com": {
- "domains": [
- "www.hooseek.com"
- ],
- "parameters": [
- "recherche"
- ]
- },
- "Dalesearch": {
- "domains": [
- "www.dalesearch.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Alice Adsl": {
- "domains": [
- "rechercher.aliceadsl.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "T-Online": {
- "domains": [
- "suche.t-online.de",
- "brisbane.t-online.de",
- "navigationshilfe.t-online.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "soso.com": {
- "domains": [
- "www.soso.com"
- ],
- "parameters": [
- "w"
- ]
- },
- "Sogou": {
- "domains": [
- "www.sougou.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Hit-Parade": {
- "domains": [
- "req.-hit-parade.com",
- "class.hit-parade.com",
- "www.hit-parade.com"
- ],
- "parameters": [
- "p7"
- ]
- },
- "SearchCanvas": {
- "domains": [
- "www.searchcanvas.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Interia": {
- "domains": [
- "www.google.interia.pl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Genieo": {
- "domains": [
- "search.genieo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Tiscali": {
- "domains": [
- "search.tiscali.it",
- "search-dyn.tiscali.it",
- "hledani.tiscali.cz"
- ],
- "parameters": [
- "q",
- "key"
- ]
- },
- "Clix": {
- "domains": [
- "pesquisa.clix.pt"
- ],
- "parameters": [
- "question"
- ]
- }
- },
- "email": {
- "Bigpond": {
- "domains": [
- "webmail.bigpond.com",
- "webmail2.bigpond.com"
- ]
- },
- "Naver Mail": {
- "domains": [
- "mail.naver.com"
- ]
- },
- "Optus Zoo": {
- "domains": [
- "webmail.optuszoo.com.au"
- ]
- },
- "Seznam Mail": {
- "domains": [
- "email.seznam.cz"
- ]
- },
- "126 Mail": {
- "domains": [
- "mail.126.com"
- ]
- },
- "Outlook.com": {
- "domains": [
- "mail.live.com"
- ]
- },
- "AOL Mail": {
- "domains": [
- "mail.aol.com"
- ]
- },
- "Daum Mail": {
- "domains": [
- "mail2.daum.net"
- ]
- },
- "Yahoo! Mail": {
- "domains": [
- "mail.yahoo.net",
- "mail.yahoo.com",
- "mail.yahoo.co.uk",
- "mail.yahoo.co.jp"
- ]
- },
- "163 Mail": {
- "domains": [
- "mail.163.com"
- ]
- },
- "Orange Webmail": {
- "domains": [
- "orange.fr/webmail"
- ]
- },
- "QQ Mail": {
- "domains": [
- "mail.qq.com"
- ]
- },
- "Mynet Mail": {
- "domains": [
- "mail.mynet.com"
- ]
- },
- "Gmail": {
- "domains": [
- "mail.google.com"
- ]
- }
- },
- "social": {
- "hi5": {
- "domains": [
- "hi5.com"
- ]
- },
- "Friendster": {
- "domains": [
- "friendster.com"
- ]
- },
- "Weibo": {
- "domains": [
- "weibo.com",
- "t.cn"
- ]
- },
- "Xanga": {
- "domains": [
- "xanga.com"
- ]
- },
- "Myspace": {
- "domains": [
- "myspace.com"
- ]
- },
- "Buzznet": {
- "domains": [
- "wayn.com"
- ]
- },
- "MyLife": {
- "domains": [
- "mylife.ru"
- ]
- },
- "Flickr": {
- "domains": [
- "flickr.com"
- ]
- },
- "Sonico.com": {
- "domains": [
- "sonico.com"
- ]
- },
- "Odnoklassniki": {
- "domains": [
- "odnoklassniki.ru"
- ]
- },
- "GitHub": {
- "domains": [
- "github.com"
- ]
- },
- "Classmates": {
- "domains": [
- "classmates.com"
- ]
- },
- "Friends Reunited": {
- "domains": [
- "friendsreunited.com"
- ]
- },
- "Renren": {
- "domains": [
- "renren.com"
- ]
- },
- "Quora": {
- "domains": [
- "quora.com"
- ]
- },
- "Gaia Online": {
- "domains": [
- "gaiaonline.com"
- ]
- },
- "Netlog": {
- "domains": [
- "netlog.com"
- ]
- },
- "Orkut": {
- "domains": [
- "orkut.com"
- ]
- },
- "MyHeritage": {
- "domains": [
- "myheritage.com"
- ]
- },
- "Multiply": {
- "domains": [
- "multiply.com"
- ]
- },
- "myYearbook": {
- "domains": [
- "myyearbook.com"
- ]
- },
- "WeeWorld": {
- "domains": [
- "weeworld.com"
- ]
- },
- "Vimeo": {
- "domains": [
- "vimeo.com"
- ]
- },
- "Eksi Sozluk": {
- "domains": [
- "Sozluk.com",
- "sourtimes.org"
- ]
- },
- "Geni": {
- "domains": [
- "geni.com"
- ]
- },
- "Uludag Sozluk": {
- "domains": [
- "uludagsozluk.com",
- "ulusozluk.com"
- ]
- },
- "SourceForge": {
- "domains": [
- "sourceforge.net"
- ]
- },
- "Plaxo": {
- "domains": [
- "plaxo.com"
- ]
- },
- "Taringa!": {
- "domains": [
- "taringa.net"
- ]
- },
- "Tagged": {
- "domains": [
- "login.tagged.com"
- ]
- },
- "XING": {
- "domains": [
- "xing.com"
- ]
- },
- "Instagram": {
- "domains": [
- "instagram.com"
- ]
- },
- "Vkontakte": {
- "domains": [
- "vk.com",
- "vkontakte.ru"
- ]
- },
- "Twitter": {
- "domains": [
- "twitter.com",
- "t.co"
- ]
- },
- "vKruguDruzei.ru": {
- "domains": [
- "vkrugudruzei.ru"
- ]
- },
- "Donanimhaber": {
- "domains": [
- "donanimhaber.com"
- ]
- },
- "WAYN": {
- "domains": [
- "wayn.com"
- ]
- },
- "Tuenti": {
- "domains": [
- "tuenti.com"
- ]
- },
- "Mail.ru": {
- "domains": [
- "my.mail.ru"
- ]
- },
- "Badoo": {
- "domains": [
- "badoo.com"
- ]
- },
- "Instela": {
- "domains": [
- "instela.com"
- ]
- },
- "Habbo": {
- "domains": [
- "habbo.com"
- ]
- },
- "Pinterest": {
- "domains": [
- "pinterest.com"
- ]
- },
- "LinkedIn": {
- "domains": [
- "linkedin.com",
- "lnkd.in"
- ]
- },
- "Foursquare": {
- "domains": [
- "foursquare.com"
- ]
- },
- "Flixster": {
- "domains": [
- "flixster.com"
- ]
- },
- "Windows Live Spaces": {
- "domains": [
- "login.live.com"
- ]
- },
- "BlackPlanet": {
- "domains": [
- "blackplanet.com"
- ]
- },
- "Cyworld": {
- "domains": [
- "global.cyworld.com"
- ]
- },
- "Pocket": {
- "domains": [
- "itusozluk.com"
- ],
- "ITU Sozluk": null
- },
- "Skyrock": {
- "domains": [
- "skyrock.com"
- ]
- },
- "Facebook": {
- "domains": [
- "facebook.com",
- "fb.me",
- "m.facebook.com",
- "l.facebook.com",
- "lm.facebook.com"
- ]
- },
- "Disqus": {
- "domains": [
- "redirect.disqus.com",
- "disq.us",
- "disqus.com"
- ]
- },
- "StudiVZ": {
- "domains": [
- "studivz.net"
- ]
- },
- "Fotolog": {
- "domains": [
- "fotolog.com"
- ]
- },
- "Google+": {
- "domains": [
- "url.google.com",
- "plus.google.com"
- ]
- },
- "Nasza-klasa.pl": {
- "domains": [
- "nk.pl"
- ]
- },
- "Qzone": {
- "domains": [
- "qzone.qq.com"
- ]
- },
- "Douban": {
- "domains": [
- "douban.com"
- ]
- },
- "Bebo": {
- "domains": [
- "bebo.com"
- ]
- },
- "Youtube": {
- "domains": [
- "youtube.com",
- "youtu.be"
- ]
- },
- "Reddit": {
- "domains": [
- "reddit.com"
- ]
- },
- "Identi.ca": {
- "domains": [
- "identi.ca"
- ]
- },
- "StackOverflow": {
- "domains": [
- "stackoverflow.com"
- ]
- },
- "Mixi": {
- "domains": [
- "mixi.jp"
- ]
- },
- "StumbleUpon": {
- "domains": [
- "stumbleupon.com"
- ]
- },
- "Inci Sozluk": {
- "domains": [
- "inci.sozlukspot.com",
- "incisozluk.com",
- "incisozluk.cc"
- ]
- },
- "Viadeo": {
- "domains": [
- "viadeo.com"
- ]
- },
- "Last.fm": {
- "domains": [
- "lastfm.ru"
- ]
- },
- "LiveJournal": {
- "domains": [
- "livejournal.ru"
- ]
- },
- "Tumblr": {
- "domains": [
- "tumblr.com"
- ]
- },
- "Hacker News": {
- "domains": [
- "news.ycombinator.com"
- ]
- },
- "Hocam.com": {
- "domains": [
- "hocam.com"
- ]
- },
- "Delicious": {
- "domains": [
- "delicious.com"
- ]
- },
- "Hyves": {
- "domains": [
- "hyves.nl"
- ]
- },
- "Paper.li": {
- "domains": [
- "paper.li"
- ]
- },
- "MoiKrug.ru": {
- "domains": [
- "moikrug.ru"
- ]
- }
- }
-}
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/php/data/referers.yml b/vendor/snowplow/referer-parser/php/data/referers.yml
deleted file mode 100644
index e1ecf54f7..000000000
--- a/vendor/snowplow/referer-parser/php/data/referers.yml
+++ /dev/null
@@ -1,3621 +0,0 @@
-# #######################################################################################################
-#
-# ALL SUPPORTED REFERERS
-#
-# Broken down into:
-#
-# 1. Medium-unknown providers
-# 2. Email providers
-# 3. Social providers
-# 4. Search providers
-
-
-# #######################################################################################################
-#
-# MEDIUM-UNKNOWN PROVIDERS
-#
-# We know the source, but not the medium.
-# This section is useful for reducing false positives in the other sections
-
-unknown:
-
- Google:
- domains:
- - support.google.com
- - developers.google.com
- - maps.google.com
- - accounts.google.com
- - drive.google.com
- - sites.google.com
- - groups.google.com
- - groups.google.co.uk
- - news.google.co.uk
-
- Yahoo!:
- domains:
- - finance.yahoo.com
- - news.yahoo.com
- - eurosport.yahoo.com
- - sports.yahoo.com
- - astrology.yahoo.com
- - travel.yahoo.com
- - answers.yahoo.com
- - screen.yahoo.com
- - weather.yahoo.com
- - messenger.yahoo.com
- - games.yahoo.com
- - shopping.yahoo.net
- - movies.yahoo.com
- - cars.yahoo.com
- - lifestyle.yahoo.com
- - omg.yahoo.com
- - match.yahoo.net
-
- Taboola:
- domains:
- - trc.taboola.com
- - api.taboola.com
-
- Outbrain:
- domains:
- - paid.outbrain.com
-
-
-# #######################################################################################################
-#
-# EMAIL PROVIDERS
-
-email:
-
- 126 Mail:
- domains:
- - mail.126.com
-
- 163 Mail:
- domains:
- - mail.163.com
-
- AOL Mail:
- domains:
- - mail.aol.com
-
- Bigpond:
- domains:
- - webmail.bigpond.com
- - webmail2.bigpond.com
-
- Daum Mail:
- domains:
- - mail2.daum.net
-
- Gmail:
- domains:
- - mail.google.com
-
- Naver Mail:
- domains:
- - mail.naver.com
-
- Optus Zoo:
- domains:
- - webmail.optuszoo.com.au
-
- Orange Webmail:
- domains:
- - orange.fr/webmail
-
- Outlook.com:
- domains:
- - mail.live.com
-
- QQ Mail:
- domains:
- - mail.qq.com
-
- Seznam Mail:
- domains:
- - email.seznam.cz
-
- Yahoo! Mail:
- domains:
- - mail.yahoo.net
- - mail.yahoo.com
- - mail.yahoo.co.uk
- - mail.yahoo.co.jp
-
- Mynet Mail:
- domains:
- - mail.mynet.com
-
-
-# #######################################################################################################
-#
-# SOCIAL PROVIDERS
-
-social:
-
- Facebook:
- domains:
- - facebook.com
- - fb.me
- - m.facebook.com
- - l.facebook.com
- - lm.facebook.com
-
- Qzone:
- domains:
- - qzone.qq.com
-
- Habbo:
- domains:
- - habbo.com
-
- Twitter:
- domains:
- - twitter.com
- - t.co
-
- Instagram:
- domains:
- - instagram.com
-
- Youtube:
- domains:
- - youtube.com
- - youtu.be
-
- Vimeo:
- domains:
- - vimeo.com
-
- Renren:
- domains:
- - renren.com
-
- Windows Live Spaces:
- domains:
- - login.live.com
-
- LinkedIn:
- domains:
- - linkedin.com
- - lnkd.in
-
- Bebo:
- domains:
- - bebo.com
-
- Vkontakte:
- domains:
- - vk.com
- - vkontakte.ru
-
- Tagged:
- domains:
- - login.tagged.com
-
- Orkut:
- domains:
- - orkut.com
-
- Myspace:
- domains:
- - myspace.com
-
- Friendster:
- domains:
- - friendster.com
-
- Badoo:
- domains:
- - badoo.com
-
- hi5:
- domains:
- - hi5.com
-
- Netlog:
- domains:
- - netlog.com
-
- Flixster:
- domains:
- - flixster.com
-
- MyLife:
- domains:
- - mylife.ru
-
- Paper.li:
- domains:
- - paper.li
-
- Classmates:
- domains:
- - classmates.com
-
- GitHub:
- domains:
- - github.com
-
- Google+:
- domains:
- - url.google.com
- - plus.google.com
-
- Douban:
- domains:
- - douban.com
-
- Odnoklassniki:
- domains:
- - odnoklassniki.ru
-
- Viadeo:
- domains:
- - viadeo.com
-
- Flickr:
- domains:
- - flickr.com
-
- WeeWorld:
- domains:
- - weeworld.com
-
- Last.fm:
- domains:
- - lastfm.ru
-
- MyHeritage:
- domains:
- - myheritage.com
-
- Xanga:
- domains:
- - xanga.com
-
- Mixi:
- domains:
- - mixi.jp
-
- Cyworld:
- domains:
- - global.cyworld.com
-
- Gaia Online:
- domains:
- - gaiaonline.com
-
- Skyrock:
- domains:
- - skyrock.com
-
- BlackPlanet:
- domains:
- - blackplanet.com
-
- myYearbook:
- domains:
- - myyearbook.com
-
- Fotolog:
- domains:
- - fotolog.com
-
- Friends Reunited:
- domains:
- - friendsreunited.com
-
- LiveJournal:
- domains:
- - livejournal.ru
-
- StudiVZ:
- domains:
- - studivz.net
-
- StackOverflow:
- domains:
- - stackoverflow.com
-
- Sonico.com:
- domains:
- - sonico.com
-
- Pinterest:
- domains:
- - pinterest.com
-
- Plaxo:
- domains:
- - plaxo.com
-
- Geni:
- domains:
- - geni.com
-
- Tuenti:
- domains:
- - tuenti.com
-
- XING:
- domains:
- - xing.com
-
- Taringa!:
- domains:
- - taringa.net
-
- Tumblr:
- domains:
- - tumblr.com
-
- Nasza-klasa.pl:
- domains:
- - nk.pl
-
- StumbleUpon:
- domains:
- - stumbleupon.com
-
- SourceForge:
- domains:
- - sourceforge.net
-
- Hyves:
- domains:
- - hyves.nl
-
- WAYN:
- domains:
- - wayn.com
-
- Buzznet:
- domains:
- - wayn.com
-
- Multiply:
- domains:
- - multiply.com
-
- Foursquare:
- domains:
- - foursquare.com
-
- vKruguDruzei.ru:
- domains:
- - vkrugudruzei.ru
-
- Mail.ru:
- domains:
- - my.mail.ru
-
- MoiKrug.ru:
- domains:
- - moikrug.ru
-
- Reddit:
- domains:
- - reddit.com
-
- Hacker News:
- domains:
- - news.ycombinator.com
-
- Identi.ca:
- domains:
- - identi.ca
-
- Weibo:
- domains:
- - weibo.com
- - t.cn
-
- Delicious:
- domains:
- - delicious.com
-
- Pocket:
- domains:
- - getpocket.com
-
- ITU Sozluk:
- domains:
- - itusozluk.com
-
- Instela:
- domains:
- - instela.com
-
- Eksi Sozluk:
- domains:
- - Sozluk.com
- - sourtimes.org
-
- Uludag Sozluk:
- domains:
- - uludagsozluk.com
- - ulusozluk.com
-
- Inci Sozluk:
- domains:
- - inci.sozlukspot.com
- - incisozluk.com
- - incisozluk.cc
-
- Hocam.com:
- domains:
- - hocam.com
-
- Donanimhaber:
- domains:
- - donanimhaber.com
-
- Disqus:
- domains:
- - redirect.disqus.com
- - disq.us
- - disqus.com
-
- Quora:
- domains:
- - quora.com
-
-# #######################################################################################################
-#
-# SEARCH PROVIDERS
-
-search:
-
- 1.cz:
- parameters:
- - q
- domains:
- - 1.cz
-
- # 123people TODO
-
- 1und1:
- parameters:
- - su
- domains:
- - search.1und1.de
-
- 360.cn:
- parameters:
- - q
- domains:
- - so.360.cn
- - www.so.com
-
- Abacho:
- parameters:
- - q
- domains:
- - www.abacho.de
- - www.abacho.com
- - www.abacho.co.uk
- - www.se.abacho.com
- - www.tr.abacho.com
- - www.abacho.at
- - www.abacho.fr
- - www.abacho.es
- - www.abacho.ch
- - www.abacho.it
-
- ABCsøk:
- parameters:
- - q
- domains:
- - abcsolk.no
- - verden.abcsok.no
-
- Acoon:
- parameters:
- - begriff
- domains:
- - www.acoon.de
-
- Alexa:
- parameters:
- - q
- domains:
- - alexa.com
- - search.toolbars.alexa.com
-
- Alice Adsl:
- parameters:
- - q
- domains:
- - rechercher.aliceadsl.fr
-
- AllTheWeb:
- parameters:
- - q
- domains:
- - www.alltheweb.com
-
- all.by:
- parameters:
- - query
- domains:
- - all.by
-
- Altavista:
- parameters:
- - q
- domains:
- - www.altavista.com
- - search.altavista.com
- - listings.altavista.com
- - altavista.de
- - altavista.fr
- - be-nl.altavista.com
- - be-fr.altavista.com
-
- Amazon:
- parameters:
- - keywords
- domains:
- - amazon.com
- - www.amazon.com
-
- AOL:
- parameters:
- - q
- - query
- domains:
- - search.aol.com
- - search.aol.it
- - aolsearch.aol.com
- - aolsearch.com
- - www.aolrecherche.aol.fr
- - www.aolrecherches.aol.fr
- - www.aolimages.aol.fr
- - aim.search.aol.com
- - www.recherche.aol.fr
- - find.web.aol.com
- - recherche.aol.ca
- - aolsearch.aol.co.uk
- - search.aol.co.uk
- - aolrecherche.aol.fr
- - sucheaol.aol.de
- - suche.aol.de
- - suche.aolsvc.de
- - aolbusqueda.aol.com.mx
- - alicesuche.aol.de
- - alicesuchet.aol.de
- - suchet2.aol.de
- - search.hp.my.aol.com.au
- - search.hp.my.aol.de
- - search.hp.my.aol.it
- - search-intl.netscape.com
-
- Apollo Latvia:
- parameters:
- - q
- domains:
- - apollo.lv/portal/search/
-
- APOLL07:
- parameters:
- - query
- domains:
- - apollo7.de
-
- Apontador:
- parameters:
- - q
- domains:
- - apontador.com.br
- - www.apontador.com.br
-
- Aport:
- parameters:
- - r
- domains:
- - sm.aport.ru
-
- arama:
- parameters:
- - q
- domains:
- - arama.com
-
- Arcor:
- parameters:
- - Keywords
- domains:
- - www.arcor.de
-
- Arianna:
- parameters:
- - query
- domains:
- - arianna.libero.it
- - www.arianna.com
-
- Ask:
- parameters:
- - q
- domains:
- - ask.com
- - www.ask.com
- - web.ask.com
- - int.ask.com
- - mws.ask.com
- - uk.ask.com
- - images.ask.com
- - ask.reference.com
- - www.askkids.com
- - iwon.ask.com
- - www.ask.co.uk
- - www.qbyrd.com
- - search-results.com
- - uk.search-results.com
- - www.search-results.com
- - int.search-results.com
-
- Ask Toolbar:
- parameters:
- - searchfor
- domains:
- - search.tb.ask.com
-
- Atlas:
- parameters:
- - q
- domains:
- - searchatlas.centrum.cz
-
- Austronaut:
- parameters:
- - q
- domains:
- - www2.austronaut.at
- - www1.astronaut.at
-
- Babylon:
- parameters:
- - q
- domains:
- - search.babylon.com
- - searchassist.babylon.com
-
- Baidu:
- parameters:
- - wd
- - word
- - kw
- - k
- domains:
- - www.baidu.com
- - www1.baidu.com
- - zhidao.baidu.com
- - tieba.baidu.com
- - news.baidu.com
- - web.gougou.com
-
- Biglobe:
- parameters:
- - q
- domains:
- - cgi.search.biglobe.ne.jp
-
- Bing:
- parameters:
- - q
- - Q
- domains:
- - bing.com
- - www.bing.com
- - msnbc.msn.com
- - dizionario.it.msn.com
- - cc.bingj.com
- - m.bing.com
-
- Bing Images:
- parameters:
- - q
- - Q
- domains:
- - bing.com/images/search
- - www.bing.com/images/search
-
- blekko:
- parameters:
- - q
- domains:
- - blekko.com
-
- Blogdigger:
- parameters:
- - q
- domains:
- - www.blogdigger.com
-
- Blogpulse:
- parameters:
- - query
- domains:
- - www.blogpulse.com
-
- Bluewin:
- parameters:
- - searchTerm
- domains:
- - search.bluewin.ch
-
- canoe.ca:
- parameters:
- - q
- domains:
- - web.canoe.ca
-
- Centrum:
- parameters:
- - q
- domains:
- - serach.centrum.cz
- - morfeo.centrum.cz
-
- Certified-Toolbar:
- parameters:
- - q
- domains:
- - search.certified-toolbar.com
-
- Charter:
- parameters:
- - q
- domains:
- - www.charter.net
-
- Clix:
- parameters:
- - question
- domains:
- - pesquisa.clix.pt
-
- Comcast:
- parameters:
- - q
- domains:
- - search.comcast.net
-
- Conduit:
- parameters:
- - q
- domains:
- - search.conduit.com
-
- Comcast:
- parameters:
- - q
- domains:
- - serach.comcast.net
-
- Crawler:
- parameters:
- - q
- domains:
- - www.crawler.com
-
- Compuserve:
- parameters:
- - query
- domains:
- - websearch.cs.com
-
- Cuil:
- parameters:
- - q
- domains:
- - www.cuil.com
-
- Daemon search:
- parameters:
- - q
- domains:
- - daemon-search.com
- - my.daemon-search.com
-
- Dalesearch:
- parameters:
- - q
- domains:
- - www.dalesearch.com
-
- DasOertliche:
- parameters:
- - kw
- domains:
- - www.dasoertliche.de
-
- DasTelefonbuch:
- parameters:
- - kw
- domains:
- - www1.dastelefonbuch.de
-
- Daum:
- parameters:
- - q
- domains:
- - search.daum.net
-
- Delfi latvia:
- parameters:
- - q
- domains:
- - smart.delfi.lv
-
- Delfi:
- parameters:
- - q
- domains:
- - otsing.delfi.ee
-
- Digg:
- parameters:
- - s
- domains:
- - digg.com
-
- dmoz:
- parameters:
- - q
- domains:
- - dmoz.org
- - editors.dmoz.org
-
- DuckDuckGo:
- parameters:
- - q
- domains:
- - duckduckgo.com
-
- earthlink:
- parameters:
- - q
- domains:
- - search.earthlink.net
-
- Ecosia:
- parameters:
- - q
- domains:
- - ecosia.org
-
- Eniro:
- parameters:
- - q
- - search_word
- domains:
- - www.eniro.se
-
- Eurip:
- parameters:
- - q
- domains:
- - www.eurip.com
-
- Euroseek:
- parameters:
- - string
- domains:
- - www.euroseek.com
-
- Everyclick:
- parameters:
- - keyword
- domains:
- - www.everyclick.com
-
- Excite:
- parameters:
- - q
- - search
- domains:
- - search.excite.it
- - search.excite.fr
- - search.excite.de
- - search.excite.co.uk
- - serach.excite.es
- - search.excite.nl
- - msxml.excite.com
- - www.excite.co.jp
-
- Exalead:
- parameters:
- - q
- domains:
- - www.exalead.fr
- - www.exalead.com
-
- eo:
- parameters:
- - x_query
- domains:
- - eo.st
-
- Fast Browser Search:
- parameters:
- - q
- domains:
- - www.fastbrowsersearch.com
-
- Francite:
- parameters:
- - name
- domains:
- - recherche.francite.com
-
- Findwide:
- parameters:
- - k
- domains:
- - search.findwide.com
-
- Fireball:
- parameters:
- - q
- domains:
- - www.fireball.de
-
- Firstfind:
- parameters:
- - qry
- domains:
- - www.firstsfind.com
-
- Fixsuche:
- parameters:
- - q
- domains:
- - www.fixsuche.de
-
- Flix:
- parameters:
- - keyword
- domains:
- - www.flix.de
-
- Forestle:
- parameters:
- - q
- domains:
- - forestle.org
- - www.forestle.org
- - forestle.mobi
-
- Free:
- parameters:
- - q
- domains:
- - search.free.fr
- - search1-2.free.fr
- - search1-1.free.fr
-
- Freecause:
- parameters:
- - p
- domains:
- - search.freecause.com
-
- Freenet:
- parameters:
- - query
- - Keywords
- domains:
- - suche.freenet.de
-
- Freshweather:
- parameters:
- - q
- domains:
- - www.fresh-weather.com
-
- FriendFeed:
- parameters:
- - q
- domains:
- - friendfeed.com
-
- GAIS:
- parameters:
- - q
- domains:
- - gais.cs.ccu.edu.tw
-
- Geona:
- parameters:
- - q
- domains:
- - geona.net
-
- Genieo:
- parameters:
- - q
- domains:
- - search.genieo.com
-
- Gigablast:
- parameters:
- - q
- domains:
- - www.gigablast.com
- - dir.gigablast.com
-
- Globososo:
- parameters:
- - q
- domains:
- - searches.globososo.com
- - search.globososo.com
-
- GMX:
- parameters:
- - su
- domains:
- - suche.gmx.net
-
- Gnadenmeer:
- parameters:
- - keyword
- domains:
- - www.gnadenmeer.de
-
- Gomeo:
- parameters:
- - Keywords
- domains:
- - www.gomeo.com
-
- goo:
- parameters:
- - MT
- domains:
- - search.goo.ne.jp
- - ocnsearch.goo.ne.jp
-
- Google:
- parameters:
- - q
- - query # For www.cnn.com (powered by Google)
- - Keywords # For gooofullsearch.com (powered by Google)
- domains:
- - www.google.com
- - www.google.ac
- - www.google.ad
- - www.google.com.af
- - www.google.com.ag
- - www.google.com.ai
- - www.google.am
- - www.google.it.ao
- - www.google.com.ar
- - www.google.as
- - www.google.at
- - www.google.com.au
- - www.google.az
- - www.google.ba
- - www.google.com.bd
- - www.google.be
- - www.google.bf
- - www.google.bg
- - www.google.com.bh
- - www.google.bi
- - www.google.bj
- - www.google.com.bn
- - www.google.com.bo
- - www.google.com.br
- - www.google.bs
- - www.google.co.bw
- - www.google.com.by
- - www.google.by
- - www.google.com.bz
- - www.google.ca
- - www.google.com.kh
- - www.google.cc
- - www.google.cd
- - www.google.cf
- - www.google.cat
- - www.google.cg
- - www.google.ch
- - www.google.ci
- - www.google.co.ck
- - www.google.cl
- - www.google.cm
- - www.google.cn
- - www.google.com.co
- - www.google.co.cr
- - www.google.com.cu
- - www.google.cv
- - www.google.com.cy
- - www.google.cz
- - www.google.de
- - www.google.dj
- - www.google.dk
- - www.google.dm
- - www.google.com.do
- - www.google.dz
- - www.google.com.ec
- - www.google.ee
- - www.google.com.eg
- - www.google.es
- - www.google.com.et
- - www.google.fi
- - www.google.com.fj
- - www.google.fm
- - www.google.fr
- - www.google.ga
- - www.google.gd
- - www.google.ge
- - www.google.gf
- - www.google.gg
- - www.google.com.gh
- - www.google.com.gi
- - www.google.gl
- - www.google.gm
- - www.google.gp
- - www.google.gr
- - www.google.com.gt
- - www.google.gy
- - www.google.com.hk
- - www.google.hn
- - www.google.hr
- - www.google.ht
- - www.google.hu
- - www.google.co.id
- - www.google.iq
- - www.google.ie
- - www.google.co.il
- - www.google.im
- - www.google.co.in
- - www.google.io
- - www.google.is
- - www.google.it
- - www.google.je
- - www.google.com.jm
- - www.google.jo
- - www.google.co.jp
- - www.google.co.ke
- - www.google.com.kh
- - www.google.ki
- - www.google.kg
- - www.google.co.kr
- - www.google.com.kw
- - www.google.kz
- - www.google.la
- - www.google.com.lb
- - www.google.com.lc
- - www.google.li
- - www.google.lk
- - www.google.co.ls
- - www.google.lt
- - www.google.lu
- - www.google.lv
- - www.google.com.ly
- - www.google.co.ma
- - www.google.md
- - www.google.me
- - www.google.mg
- - www.google.mk
- - www.google.ml
- - www.google.mn
- - www.google.ms
- - www.google.com.mt
- - www.google.mu
- - www.google.mv
- - www.google.mw
- - www.google.com.mx
- - www.google.com.my
- - www.google.co.mz
- - www.google.com.na
- - www.google.ne
- - www.google.com.nf
- - www.google.com.ng
- - www.google.com.ni
- - www.google.nl
- - www.google.no
- - www.google.com.np
- - www.google.nr
- - www.google.nu
- - www.google.co.nz
- - www.google.com.om
- - www.google.com.pa
- - www.google.com.pe
- - www.google.com.ph
- - www.google.com.pk
- - www.google.pl
- - www.google.pn
- - www.google.com.pr
- - www.google.ps
- - www.google.pt
- - www.google.com.py
- - www.google.com.qa
- - www.google.ro
- - www.google.rs
- - www.google.ru
- - www.google.rw
- - www.google.com.sa
- - www.google.com.sb
- - www.google.sc
- - www.google.se
- - www.google.com.sg
- - www.google.sh
- - www.google.si
- - www.google.sk
- - www.google.com.sl
- - www.google.sn
- - www.google.sm
- - www.google.so
- - www.google.st
- - www.google.com.sv
- - www.google.td
- - www.google.tg
- - www.google.co.th
- - www.google.com.tj
- - www.google.tk
- - www.google.tl
- - www.google.tm
- - www.google.to
- - www.google.com.tn
- - www.google.com.tr
- - www.google.tt
- - www.google.com.tw
- - www.google.co.tz
- - www.google.com.ua
- - www.google.co.ug
- - www.google.ae
- - www.google.co.uk
- - www.google.us
- - www.google.com.uy
- - www.google.co.uz
- - www.google.com.vc
- - www.google.co.ve
- - www.google.vg
- - www.google.co.vi
- - www.google.com.vn
- - www.google.vu
- - www.google.ws
- - www.google.co.za
- - www.google.co.zm
- - www.google.co.zw
- - google.com
- - google.ac
- - google.ad
- - google.com.af
- - google.com.ag
- - google.com.ai
- - google.am
- - google.it.ao
- - google.com.ar
- - google.as
- - google.at
- - google.com.au
- - google.az
- - google.ba
- - google.com.bd
- - google.be
- - google.bf
- - google.bg
- - google.com.bh
- - google.bi
- - google.bj
- - google.com.bn
- - google.com.bo
- - google.com.br
- - google.bs
- - google.co.bw
- - google.com.by
- - google.by
- - google.com.bz
- - google.ca
- - google.com.kh
- - google.cc
- - google.cd
- - google.cf
- - google.cat
- - google.cg
- - google.ch
- - google.ci
- - google.co.ck
- - google.cl
- - google.cm
- - google.cn
- - google.com.co
- - google.co.cr
- - google.com.cu
- - google.cv
- - google.com.cy
- - google.cz
- - google.de
- - google.dj
- - google.dk
- - google.dm
- - google.com.do
- - google.dz
- - google.com.ec
- - google.ee
- - google.com.eg
- - google.es
- - google.com.et
- - google.fi
- - google.com.fj
- - google.fm
- - google.fr
- - google.ga
- - google.gd
- - google.ge
- - google.gf
- - google.gg
- - google.com.gh
- - google.com.gi
- - google.gl
- - google.gm
- - google.gp
- - google.gr
- - google.com.gt
- - google.gy
- - google.com.hk
- - google.hn
- - google.hr
- - google.ht
- - google.hu
- - google.co.id
- - google.iq
- - google.ie
- - google.co.il
- - google.im
- - google.co.in
- - google.io
- - google.is
- - google.it
- - google.je
- - google.com.jm
- - google.jo
- - google.co.jp
- - google.co.ke
- - google.com.kh
- - google.ki
- - google.kg
- - google.co.kr
- - google.com.kw
- - google.kz
- - google.la
- - google.com.lb
- - google.com.lc
- - google.li
- - google.lk
- - google.co.ls
- - google.lt
- - google.lu
- - google.lv
- - google.com.ly
- - google.co.ma
- - google.md
- - google.me
- - google.mg
- - google.mk
- - google.ml
- - google.mn
- - google.ms
- - google.com.mt
- - google.mu
- - google.mv
- - google.mw
- - google.com.mx
- - google.com.my
- - google.co.mz
- - google.com.na
- - google.ne
- - google.com.nf
- - google.com.ng
- - google.com.ni
- - google.nl
- - google.no
- - google.com.np
- - google.nr
- - google.nu
- - google.co.nz
- - google.com.om
- - google.com.pa
- - google.com.pe
- - google.com.ph
- - google.com.pk
- - google.pl
- - google.pn
- - google.com.pr
- - google.ps
- - google.pt
- - google.com.py
- - google.com.qa
- - google.ro
- - google.rs
- - google.ru
- - google.rw
- - google.com.sa
- - google.com.sb
- - google.sc
- - google.se
- - google.com.sg
- - google.sh
- - google.si
- - google.sk
- - google.com.sl
- - google.sn
- - google.sm
- - google.so
- - google.st
- - google.com.sv
- - google.td
- - google.tg
- - google.co.th
- - google.com.tj
- - google.tk
- - google.tl
- - google.tm
- - google.to
- - google.com.tn
- - google.com.tr
- - google.tt
- - google.com.tw
- - google.co.tz
- - google.com.ua
- - google.co.ug
- - google.ae
- - google.co.uk
- - google.us
- - google.com.uy
- - google.co.uz
- - google.com.vc
- - google.co.ve
- - google.vg
- - google.co.vi
- - google.com.vn
- - google.vu
- - google.ws
- - google.co.za
- - google.co.zm
- - google.co.zw
- # powered by Google
- - search.avg.com
- - isearch.avg.com
- - www.cnn.com
- - darkoogle.com
- - search.darkoogle.com
- - search.foxtab.com
- - www.gooofullsearch.com
- - search.hiyo.com
- - search.incredimail.com
- - search1.incredimail.com
- - search2.incredimail.com
- - search3.incredimail.com
- - search4.incredimail.com
- - search.incredibar.com
- - search.sweetim.com
- - www.fastweb.it
- - search.juno.com
- - find.tdc.dk
- - searchresults.verizon.com
- - search.walla.co.il
- - search.alot.com
- # Google Earch
- - www.googleearth.de
- - www.googleearth.fr
- # Google Cache
- - webcache.googleusercontent.com
- # Google SSL
- - encrypted.google.com
- # Syndicated search
- - googlesyndicatedsearch.com
-
- Google Blogsearch:
- parameters:
- - q
- domains:
- - blogsearch.google.ac
- - blogsearch.google.ad
- - blogsearch.google.ae
- - blogsearch.google.am
- - blogsearch.google.as
- - blogsearch.google.at
- - blogsearch.google.az
- - blogsearch.google.ba
- - blogsearch.google.be
- - blogsearch.google.bf
- - blogsearch.google.bg
- - blogsearch.google.bi
- - blogsearch.google.bj
- - blogsearch.google.bs
- - blogsearch.google.by
- - blogsearch.google.ca
- - blogsearch.google.cat
- - blogsearch.google.cc
- - blogsearch.google.cd
- - blogsearch.google.cf
- - blogsearch.google.cg
- - blogsearch.google.ch
- - blogsearch.google.ci
- - blogsearch.google.cl
- - blogsearch.google.cm
- - blogsearch.google.cn
- - blogsearch.google.co.bw
- - blogsearch.google.co.ck
- - blogsearch.google.co.cr
- - blogsearch.google.co.id
- - blogsearch.google.co.il
- - blogsearch.google.co.in
- - blogsearch.google.co.jp
- - blogsearch.google.co.ke
- - blogsearch.google.co.kr
- - blogsearch.google.co.ls
- - blogsearch.google.co.ma
- - blogsearch.google.co.mz
- - blogsearch.google.co.nz
- - blogsearch.google.co.th
- - blogsearch.google.co.tz
- - blogsearch.google.co.ug
- - blogsearch.google.co.uk
- - blogsearch.google.co.uz
- - blogsearch.google.co.ve
- - blogsearch.google.co.vi
- - blogsearch.google.co.za
- - blogsearch.google.co.zm
- - blogsearch.google.co.zw
- - blogsearch.google.com
- - blogsearch.google.com.af
- - blogsearch.google.com.ag
- - blogsearch.google.com.ai
- - blogsearch.google.com.ar
- - blogsearch.google.com.au
- - blogsearch.google.com.bd
- - blogsearch.google.com.bh
- - blogsearch.google.com.bn
- - blogsearch.google.com.bo
- - blogsearch.google.com.br
- - blogsearch.google.com.by
- - blogsearch.google.com.bz
- - blogsearch.google.com.co
- - blogsearch.google.com.cu
- - blogsearch.google.com.cy
- - blogsearch.google.com.do
- - blogsearch.google.com.ec
- - blogsearch.google.com.eg
- - blogsearch.google.com.et
- - blogsearch.google.com.fj
- - blogsearch.google.com.gh
- - blogsearch.google.com.gi
- - blogsearch.google.com.gt
- - blogsearch.google.com.hk
- - blogsearch.google.com.jm
- - blogsearch.google.com.kh
- - blogsearch.google.com.kh
- - blogsearch.google.com.kw
- - blogsearch.google.com.lb
- - blogsearch.google.com.lc
- - blogsearch.google.com.ly
- - blogsearch.google.com.mt
- - blogsearch.google.com.mx
- - blogsearch.google.com.my
- - blogsearch.google.com.na
- - blogsearch.google.com.nf
- - blogsearch.google.com.ng
- - blogsearch.google.com.ni
- - blogsearch.google.com.np
- - blogsearch.google.com.om
- - blogsearch.google.com.pa
- - blogsearch.google.com.pe
- - blogsearch.google.com.ph
- - blogsearch.google.com.pk
- - blogsearch.google.com.pr
- - blogsearch.google.com.py
- - blogsearch.google.com.qa
- - blogsearch.google.com.sa
- - blogsearch.google.com.sb
- - blogsearch.google.com.sg
- - blogsearch.google.com.sl
- - blogsearch.google.com.sv
- - blogsearch.google.com.tj
- - blogsearch.google.com.tn
- - blogsearch.google.com.tr
- - blogsearch.google.com.tw
- - blogsearch.google.com.ua
- - blogsearch.google.com.uy
- - blogsearch.google.com.vc
- - blogsearch.google.com.vn
- - blogsearch.google.cv
- - blogsearch.google.cz
- - blogsearch.google.de
- - blogsearch.google.dj
- - blogsearch.google.dk
- - blogsearch.google.dm
- - blogsearch.google.dz
- - blogsearch.google.ee
- - blogsearch.google.es
- - blogsearch.google.fi
- - blogsearch.google.fm
- - blogsearch.google.fr
- - blogsearch.google.ga
- - blogsearch.google.gd
- - blogsearch.google.ge
- - blogsearch.google.gf
- - blogsearch.google.gg
- - blogsearch.google.gl
- - blogsearch.google.gm
- - blogsearch.google.gp
- - blogsearch.google.gr
- - blogsearch.google.gy
- - blogsearch.google.hn
- - blogsearch.google.hr
- - blogsearch.google.ht
- - blogsearch.google.hu
- - blogsearch.google.ie
- - blogsearch.google.im
- - blogsearch.google.io
- - blogsearch.google.iq
- - blogsearch.google.is
- - blogsearch.google.it
- - blogsearch.google.it.ao
- - blogsearch.google.je
- - blogsearch.google.jo
- - blogsearch.google.kg
- - blogsearch.google.ki
- - blogsearch.google.kz
- - blogsearch.google.la
- - blogsearch.google.li
- - blogsearch.google.lk
- - blogsearch.google.lt
- - blogsearch.google.lu
- - blogsearch.google.lv
- - blogsearch.google.md
- - blogsearch.google.me
- - blogsearch.google.mg
- - blogsearch.google.mk
- - blogsearch.google.ml
- - blogsearch.google.mn
- - blogsearch.google.ms
- - blogsearch.google.mu
- - blogsearch.google.mv
- - blogsearch.google.mw
- - blogsearch.google.ne
- - blogsearch.google.nl
- - blogsearch.google.no
- - blogsearch.google.nr
- - blogsearch.google.nu
- - blogsearch.google.pl
- - blogsearch.google.pn
- - blogsearch.google.ps
- - blogsearch.google.pt
- - blogsearch.google.ro
- - blogsearch.google.rs
- - blogsearch.google.ru
- - blogsearch.google.rw
- - blogsearch.google.sc
- - blogsearch.google.se
- - blogsearch.google.sh
- - blogsearch.google.si
- - blogsearch.google.sk
- - blogsearch.google.sm
- - blogsearch.google.sn
- - blogsearch.google.so
- - blogsearch.google.st
- - blogsearch.google.td
- - blogsearch.google.tg
- - blogsearch.google.tk
- - blogsearch.google.tl
- - blogsearch.google.tm
- - blogsearch.google.to
- - blogsearch.google.tt
- - blogsearch.google.us
- - blogsearch.google.vg
- - blogsearch.google.vu
- - blogsearch.google.ws
-
- Google Images:
- parameters:
- - q
- domains:
- - google.ac/imgres
- - google.ad/imgres
- - google.ae/imgres
- - google.am/imgres
- - google.as/imgres
- - google.at/imgres
- - google.az/imgres
- - google.ba/imgres
- - google.be/imgres
- - google.bf/imgres
- - google.bg/imgres
- - google.bi/imgres
- - google.bj/imgres
- - google.bs/imgres
- - google.by/imgres
- - google.ca/imgres
- - google.cat/imgres
- - google.cc/imgres
- - google.cd/imgres
- - google.cf/imgres
- - google.cg/imgres
- - google.ch/imgres
- - google.ci/imgres
- - google.cl/imgres
- - google.cm/imgres
- - google.cn/imgres
- - google.co.bw/imgres
- - google.co.ck/imgres
- - google.co.cr/imgres
- - google.co.id/imgres
- - google.co.il/imgres
- - google.co.in/imgres
- - google.co.jp/imgres
- - google.co.ke/imgres
- - google.co.kr/imgres
- - google.co.ls/imgres
- - google.co.ma/imgres
- - google.co.mz/imgres
- - google.co.nz/imgres
- - google.co.th/imgres
- - google.co.tz/imgres
- - google.co.ug/imgres
- - google.co.uk/imgres
- - google.co.uz/imgres
- - google.co.ve/imgres
- - google.co.vi/imgres
- - google.co.za/imgres
- - google.co.zm/imgres
- - google.co.zw/imgres
- - google.com/imgres
- - google.com.af/imgres
- - google.com.ag/imgres
- - google.com.ai/imgres
- - google.com.ar/imgres
- - google.com.au/imgres
- - google.com.bd/imgres
- - google.com.bh/imgres
- - google.com.bn/imgres
- - google.com.bo/imgres
- - google.com.br/imgres
- - google.com.by/imgres
- - google.com.bz/imgres
- - google.com.co/imgres
- - google.com.cu/imgres
- - google.com.cy/imgres
- - google.com.do/imgres
- - google.com.ec/imgres
- - google.com.eg/imgres
- - google.com.et/imgres
- - google.com.fj/imgres
- - google.com.gh/imgres
- - google.com.gi/imgres
- - google.com.gt/imgres
- - google.com.hk/imgres
- - google.com.jm/imgres
- - google.com.kh/imgres
- - google.com.kw/imgres
- - google.com.lb/imgres
- - google.com.lc/imgres
- - google.com.ly/imgres
- - google.com.mt/imgres
- - google.com.mx/imgres
- - google.com.my/imgres
- - google.com.na/imgres
- - google.com.nf/imgres
- - google.com.ng/imgres
- - google.com.ni/imgres
- - google.com.np/imgres
- - google.com.om/imgres
- - google.com.pa/imgres
- - google.com.pe/imgres
- - google.com.ph/imgres
- - google.com.pk/imgres
- - google.com.pr/imgres
- - google.com.py/imgres
- - google.com.qa/imgres
- - google.com.sa/imgres
- - google.com.sb/imgres
- - google.com.sg/imgres
- - google.com.sl/imgres
- - google.com.sv/imgres
- - google.com.tj/imgres
- - google.com.tn/imgres
- - google.com.tr/imgres
- - google.com.tw/imgres
- - google.com.ua/imgres
- - google.com.uy/imgres
- - google.com.vc/imgres
- - google.com.vn/imgres
- - google.cv/imgres
- - google.cz/imgres
- - google.de/imgres
- - google.dj/imgres
- - google.dk/imgres
- - google.dm/imgres
- - google.dz/imgres
- - google.ee/imgres
- - google.es/imgres
- - google.fi/imgres
- - google.fm/imgres
- - google.fr/imgres
- - google.ga/imgres
- - google.gd/imgres
- - google.ge/imgres
- - google.gf/imgres
- - google.gg/imgres
- - google.gl/imgres
- - google.gm/imgres
- - google.gp/imgres
- - google.gr/imgres
- - google.gy/imgres
- - google.hn/imgres
- - google.hr/imgres
- - google.ht/imgres
- - google.hu/imgres
- - google.ie/imgres
- - google.im/imgres
- - google.io/imgres
- - google.iq/imgres
- - google.is/imgres
- - google.it/imgres
- - google.it.ao/imgres
- - google.je/imgres
- - google.jo/imgres
- - google.kg/imgres
- - google.ki/imgres
- - google.kz/imgres
- - google.la/imgres
- - google.li/imgres
- - google.lk/imgres
- - google.lt/imgres
- - google.lu/imgres
- - google.lv/imgres
- - google.md/imgres
- - google.me/imgres
- - google.mg/imgres
- - google.mk/imgres
- - google.ml/imgres
- - google.mn/imgres
- - google.ms/imgres
- - google.mu/imgres
- - google.mv/imgres
- - google.mw/imgres
- - google.ne/imgres
- - google.nl/imgres
- - google.no/imgres
- - google.nr/imgres
- - google.nu/imgres
- - google.pl/imgres
- - google.pn/imgres
- - google.ps/imgres
- - google.pt/imgres
- - google.ro/imgres
- - google.rs/imgres
- - google.ru/imgres
- - google.rw/imgres
- - google.sc/imgres
- - google.se/imgres
- - google.sh/imgres
- - google.si/imgres
- - google.sk/imgres
- - google.sm/imgres
- - google.sn/imgres
- - google.so/imgres
- - google.st/imgres
- - google.td/imgres
- - google.tg/imgres
- - google.tk/imgres
- - google.tl/imgres
- - google.tm/imgres
- - google.to/imgres
- - google.tt/imgres
- - google.us/imgres
- - google.vg/imgres
- - google.vu/imgres
- - images.google.ws
- - images.google.ac
- - images.google.ad
- - images.google.ae
- - images.google.am
- - images.google.as
- - images.google.at
- - images.google.az
- - images.google.ba
- - images.google.be
- - images.google.bf
- - images.google.bg
- - images.google.bi
- - images.google.bj
- - images.google.bs
- - images.google.by
- - images.google.ca
- - images.google.cat
- - images.google.cc
- - images.google.cd
- - images.google.cf
- - images.google.cg
- - images.google.ch
- - images.google.ci
- - images.google.cl
- - images.google.cm
- - images.google.cn
- - images.google.co.bw
- - images.google.co.ck
- - images.google.co.cr
- - images.google.co.id
- - images.google.co.il
- - images.google.co.in
- - images.google.co.jp
- - images.google.co.ke
- - images.google.co.kr
- - images.google.co.ls
- - images.google.co.ma
- - images.google.co.mz
- - images.google.co.nz
- - images.google.co.th
- - images.google.co.tz
- - images.google.co.ug
- - images.google.co.uk
- - images.google.co.uz
- - images.google.co.ve
- - images.google.co.vi
- - images.google.co.za
- - images.google.co.zm
- - images.google.co.zw
- - images.google.com
- - images.google.com.af
- - images.google.com.ag
- - images.google.com.ai
- - images.google.com.ar
- - images.google.com.au
- - images.google.com.bd
- - images.google.com.bh
- - images.google.com.bn
- - images.google.com.bo
- - images.google.com.br
- - images.google.com.by
- - images.google.com.bz
- - images.google.com.co
- - images.google.com.cu
- - images.google.com.cy
- - images.google.com.do
- - images.google.com.ec
- - images.google.com.eg
- - images.google.com.et
- - images.google.com.fj
- - images.google.com.gh
- - images.google.com.gi
- - images.google.com.gt
- - images.google.com.hk
- - images.google.com.jm
- - images.google.com.kh
- - images.google.com.kh
- - images.google.com.kw
- - images.google.com.lb
- - images.google.com.lc
- - images.google.com.ly
- - images.google.com.mt
- - images.google.com.mx
- - images.google.com.my
- - images.google.com.na
- - images.google.com.nf
- - images.google.com.ng
- - images.google.com.ni
- - images.google.com.np
- - images.google.com.om
- - images.google.com.pa
- - images.google.com.pe
- - images.google.com.ph
- - images.google.com.pk
- - images.google.com.pr
- - images.google.com.py
- - images.google.com.qa
- - images.google.com.sa
- - images.google.com.sb
- - images.google.com.sg
- - images.google.com.sl
- - images.google.com.sv
- - images.google.com.tj
- - images.google.com.tn
- - images.google.com.tr
- - images.google.com.tw
- - images.google.com.ua
- - images.google.com.uy
- - images.google.com.vc
- - images.google.com.vn
- - images.google.cv
- - images.google.cz
- - images.google.de
- - images.google.dj
- - images.google.dk
- - images.google.dm
- - images.google.dz
- - images.google.ee
- - images.google.es
- - images.google.fi
- - images.google.fm
- - images.google.fr
- - images.google.ga
- - images.google.gd
- - images.google.ge
- - images.google.gf
- - images.google.gg
- - images.google.gl
- - images.google.gm
- - images.google.gp
- - images.google.gr
- - images.google.gy
- - images.google.hn
- - images.google.hr
- - images.google.ht
- - images.google.hu
- - images.google.ie
- - images.google.im
- - images.google.io
- - images.google.iq
- - images.google.is
- - images.google.it
- - images.google.it.ao
- - images.google.je
- - images.google.jo
- - images.google.kg
- - images.google.ki
- - images.google.kz
- - images.google.la
- - images.google.li
- - images.google.lk
- - images.google.lt
- - images.google.lu
- - images.google.lv
- - images.google.md
- - images.google.me
- - images.google.mg
- - images.google.mk
- - images.google.ml
- - images.google.mn
- - images.google.ms
- - images.google.mu
- - images.google.mv
- - images.google.mw
- - images.google.ne
- - images.google.nl
- - images.google.no
- - images.google.nr
- - images.google.nu
- - images.google.pl
- - images.google.pn
- - images.google.ps
- - images.google.pt
- - images.google.ro
- - images.google.rs
- - images.google.ru
- - images.google.rw
- - images.google.sc
- - images.google.se
- - images.google.sh
- - images.google.si
- - images.google.sk
- - images.google.sm
- - images.google.sn
- - images.google.so
- - images.google.st
- - images.google.td
- - images.google.tg
- - images.google.tk
- - images.google.tl
- - images.google.tm
- - images.google.to
- - images.google.tt
- - images.google.us
- - images.google.vg
- - images.google.vu
- - images.google.ws
-
- Google News:
- parameters:
- - q
- domains:
- - news.google.ac
- - news.google.ad
- - news.google.ae
- - news.google.am
- - news.google.as
- - news.google.at
- - news.google.az
- - news.google.ba
- - news.google.be
- - news.google.bf
- - news.google.bg
- - news.google.bi
- - news.google.bj
- - news.google.bs
- - news.google.by
- - news.google.ca
- - news.google.cat
- - news.google.cc
- - news.google.cd
- - news.google.cf
- - news.google.cg
- - news.google.ch
- - news.google.ci
- - news.google.cl
- - news.google.cm
- - news.google.cn
- - news.google.co.bw
- - news.google.co.ck
- - news.google.co.cr
- - news.google.co.id
- - news.google.co.il
- - news.google.co.in
- - news.google.co.jp
- - news.google.co.ke
- - news.google.co.kr
- - news.google.co.ls
- - news.google.co.ma
- - news.google.co.mz
- - news.google.co.nz
- - news.google.co.th
- - news.google.co.tz
- - news.google.co.ug
- - news.google.co.uk
- - news.google.co.uz
- - news.google.co.ve
- - news.google.co.vi
- - news.google.co.za
- - news.google.co.zm
- - news.google.co.zw
- - news.google.com
- - news.google.com.af
- - news.google.com.ag
- - news.google.com.ai
- - news.google.com.ar
- - news.google.com.au
- - news.google.com.bd
- - news.google.com.bh
- - news.google.com.bn
- - news.google.com.bo
- - news.google.com.br
- - news.google.com.by
- - news.google.com.bz
- - news.google.com.co
- - news.google.com.cu
- - news.google.com.cy
- - news.google.com.do
- - news.google.com.ec
- - news.google.com.eg
- - news.google.com.et
- - news.google.com.fj
- - news.google.com.gh
- - news.google.com.gi
- - news.google.com.gt
- - news.google.com.hk
- - news.google.com.jm
- - news.google.com.kh
- - news.google.com.kh
- - news.google.com.kw
- - news.google.com.lb
- - news.google.com.lc
- - news.google.com.ly
- - news.google.com.mt
- - news.google.com.mx
- - news.google.com.my
- - news.google.com.na
- - news.google.com.nf
- - news.google.com.ng
- - news.google.com.ni
- - news.google.com.np
- - news.google.com.om
- - news.google.com.pa
- - news.google.com.pe
- - news.google.com.ph
- - news.google.com.pk
- - news.google.com.pr
- - news.google.com.py
- - news.google.com.qa
- - news.google.com.sa
- - news.google.com.sb
- - news.google.com.sg
- - news.google.com.sl
- - news.google.com.sv
- - news.google.com.tj
- - news.google.com.tn
- - news.google.com.tr
- - news.google.com.tw
- - news.google.com.ua
- - news.google.com.uy
- - news.google.com.vc
- - news.google.com.vn
- - news.google.cv
- - news.google.cz
- - news.google.de
- - news.google.dj
- - news.google.dk
- - news.google.dm
- - news.google.dz
- - news.google.ee
- - news.google.es
- - news.google.fi
- - news.google.fm
- - news.google.fr
- - news.google.ga
- - news.google.gd
- - news.google.ge
- - news.google.gf
- - news.google.gg
- - news.google.gl
- - news.google.gm
- - news.google.gp
- - news.google.gr
- - news.google.gy
- - news.google.hn
- - news.google.hr
- - news.google.ht
- - news.google.hu
- - news.google.ie
- - news.google.im
- - news.google.io
- - news.google.iq
- - news.google.is
- - news.google.it
- - news.google.it.ao
- - news.google.je
- - news.google.jo
- - news.google.kg
- - news.google.ki
- - news.google.kz
- - news.google.la
- - news.google.li
- - news.google.lk
- - news.google.lt
- - news.google.lu
- - news.google.lv
- - news.google.md
- - news.google.me
- - news.google.mg
- - news.google.mk
- - news.google.ml
- - news.google.mn
- - news.google.ms
- - news.google.mu
- - news.google.mv
- - news.google.mw
- - news.google.ne
- - news.google.nl
- - news.google.no
- - news.google.nr
- - news.google.nu
- - news.google.pl
- - news.google.pn
- - news.google.ps
- - news.google.pt
- - news.google.ro
- - news.google.rs
- - news.google.ru
- - news.google.rw
- - news.google.sc
- - news.google.se
- - news.google.sh
- - news.google.si
- - news.google.sk
- - news.google.sm
- - news.google.sn
- - news.google.so
- - news.google.st
- - news.google.td
- - news.google.tg
- - news.google.tk
- - news.google.tl
- - news.google.tm
- - news.google.to
- - news.google.tt
- - news.google.us
- - news.google.vg
- - news.google.vu
- - news.google.ws
-
- Google Product Search:
- parameters:
- - q
- domains:
- - google.ac/products
- - google.ad/products
- - google.ae/products
- - google.am/products
- - google.as/products
- - google.at/products
- - google.az/products
- - google.ba/products
- - google.be/products
- - google.bf/products
- - google.bg/products
- - google.bi/products
- - google.bj/products
- - google.bs/products
- - google.by/products
- - google.ca/products
- - google.cat/products
- - google.cc/products
- - google.cd/products
- - google.cf/products
- - google.cg/products
- - google.ch/products
- - google.ci/products
- - google.cl/products
- - google.cm/products
- - google.cn/products
- - google.co.bw/products
- - google.co.ck/products
- - google.co.cr/products
- - google.co.id/products
- - google.co.il/products
- - google.co.in/products
- - google.co.jp/products
- - google.co.ke/products
- - google.co.kr/products
- - google.co.ls/products
- - google.co.ma/products
- - google.co.mz/products
- - google.co.nz/products
- - google.co.th/products
- - google.co.tz/products
- - google.co.ug/products
- - google.co.uk/products
- - google.co.uz/products
- - google.co.ve/products
- - google.co.vi/products
- - google.co.za/products
- - google.co.zm/products
- - google.co.zw/products
- - google.com/products
- - google.com.af/products
- - google.com.ag/products
- - google.com.ai/products
- - google.com.ar/products
- - google.com.au/products
- - google.com.bd/products
- - google.com.bh/products
- - google.com.bn/products
- - google.com.bo/products
- - google.com.br/products
- - google.com.by/products
- - google.com.bz/products
- - google.com.co/products
- - google.com.cu/products
- - google.com.cy/products
- - google.com.do/products
- - google.com.ec/products
- - google.com.eg/products
- - google.com.et/products
- - google.com.fj/products
- - google.com.gh/products
- - google.com.gi/products
- - google.com.gt/products
- - google.com.hk/products
- - google.com.jm/products
- - google.com.kh/products
- - google.com.kh/products
- - google.com.kw/products
- - google.com.lb/products
- - google.com.lc/products
- - google.com.ly/products
- - google.com.mt/products
- - google.com.mx/products
- - google.com.my/products
- - google.com.na/products
- - google.com.nf/products
- - google.com.ng/products
- - google.com.ni/products
- - google.com.np/products
- - google.com.om/products
- - google.com.pa/products
- - google.com.pe/products
- - google.com.ph/products
- - google.com.pk/products
- - google.com.pr/products
- - google.com.py/products
- - google.com.qa/products
- - google.com.sa/products
- - google.com.sb/products
- - google.com.sg/products
- - google.com.sl/products
- - google.com.sv/products
- - google.com.tj/products
- - google.com.tn/products
- - google.com.tr/products
- - google.com.tw/products
- - google.com.ua/products
- - google.com.uy/products
- - google.com.vc/products
- - google.com.vn/products
- - google.cv/products
- - google.cz/products
- - google.de/products
- - google.dj/products
- - google.dk/products
- - google.dm/products
- - google.dz/products
- - google.ee/products
- - google.es/products
- - google.fi/products
- - google.fm/products
- - google.fr/products
- - google.ga/products
- - google.gd/products
- - google.ge/products
- - google.gf/products
- - google.gg/products
- - google.gl/products
- - google.gm/products
- - google.gp/products
- - google.gr/products
- - google.gy/products
- - google.hn/products
- - google.hr/products
- - google.ht/products
- - google.hu/products
- - google.ie/products
- - google.im/products
- - google.io/products
- - google.iq/products
- - google.is/products
- - google.it/products
- - google.it.ao/products
- - google.je/products
- - google.jo/products
- - google.kg/products
- - google.ki/products
- - google.kz/products
- - google.la/products
- - google.li/products
- - google.lk/products
- - google.lt/products
- - google.lu/products
- - google.lv/products
- - google.md/products
- - google.me/products
- - google.mg/products
- - google.mk/products
- - google.ml/products
- - google.mn/products
- - google.ms/products
- - google.mu/products
- - google.mv/products
- - google.mw/products
- - google.ne/products
- - google.nl/products
- - google.no/products
- - google.nr/products
- - google.nu/products
- - google.pl/products
- - google.pn/products
- - google.ps/products
- - google.pt/products
- - google.ro/products
- - google.rs/products
- - google.ru/products
- - google.rw/products
- - google.sc/products
- - google.se/products
- - google.sh/products
- - google.si/products
- - google.sk/products
- - google.sm/products
- - google.sn/products
- - google.so/products
- - google.st/products
- - google.td/products
- - google.tg/products
- - google.tk/products
- - google.tl/products
- - google.tm/products
- - google.to/products
- - google.tt/products
- - google.us/products
- - google.vg/products
- - google.vu/products
- - google.ws/products
- - www.google.ac/products
- - www.google.ad/products
- - www.google.ae/products
- - www.google.am/products
- - www.google.as/products
- - www.google.at/products
- - www.google.az/products
- - www.google.ba/products
- - www.google.be/products
- - www.google.bf/products
- - www.google.bg/products
- - www.google.bi/products
- - www.google.bj/products
- - www.google.bs/products
- - www.google.by/products
- - www.google.ca/products
- - www.google.cat/products
- - www.google.cc/products
- - www.google.cd/products
- - www.google.cf/products
- - www.google.cg/products
- - www.google.ch/products
- - www.google.ci/products
- - www.google.cl/products
- - www.google.cm/products
- - www.google.cn/products
- - www.google.co.bw/products
- - www.google.co.ck/products
- - www.google.co.cr/products
- - www.google.co.id/products
- - www.google.co.il/products
- - www.google.co.in/products
- - www.google.co.jp/products
- - www.google.co.ke/products
- - www.google.co.kr/products
- - www.google.co.ls/products
- - www.google.co.ma/products
- - www.google.co.mz/products
- - www.google.co.nz/products
- - www.google.co.th/products
- - www.google.co.tz/products
- - www.google.co.ug/products
- - www.google.co.uk/products
- - www.google.co.uz/products
- - www.google.co.ve/products
- - www.google.co.vi/products
- - www.google.co.za/products
- - www.google.co.zm/products
- - www.google.co.zw/products
- - www.google.com/products
- - www.google.com.af/products
- - www.google.com.ag/products
- - www.google.com.ai/products
- - www.google.com.ar/products
- - www.google.com.au/products
- - www.google.com.bd/products
- - www.google.com.bh/products
- - www.google.com.bn/products
- - www.google.com.bo/products
- - www.google.com.br/products
- - www.google.com.by/products
- - www.google.com.bz/products
- - www.google.com.co/products
- - www.google.com.cu/products
- - www.google.com.cy/products
- - www.google.com.do/products
- - www.google.com.ec/products
- - www.google.com.eg/products
- - www.google.com.et/products
- - www.google.com.fj/products
- - www.google.com.gh/products
- - www.google.com.gi/products
- - www.google.com.gt/products
- - www.google.com.hk/products
- - www.google.com.jm/products
- - www.google.com.kh/products
- - www.google.com.kh/products
- - www.google.com.kw/products
- - www.google.com.lb/products
- - www.google.com.lc/products
- - www.google.com.ly/products
- - www.google.com.mt/products
- - www.google.com.mx/products
- - www.google.com.my/products
- - www.google.com.na/products
- - www.google.com.nf/products
- - www.google.com.ng/products
- - www.google.com.ni/products
- - www.google.com.np/products
- - www.google.com.om/products
- - www.google.com.pa/products
- - www.google.com.pe/products
- - www.google.com.ph/products
- - www.google.com.pk/products
- - www.google.com.pr/products
- - www.google.com.py/products
- - www.google.com.qa/products
- - www.google.com.sa/products
- - www.google.com.sb/products
- - www.google.com.sg/products
- - www.google.com.sl/products
- - www.google.com.sv/products
- - www.google.com.tj/products
- - www.google.com.tn/products
- - www.google.com.tr/products
- - www.google.com.tw/products
- - www.google.com.ua/products
- - www.google.com.uy/products
- - www.google.com.vc/products
- - www.google.com.vn/products
- - www.google.cv/products
- - www.google.cz/products
- - www.google.de/products
- - www.google.dj/products
- - www.google.dk/products
- - www.google.dm/products
- - www.google.dz/products
- - www.google.ee/products
- - www.google.es/products
- - www.google.fi/products
- - www.google.fm/products
- - www.google.fr/products
- - www.google.ga/products
- - www.google.gd/products
- - www.google.ge/products
- - www.google.gf/products
- - www.google.gg/products
- - www.google.gl/products
- - www.google.gm/products
- - www.google.gp/products
- - www.google.gr/products
- - www.google.gy/products
- - www.google.hn/products
- - www.google.hr/products
- - www.google.ht/products
- - www.google.hu/products
- - www.google.ie/products
- - www.google.im/products
- - www.google.io/products
- - www.google.iq/products
- - www.google.is/products
- - www.google.it/products
- - www.google.it.ao/products
- - www.google.je/products
- - www.google.jo/products
- - www.google.kg/products
- - www.google.ki/products
- - www.google.kz/products
- - www.google.la/products
- - www.google.li/products
- - www.google.lk/products
- - www.google.lt/products
- - www.google.lu/products
- - www.google.lv/products
- - www.google.md/products
- - www.google.me/products
- - www.google.mg/products
- - www.google.mk/products
- - www.google.ml/products
- - www.google.mn/products
- - www.google.ms/products
- - www.google.mu/products
- - www.google.mv/products
- - www.google.mw/products
- - www.google.ne/products
- - www.google.nl/products
- - www.google.no/products
- - www.google.nr/products
- - www.google.nu/products
- - www.google.pl/products
- - www.google.pn/products
- - www.google.ps/products
- - www.google.pt/products
- - www.google.ro/products
- - www.google.rs/products
- - www.google.ru/products
- - www.google.rw/products
- - www.google.sc/products
- - www.google.se/products
- - www.google.sh/products
- - www.google.si/products
- - www.google.sk/products
- - www.google.sm/products
- - www.google.sn/products
- - www.google.so/products
- - www.google.st/products
- - www.google.td/products
- - www.google.tg/products
- - www.google.tk/products
- - www.google.tl/products
- - www.google.tm/products
- - www.google.to/products
- - www.google.tt/products
- - www.google.us/products
- - www.google.vg/products
- - www.google.vu/products
- - www.google.ws/products
-
- Google Video:
- parameters:
- - q
- domains:
- - video.google.com
-
- Goyellow.de:
- parameters:
- - MDN
- domains:
- - www.goyellow.de
-
- Gule Sider:
- parameters:
- - q
- domains:
- - www.gulesider.no
-
- HighBeam:
- parameters:
- - q
- domains:
- - www.highbeam.com
-
- Hit-Parade:
- parameters:
- - p7
- domains:
- - req.-hit-parade.com
- - class.hit-parade.com
- - www.hit-parade.com
-
- Holmes:
- parameters:
- - q
- domains:
- - holmes.ge
-
- Hooseek.com:
- parameters:
- - recherche
- domains:
- - www.hooseek.com
-
- Hotbot:
- parameters:
- - query
- domains:
- - www.hotbot.com
-
- Icerockeet:
- parameters:
- - q
- domains:
- - blogs.icerocket.com
-
- ICQ:
- parameters:
- - q
- domains:
- - www.icq.com
- - search.icq.com
-
- Ilse:
- parameters:
- - search_for
- domains:
- - www.ilse.nl
-
- InfoSpace:
- parameters:
- - q
- - s
- domains:
- - infospace.com
- - dogpile.com
- - www.dogpile.com
- - metacrawler.com
- - webfetch.com
- - webcrawler.com
- - search.kiwee.com
- # powered by InfoSpace
- - isearch.babylon.com
- - start.facemoods.com
- - search.magnetic.com
- - search.searchcompletion.com
- - clusty.com
-
- Interia:
- parameters:
- - q
- domains:
- - www.google.interia.pl
-
- I-play:
- parameters:
- - q
- domains:
- - start.iplay.com
-
- IXquick:
- parameters:
- - query
- domains:
- - ixquick.com
- - www.eu.ixquick.com
- - ixquick.de
- - www.ixquick.de
- - us.ixquick.com
- - s1.us.ixquick.com
- - s2.us.ixquick.com
- - s3.us.ixquick.com
- - s4.us.ixquick.com
- - s5.us.ixquick.com
- - eu.ixquick.com
- - s8-eu.ixquick.com
- - s1-eu.ixquick.de
-
- Jyxo:
- parameters:
- - q
- domains:
- - jyxo.1188.cz
-
- Jungle Spider:
- parameters:
- - q
- domains:
- - www.jungle-spider.de
-
- Jungle Key:
- parameters:
- - query
- domains:
- - junglekey.com
- - junglekey.fr
-
- Kataweb:
- parameters:
- - q
- domains:
- - www.kataweb.it
-
- Kvasir:
- parameters:
- - q
- domains:
- - www.kvasir.no
-
- Latne:
- parameters:
- - q
- domains:
- - www.latne.lv
-
- La Toile Du Quebec Via Google:
- parameters:
- - q
- domains:
- - www.toile.com
- - web.toile.com
-
- Looksmart:
- parameters:
- - key
- domains:
- - www.looksmart.com
-
- Lo.st:
- parameters:
- - x_query
- domains:
- - lo.st
-
- Lycos:
- parameters:
- - query
- domains:
- - search.lycos.com
- - www.lycos.com
- - lycos.com
-
- maailm:
- parameters:
- - tekst
- domains:
- - www.maailm.com
-
- Mail.ru:
- parameters:
- - q
- domains:
- - go.mail.ru
-
- Mamma:
- parameters:
- - query
- domains:
- - www.mamma.com
- - mamma75.mamma.com
-
- Marktplaats:
- parameters:
- - query
- domains:
- - www.marktplaats.nl
-
- Maxwebsearch:
- parameters:
- - query
- domains:
- - maxwebsearch.com
-
- Meta:
- parameters:
- - q
- domains:
- - meta.ua
-
- MetaCrawler.de:
- parameters:
- - qry
- domains:
- - s1.metacrawler.de
- - s2.metacrawler.de
- - s3.metacrawler.de
-
- Metager:
- parameters:
- - eingabe
- domains:
- - meta.rrzn.uni-hannover.de
- - www.metager.de
-
- Metager2:
- parameters:
- - q
- domains:
- - metager2.de
-
- Meinestadt:
- parameters:
- - words
- domains:
- - www.meinestadt.de
-
- Mister Wong:
- parameters:
- - Keywords
- domains:
- - www.mister-wong.com
- - www.mister-wong.de
-
- Monstercrawler:
- parameters:
- - qry
- domains:
- - www.monstercrawler.com
-
- Mozbot:
- parameters:
- - q
- domains:
- - www.mozbot.fr
- - www.mozbot.co.uk
- - www.mozbot.com
-
- El Mundo:
- parameters:
- - q
- domains:
- - ariadna.elmundo.es
-
- MySearch:
- parameters:
- - searchfor
- - searchFor
- domains:
- - www.mysearch.com
- - ms114.mysearch.com
- - ms146.mysearch.com
- - kf.mysearch.myway.com
- - ki.mysearch.myway.com
- - search.myway.com
- - search.mywebsearch.com
-
- Najdi:
- parameters:
- - q
- domains:
- - www.najdi.si
-
- Nate:
- parameters:
- - q
- domains:
- - search.nate.com
-
- Naver:
- parameters:
- - query
- domains:
- - search.naver.com
-
- Naver Images:
- parameters:
- - query
- domains:
- - image.search.naver.com
- - imagesearch.naver.com
-
- Needtofind:
- parameters:
- - searchfor
- domains:
- - ko.search.need2find.com
-
- Neti:
- parameters:
- - query
- domains:
- - www.neti.ee
-
- Nifty:
- parameters:
- - q
- domains:
- - search.nifty.com
-
- Nigma:
- parameters:
- - s
- domains:
- - nigma.ru
-
- Onet:
- parameters:
- - qt
- domains:
- - szukaj.onet.pl
-
- Online.no:
- parameters:
- - q
- domains:
- - online.no
-
- Opplysningen 1881:
- parameters:
- - Query
- domains:
- - www.1881.no
-
- Orange:
- parameters:
- - q
- domains:
- - busca.orange.es
- - search.orange.co.uk
-
- Paperball:
- parameters:
- - q
- domains:
- - www.paperball.de
-
- PeoplePC:
- parameters:
- - q
- domains:
- - search.peoplepc.com
-
- Picsearch:
- parameters:
- - q
- domains:
- - www.picsearch.com
-
- Plazoo:
- parameters:
- - q
- domains:
- - www.plazoo.com
-
- Poisk.ru:
- parameters:
- - q
- domains:
- - www.plazoo.com
-
- PriceRunner:
- parameters:
- - q
- domains:
- - www.pricerunner.co.uk
-
- qip:
- parameters:
- - query
- domains:
- - search.qip.ru
-
- Qualigo:
- parameters:
- - q
- domains:
- - www.qualigo.at
- - www.qualigo.ch
- - www.qualigo.de
- - www.qualigo.nl
-
- Rakuten:
- parameters:
- - qt
- domains:
- - websearch.rakuten.co.jp
-
- Rambler:
- parameters:
- - query
- - words
- domains:
- - nova.rambler.ru
-
- RPMFind:
- parameters:
- - query
- domains:
- - rpmfind.net
- - fr2.rpmfind.net
-
- Road Runner Search:
- parameters:
- - q
- domains:
- - search.rr.com
-
- Sapo:
- parameters:
- - q
- domains:
- - pesquisa.sapo.pt
-
- # Add Scour.com
-
- Search.com:
- parameters:
- - q
- domains:
- - www.search.com
-
- Search.ch:
- parameters:
- - q
- domains:
- - www.search.ch
-
- Searchalot:
- parameters:
- - q
- domains:
- - searchalot.com
-
- SearchCanvas:
- parameters:
- - q
- domains:
- - www.searchcanvas.com
-
- Searchy:
- parameters:
- - q
- domains:
- - www.searchy.co.uk
-
- # Add setooz.com
-
- Seznam:
- parameters:
- - q
- domains:
- - search.seznam.cz
-
- Sharelook:
- parameters:
- - keyword
- domains:
- - www.sharelook.fr
-
- Skynet:
- parameters:
- - q
- domains:
- - www.skynet.be
-
- Sogou:
- parameters:
- - query
- domains:
- - www.sougou.com
-
- Softonic:
- parameters:
- - q
- domains:
- - search.softonic.com
-
- soso.com:
- parameters:
- - w
- domains:
- - www.soso.com
-
- Snapdo:
- parameters:
- - q
- domains:
- - search.snapdo.com
-
- Startpagina:
- parameters:
- - q
- domains:
- - startgoogle.startpagina.nl
-
- Startsiden:
- parameters:
- - q
- domains:
- - www.startsiden.no
-
- suche.info:
- parameters:
- - q
- domains:
- - suche.info
-
- Suchmaschine.com:
- parameters:
- - suchstr
- domains:
- - www.suchmaschine.com
-
- Suchnase:
- parameters:
- - q
- domains:
- - www.suchnase.de
-
- TalkTalk:
- parameters:
- - query
- domains:
- - www.talktalk.co.uk
-
- Technorati:
- parameters:
- - q
- domains:
- - technorati.com
-
- Teoma:
- parameters:
- - q
- domains:
- - www.teoma.com
-
- Terra:
- parameters:
- - query
- domains:
- - buscador.terra.es
- - buscador.terra.cl
- - buscador.terra.com.br
-
- Tiscali:
- parameters:
- - q
- - key
- domains:
- - search.tiscali.it
- - search-dyn.tiscali.it
- - hledani.tiscali.cz
-
- Tixuma:
- parameters:
- - sc
- domains:
- - www.tixuma.de
-
- T-Online:
- parameters:
- - q
- domains:
- - suche.t-online.de
- - brisbane.t-online.de
- - navigationshilfe.t-online.de
-
- Toolbarhome:
- parameters:
- - q
- domains:
- - www.toolbarhome.com
- - vshare.toolbarhome.com
-
- Trouvez.com:
- parameters:
- - query
- domains:
- - www.trouvez.com
-
- TrovaRapido:
- parameters:
- - q
- domains:
- - www.trovarapido.com
-
- Trusted-Search:
- parameters:
- - w
- domains:
- - www.trusted--search.com
-
- Twingly:
- parameters:
- - q
- domains:
- - www.twingly.com
-
- uol.com.br:
- parameters:
- - q
- domains:
- - busca.uol.com.br
-
- URL.ORGanizier:
- parameters:
- - q
- domains:
- - www.url.org
-
- Vinden:
- parameters:
- - q
- domains:
- - www.vinden.nl
-
- Vindex:
- parameters:
- - search_for
- domains:
- - www.vindex.nl
- - search.vindex.nl
-
- Virgilio:
- parameters:
- - qs
- domains:
- - ricerca.virgilio.it
- - ricercaimmagini.virgilio.it
- - ricercavideo.virgilio.it
- - ricercanews.virgilio.it
- - mobile.virgilio.it
-
- Voila:
- parameters:
- - rdata
- - kw
- domains:
- - search.ke.voila.fr
- - www.lemoteur.fr
-
- Volny:
- parameters:
- - search
- domains:
- - web.volny.cz
-
- Walhello :
- parameters:
- - key
- domains:
- - www.walhello.info
- - www.walhello.com
- - www.walhello.de
- - www.walhello.nl
-
- Web.de:
- parameters:
- - su
- domains:
- - suche.web.de
-
- Web.nl:
- parameters:
- - zoekwoord
- domains:
- - www.web.nl
-
- Weborama:
- parameters:
- - QUERY
- domains:
- - www.weborama.com
-
- WebSearch:
- parameters:
- - qkw
- - q
- domains:
- - www.websearch.com
-
- Winamp:
- parameters:
- - q
- domains:
- - search.winamp.com
-
- Witch:
- parameters:
- - search
- domains:
- - www.witch.de
-
- Wirtualna Polska:
- parameters:
- - szukaj
- domains:
- - szukaj.wp.pl
-
- WWW:
- parameters:
- - query
- domains:
- - search.www.ee
-
- X-recherche:
- parameters:
- - MOTS
- domains:
- - www.x-recherche.com
-
- Yahoo!:
- parameters:
- - p
- - q
- domains:
- - search.yahoo.com
- - yahoo.com
- - ar.search.yahoo.com
- - ar.yahoo.com
- - au.search.yahoo.com
- - au.yahoo.com
- - br.search.yahoo.com
- - br.yahoo.com
- - cade.searchde.yahoo.com
- - cade.yahoo.com
- - chinese.searchinese.yahoo.com
- - chinese.yahoo.com
- - cn.search.yahoo.com
- - cn.yahoo.com
- - de.search.yahoo.com
- - de.yahoo.com
- - dk.search.yahoo.com
- - dk.yahoo.com
- - es.search.yahoo.com
- - es.yahoo.com
- - espanol.searchpanol.yahoo.com
- - espanol.searchpanol.yahoo.com
- - espanol.yahoo.com
- - espanol.yahoo.com
- - fr.search.yahoo.com
- - fr.yahoo.com
- - ie.search.yahoo.com
- - ie.yahoo.com
- - it.search.yahoo.com
- - it.yahoo.com
- - kr.search.yahoo.com
- - kr.yahoo.com
- - mx.search.yahoo.com
- - mx.yahoo.com
- - no.search.yahoo.com
- - no.yahoo.com
- - nz.search.yahoo.com
- - nz.yahoo.com
- - one.cn.yahoo.com
- - one.searchn.yahoo.com
- - qc.search.yahoo.com
- - qc.search.yahoo.com
- - qc.search.yahoo.com
- - qc.yahoo.com
- - qc.yahoo.com
- - se.search.yahoo.com
- - se.search.yahoo.com
- - se.yahoo.com
- - search.searcharch.yahoo.com
- - search.yahoo.com
- - uk.search.yahoo.com
- - uk.yahoo.com
- - www.yahoo.co.jp
- - search.yahoo.co.jp
- # powered by Yahoo
- - www.cercato.it
- - search.offerbox.com
- - ys.mirostart.com
-
- Yahoo! Images:
- parameters:
- - p
- - q
- domains:
- - image.yahoo.cn
- - images.search.yahoo.com
-
- Yam:
- parameters:
- - k
- domains:
- - search.yam.com
-
- Yandex:
- parameters:
- - text
- domains:
- - yandex.ru
- - yandex.ua
- - yandex.com
- - yandex.by
- - www.yandex.ru
- - www.yandex.ua
- - www.yandex.com
- - www.yandex.by
-
- Yandex Images:
- parameters:
- - text
- domains:
- - images.yandex.ru
- - images.yandex.ua
- - images.yandex.com
-
- Yasni:
- parameters:
- - query
- domains:
- - www.yasni.de
- - www.yasni.com
- - www.yasni.co.uk
- - www.yasni.ch
- - www.yasni.at
-
- Yatedo:
- parameters:
- - q
- domains:
- - www.yatedo.com
- - www.yatedo.fr
-
- # Add Yellowmap:
-
- Yippy:
- parameters:
- - q
- - query
- domains:
- - search.yippy.com
-
- YouGoo:
- parameters:
- - q
- domains:
- - www.yougoo.fr
-
- Zapmeta:
- parameters:
- - q
- - query
- domains:
- - www.zapmeta.com
- - www.zapmeta.nl
- - www.zapmeta.de
- - uk.zapmeta.com
-
- Zoek:
- parameters:
- - q
- domains:
- - www3.zoek.nl
-
- Zhongsou:
- parameters:
- - w
- domains:
- - p.zhongsou.com
-
- Zoeken:
- parameters:
- - q
- domains:
- - www.zoeken.nl
-
- Zoohoo:
- parameters:
- - q
- domains:
- - zoohoo.cz
diff --git a/vendor/snowplow/referer-parser/php/phpunit.xml.dist b/vendor/snowplow/referer-parser/php/phpunit.xml.dist
deleted file mode 100644
index 58ffc6756..000000000
--- a/vendor/snowplow/referer-parser/php/phpunit.xml.dist
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
- ./tests
-
-
-
-
-
-
-
-
-
-
-
- vendor/
- tests/
-
-
-
-
-
-
-
diff --git a/vendor/snowplow/referer-parser/php/src/Snowplow/RefererParser/Config/ConfigFileReaderTrait.php b/vendor/snowplow/referer-parser/php/src/Snowplow/RefererParser/Config/ConfigFileReaderTrait.php
deleted file mode 100644
index c774ebf0a..000000000
--- a/vendor/snowplow/referer-parser/php/src/Snowplow/RefererParser/Config/ConfigFileReaderTrait.php
+++ /dev/null
@@ -1,72 +0,0 @@
-fileName = $fileName;
-
- $this->read();
- }
-
- abstract protected function parse($content);
-
- private function read()
- {
- if ($this->referers) {
- return;
- }
-
- $hash = $this->parse(file_get_contents($this->fileName));
-
- foreach ($hash as $medium => $referers) {
- foreach ($referers as $source => $referer) {
- foreach ($referer['domains'] as $domain) {
- $parameters = isset($referer['parameters']) ? $referer['parameters'] : [];
- $this->addReferer($domain, $source, $medium, $parameters);
- }
- }
- }
- }
-
- /**
- * Add referer
- *
- * @param string $domain
- * @param string $source
- * @param string $medium
- * @param array $parameters
- */
- public function addReferer($domain, $source, $medium, array $parameters = [])
- {
- $this->referers[$domain] = [
- 'source' => $source,
- 'medium' => $medium,
- 'parameters' => $parameters,
- ];
- }
-
- /**
- * Lookup host
- *
- * @param string $lookupString
- * @return array|null
- */
- public function lookup($lookupString)
- {
- return isset($this->referers[$lookupString]) ? $this->referers[$lookupString] : null;
- }
-}
diff --git a/vendor/snowplow/referer-parser/php/src/Snowplow/RefererParser/Config/ConfigReaderInterface.php b/vendor/snowplow/referer-parser/php/src/Snowplow/RefererParser/Config/ConfigReaderInterface.php
deleted file mode 100644
index f30d5d3fa..000000000
--- a/vendor/snowplow/referer-parser/php/src/Snowplow/RefererParser/Config/ConfigReaderInterface.php
+++ /dev/null
@@ -1,11 +0,0 @@
-configReader = $configReader ?: static::createDefaultConfigReader();
- $this->internalHosts = $internalHosts;
- }
-
- /**
- * Parse referer URL
- *
- * @param string $refererUrl
- * @param string $pageUrl
- * @return Referer
- */
- public function parse($refererUrl, $pageUrl = null)
- {
- $refererParts = static::parseUrl($refererUrl);
- if (!$refererParts) {
- return Referer::createInvalid();
- }
-
- $pageUrlParts = static::parseUrl($pageUrl);
-
- if ($pageUrlParts
- && $pageUrlParts['host'] === $refererParts['host']
- || in_array($refererParts['host'], $this->internalHosts)) {
- return Referer::createInternal();
- }
-
- $referer = $this->lookup($refererParts['host'], $refererParts['path']);
-
- if (!$referer) {
- return Referer::createUnknown();
- }
-
- $searchTerm = null;
- if ($referer['parameters']) {
- parse_str($refererParts['query'], $queryParts);
- foreach ($referer['parameters'] as $parameter) {
- $searchTerm = isset($queryParts[$parameter]) ? $queryParts[$parameter] : $searchTerm;
- }
- }
-
- return Referer::createKnown($referer['medium'], $referer['source'], $searchTerm);
- }
-
- private static function parseUrl($url)
- {
- if ($url === null) {
- return null;
- }
-
- $parts = parse_url($url);
- if (!isset($parts['scheme']) || !in_array(strtolower($parts['scheme']), ['http', 'https'])) {
- return null;
- }
-
- return array_merge(['query' => null, 'path' => '/'], $parts);
- }
-
- private function lookup($host, $path)
- {
- $referer = $this->lookupPath($host, $path);
-
- if ($referer) {
- return $referer;
- }
-
- return $this->lookupHost($host);
- }
-
- private function lookupPath($host, $path)
- {
- $referer = $this->lookupHost($host, $path);
-
- if ($referer) {
- return $referer;
- }
-
- $path = substr($path, 0, strrpos($path, '/'));
-
- if (!$path) {
- return null;
- }
-
- return $this->lookupPath($host, $path);
- }
-
- private function lookupHost($host, $path = null)
- {
- do {
- $referer = $this->configReader->lookup($host . $path);
- $host = substr($host, strpos($host, '.') + 1);
- } while (!$referer && substr_count($host, '.') > 0);
-
- return $referer;
- }
-
- private static function createDefaultConfigReader()
- {
- return new JsonConfigReader(__DIR__ . '/../../../data/referers.json');
- }
-}
diff --git a/vendor/snowplow/referer-parser/php/src/Snowplow/RefererParser/Referer.php b/vendor/snowplow/referer-parser/php/src/Snowplow/RefererParser/Referer.php
deleted file mode 100644
index 5be4f5c40..000000000
--- a/vendor/snowplow/referer-parser/php/src/Snowplow/RefererParser/Referer.php
+++ /dev/null
@@ -1,79 +0,0 @@
-medium = $medium;
- $referer->source = $source;
- $referer->searchTerm = $searchTerm;
-
- return $referer;
- }
-
- public static function createUnknown()
- {
- $referer = new self();
- $referer->medium = Medium::UNKNOWN;
-
- return $referer;
- }
-
- public static function createInternal()
- {
- $referer = new self();
- $referer->medium = Medium::INTERNAL;
-
- return $referer;
- }
-
- public static function createInvalid()
- {
- $referer = new self();
- $referer->medium = Medium::INVALID;
-
- return $referer;
- }
-
- /** @return boolean */
- public function isValid()
- {
- return $this->medium !== Medium::INVALID;
- }
-
- /** @return boolean */
- public function isKnown()
- {
- return !in_array($this->medium, [Medium::UNKNOWN, Medium::INTERNAL, Medium::INVALID], true);
- }
-
- /** @return string */
- public function getMedium()
- {
- return $this->medium;
- }
-
- public function getSource()
- {
- return $this->source;
- }
-
- public function getSearchTerm()
- {
- return $this->searchTerm;
- }
-}
diff --git a/vendor/snowplow/referer-parser/php/tests/Snowplow/RefererParser/Tests/AbstractParserTest.php b/vendor/snowplow/referer-parser/php/tests/Snowplow/RefererParser/Tests/AbstractParserTest.php
deleted file mode 100644
index 4ca8c1033..000000000
--- a/vendor/snowplow/referer-parser/php/tests/Snowplow/RefererParser/Tests/AbstractParserTest.php
+++ /dev/null
@@ -1,72 +0,0 @@
-parser = $this->createParser(['www.subdomain1.snowplowanalytics.com', 'www.subdomain2.snowplowanalytics.com']);
- }
-
- /**
- * @param string[] $internalHosts
- * @return Parser
- */
- abstract protected function createParser(array $internalHosts = []);
-
- public static function getTestData()
- {
- $data = json_decode(file_get_contents(__DIR__ . '/referer-tests.json'), true);
-
- $arguments = [];
- foreach ($data as $case) {
- $arguments[] = array_values($case);
- }
-
- return $arguments;
- }
-
- /** @dataProvider getTestData */
- public function testRefererParsing($_, $refererUrl, $medium, $source, $searchTerm, $isKnown)
- {
- $referer = $this->parser->parse($refererUrl, 'http://www.snowplowanalytics.com/');
-
- $this->assertTrue($referer->isValid());
- $this->assertSame($isKnown, $referer->isKnown());
- $this->assertSame($source, $referer->getSource());
- $this->assertSame($medium, $referer->getMedium());
- $this->assertSame($searchTerm, $referer->getSearchTerm());
- }
-
- public static function getErrorData()
- {
- return [
- ['ftp://google.com', null],
- [null, null],
- ['invalidString', 'http://google.de'],
- ];
- }
-
- /** @dataProvider getErrordata */
- public function testHandleErrors($refererUrl, $internalUrl)
- {
- $referer = $this->parser->parse($refererUrl, $internalUrl);
- $this->assertFalse($referer->isValid());
- $this->assertFalse($referer->isKnown());
- }
-
- public function testCustomInternalHosts()
- {
- $parser = $this->createParser(['google.com']);
-
- $this->assertSame(Medium::INTERNAL, $parser->parse('http://google.com')->getMedium());
- $this->assertSame(Medium::SEARCH, $this->parser->parse('http://google.com')->getMedium());
- }
-}
diff --git a/vendor/snowplow/referer-parser/php/tests/Snowplow/RefererParser/Tests/Config/AbstractConfigReaderTest.php b/vendor/snowplow/referer-parser/php/tests/Snowplow/RefererParser/Tests/Config/AbstractConfigReaderTest.php
deleted file mode 100644
index 20d6c1843..000000000
--- a/vendor/snowplow/referer-parser/php/tests/Snowplow/RefererParser/Tests/Config/AbstractConfigReaderTest.php
+++ /dev/null
@@ -1,40 +0,0 @@
-setExpectedException(
- 'Snowplow\RefererParser\Exception\InvalidArgumentException',
- 'File "INVALIDFILE" does not exist'
- );
- $this->createConfigReader('INVALIDFILE');
- }
-
- public function testAddReferer()
- {
- $reader = $this->createConfigReaderFromFile();
- $this->assertNull($reader->addReferer("intra.example.com", "Custom search", "search", ['searchq']));
-
- $res = $reader->lookup("intra.example.com");
- $this->assertArrayHasKey('source', $res);
- $this->assertArrayHasKey('medium', $res);
- $this->assertNotEmpty('parameters', $res);
-
- $this->assertNull($reader->lookup("nosearch.example.com"));
- }
-
- public function testErrorOnAddingWrongReferer()
- {
- $reader = $this->createConfigReaderFromFile();
- $this->setExpectedException('Exception');
- $this->assertNull($reader->addReferer("intra.example.com", "Custom search", "search", 'noarray'));
- }
-}
diff --git a/vendor/snowplow/referer-parser/php/tests/Snowplow/RefererParser/Tests/Config/JsonConfigReaderTest.php b/vendor/snowplow/referer-parser/php/tests/Snowplow/RefererParser/Tests/Config/JsonConfigReaderTest.php
deleted file mode 100644
index cd52fc248..000000000
--- a/vendor/snowplow/referer-parser/php/tests/Snowplow/RefererParser/Tests/Config/JsonConfigReaderTest.php
+++ /dev/null
@@ -1,17 +0,0 @@
-createConfigReader(__DIR__ . '/../../../../../data/referers.json');
- }
-}
diff --git a/vendor/snowplow/referer-parser/php/tests/Snowplow/RefererParser/Tests/Config/YamlConfigReaderTest.php b/vendor/snowplow/referer-parser/php/tests/Snowplow/RefererParser/Tests/Config/YamlConfigReaderTest.php
deleted file mode 100644
index 56a84097a..000000000
--- a/vendor/snowplow/referer-parser/php/tests/Snowplow/RefererParser/Tests/Config/YamlConfigReaderTest.php
+++ /dev/null
@@ -1,17 +0,0 @@
-createConfigReader(__DIR__ . '/../../../../../data/referers.yml');
- }
-}
diff --git a/vendor/snowplow/referer-parser/php/tests/Snowplow/RefererParser/Tests/DefaultParserTest.php b/vendor/snowplow/referer-parser/php/tests/Snowplow/RefererParser/Tests/DefaultParserTest.php
deleted file mode 100644
index 95ab5275c..000000000
--- a/vendor/snowplow/referer-parser/php/tests/Snowplow/RefererParser/Tests/DefaultParserTest.php
+++ /dev/null
@@ -1,12 +0,0 @@
- 1:
- try:
- referer = self.referers[ref_host + '/' + path_parts[1]]
- except KeyError:
- pass
- if not referer:
- try:
- idx = ref_host.index('.')
- return self._lookup_referer(
- ref_host[idx + 1:],
- ref_path, include_path
- )
- except ValueError:
- return None
- else:
- return referer
diff --git a/vendor/snowplow/referer-parser/python/referer_parser/build_json.py b/vendor/snowplow/referer-parser/python/referer_parser/build_json.py
deleted file mode 100755
index 39ed18486..000000000
--- a/vendor/snowplow/referer-parser/python/referer_parser/build_json.py
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env python
-import json
-
-import yaml
-
-def build_json():
- searches = yaml.load(open('./data/referers.yml'))
- with open('./data/referers.json', 'w') as fp:
- json.dump(searches, fp)
-
-if __name__ == "__main__":
- build_json()
diff --git a/vendor/snowplow/referer-parser/python/referer_parser/data/referers.json b/vendor/snowplow/referer-parser/python/referer_parser/data/referers.json
deleted file mode 100644
index 460975ef2..000000000
--- a/vendor/snowplow/referer-parser/python/referer_parser/data/referers.json
+++ /dev/null
@@ -1,4090 +0,0 @@
-{
- "unknown": {
- "Outbrain": {
- "domains": [
- "paid.outbrain.com"
- ]
- },
- "Google": {
- "domains": [
- "support.google.com",
- "developers.google.com",
- "maps.google.com",
- "accounts.google.com",
- "drive.google.com",
- "sites.google.com",
- "groups.google.com",
- "groups.google.co.uk",
- "news.google.co.uk"
- ]
- },
- "Taboola": {
- "domains": [
- "trc.taboola.com",
- "api.taboola.com"
- ]
- },
- "Yahoo!": {
- "domains": [
- "finance.yahoo.com",
- "news.yahoo.com",
- "eurosport.yahoo.com",
- "sports.yahoo.com",
- "astrology.yahoo.com",
- "travel.yahoo.com",
- "answers.yahoo.com",
- "screen.yahoo.com",
- "weather.yahoo.com",
- "messenger.yahoo.com",
- "games.yahoo.com",
- "shopping.yahoo.net",
- "movies.yahoo.com",
- "cars.yahoo.com",
- "lifestyle.yahoo.com",
- "omg.yahoo.com",
- "match.yahoo.net"
- ]
- }
- },
- "search": {
- "TalkTalk": {
- "domains": [
- "www.talktalk.co.uk"
- ],
- "parameters": [
- "query"
- ]
- },
- "1.cz": {
- "domains": [
- "1.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Softonic": {
- "domains": [
- "search.softonic.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "GAIS": {
- "domains": [
- "gais.cs.ccu.edu.tw"
- ],
- "parameters": [
- "q"
- ]
- },
- "Freecause": {
- "domains": [
- "search.freecause.com"
- ],
- "parameters": [
- "p"
- ]
- },
- "360.cn": {
- "domains": [
- "so.360.cn",
- "www.so.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "RPMFind": {
- "domains": [
- "rpmfind.net",
- "fr2.rpmfind.net"
- ],
- "parameters": [
- "query"
- ]
- },
- "Comcast": {
- "domains": [
- "serach.comcast.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Voila": {
- "domains": [
- "search.ke.voila.fr",
- "www.lemoteur.fr"
- ],
- "parameters": [
- "rdata",
- "kw"
- ]
- },
- "Nifty": {
- "domains": [
- "search.nifty.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Atlas": {
- "domains": [
- "searchatlas.centrum.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Lo.st": {
- "domains": [
- "lo.st"
- ],
- "parameters": [
- "x_query"
- ]
- },
- "DasTelefonbuch": {
- "domains": [
- "www1.dastelefonbuch.de"
- ],
- "parameters": [
- "kw"
- ]
- },
- "Fireball": {
- "domains": [
- "www.fireball.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "1und1": {
- "domains": [
- "search.1und1.de"
- ],
- "parameters": [
- "su"
- ]
- },
- "Virgilio": {
- "domains": [
- "ricerca.virgilio.it",
- "ricercaimmagini.virgilio.it",
- "ricercavideo.virgilio.it",
- "ricercanews.virgilio.it",
- "mobile.virgilio.it"
- ],
- "parameters": [
- "qs"
- ]
- },
- "Web.nl": {
- "domains": [
- "www.web.nl"
- ],
- "parameters": [
- "zoekwoord"
- ]
- },
- "Plazoo": {
- "domains": [
- "www.plazoo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Goyellow.de": {
- "domains": [
- "www.goyellow.de"
- ],
- "parameters": [
- "MDN"
- ]
- },
- "AOL": {
- "domains": [
- "search.aol.com",
- "search.aol.it",
- "aolsearch.aol.com",
- "aolsearch.com",
- "www.aolrecherche.aol.fr",
- "www.aolrecherches.aol.fr",
- "www.aolimages.aol.fr",
- "aim.search.aol.com",
- "www.recherche.aol.fr",
- "find.web.aol.com",
- "recherche.aol.ca",
- "aolsearch.aol.co.uk",
- "search.aol.co.uk",
- "aolrecherche.aol.fr",
- "sucheaol.aol.de",
- "suche.aol.de",
- "suche.aolsvc.de",
- "aolbusqueda.aol.com.mx",
- "alicesuche.aol.de",
- "alicesuchet.aol.de",
- "suchet2.aol.de",
- "search.hp.my.aol.com.au",
- "search.hp.my.aol.de",
- "search.hp.my.aol.it",
- "search-intl.netscape.com"
- ],
- "parameters": [
- "q",
- "query"
- ]
- },
- "Acoon": {
- "domains": [
- "www.acoon.de"
- ],
- "parameters": [
- "begriff"
- ]
- },
- "Free": {
- "domains": [
- "search.free.fr",
- "search1-2.free.fr",
- "search1-1.free.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "Apollo Latvia": {
- "domains": [
- "apollo.lv/portal/search/"
- ],
- "parameters": [
- "q"
- ]
- },
- "HighBeam": {
- "domains": [
- "www.highbeam.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "I-play": {
- "domains": [
- "start.iplay.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "FriendFeed": {
- "domains": [
- "friendfeed.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yasni": {
- "domains": [
- "www.yasni.de",
- "www.yasni.com",
- "www.yasni.co.uk",
- "www.yasni.ch",
- "www.yasni.at"
- ],
- "parameters": [
- "query"
- ]
- },
- "Gigablast": {
- "domains": [
- "www.gigablast.com",
- "dir.gigablast.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "arama": {
- "domains": [
- "arama.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Fixsuche": {
- "domains": [
- "www.fixsuche.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Apontador": {
- "domains": [
- "apontador.com.br",
- "www.apontador.com.br"
- ],
- "parameters": [
- "q"
- ]
- },
- "Search.com": {
- "domains": [
- "www.search.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Monstercrawler": {
- "domains": [
- "www.monstercrawler.com"
- ],
- "parameters": [
- "qry"
- ]
- },
- "Google Images": {
- "domains": [
- "google.ac/imgres",
- "google.ad/imgres",
- "google.ae/imgres",
- "google.am/imgres",
- "google.as/imgres",
- "google.at/imgres",
- "google.az/imgres",
- "google.ba/imgres",
- "google.be/imgres",
- "google.bf/imgres",
- "google.bg/imgres",
- "google.bi/imgres",
- "google.bj/imgres",
- "google.bs/imgres",
- "google.by/imgres",
- "google.ca/imgres",
- "google.cat/imgres",
- "google.cc/imgres",
- "google.cd/imgres",
- "google.cf/imgres",
- "google.cg/imgres",
- "google.ch/imgres",
- "google.ci/imgres",
- "google.cl/imgres",
- "google.cm/imgres",
- "google.cn/imgres",
- "google.co.bw/imgres",
- "google.co.ck/imgres",
- "google.co.cr/imgres",
- "google.co.id/imgres",
- "google.co.il/imgres",
- "google.co.in/imgres",
- "google.co.jp/imgres",
- "google.co.ke/imgres",
- "google.co.kr/imgres",
- "google.co.ls/imgres",
- "google.co.ma/imgres",
- "google.co.mz/imgres",
- "google.co.nz/imgres",
- "google.co.th/imgres",
- "google.co.tz/imgres",
- "google.co.ug/imgres",
- "google.co.uk/imgres",
- "google.co.uz/imgres",
- "google.co.ve/imgres",
- "google.co.vi/imgres",
- "google.co.za/imgres",
- "google.co.zm/imgres",
- "google.co.zw/imgres",
- "google.com/imgres",
- "google.com.af/imgres",
- "google.com.ag/imgres",
- "google.com.ai/imgres",
- "google.com.ar/imgres",
- "google.com.au/imgres",
- "google.com.bd/imgres",
- "google.com.bh/imgres",
- "google.com.bn/imgres",
- "google.com.bo/imgres",
- "google.com.br/imgres",
- "google.com.by/imgres",
- "google.com.bz/imgres",
- "google.com.co/imgres",
- "google.com.cu/imgres",
- "google.com.cy/imgres",
- "google.com.do/imgres",
- "google.com.ec/imgres",
- "google.com.eg/imgres",
- "google.com.et/imgres",
- "google.com.fj/imgres",
- "google.com.gh/imgres",
- "google.com.gi/imgres",
- "google.com.gt/imgres",
- "google.com.hk/imgres",
- "google.com.jm/imgres",
- "google.com.kh/imgres",
- "google.com.kw/imgres",
- "google.com.lb/imgres",
- "google.com.lc/imgres",
- "google.com.ly/imgres",
- "google.com.mt/imgres",
- "google.com.mx/imgres",
- "google.com.my/imgres",
- "google.com.na/imgres",
- "google.com.nf/imgres",
- "google.com.ng/imgres",
- "google.com.ni/imgres",
- "google.com.np/imgres",
- "google.com.om/imgres",
- "google.com.pa/imgres",
- "google.com.pe/imgres",
- "google.com.ph/imgres",
- "google.com.pk/imgres",
- "google.com.pr/imgres",
- "google.com.py/imgres",
- "google.com.qa/imgres",
- "google.com.sa/imgres",
- "google.com.sb/imgres",
- "google.com.sg/imgres",
- "google.com.sl/imgres",
- "google.com.sv/imgres",
- "google.com.tj/imgres",
- "google.com.tn/imgres",
- "google.com.tr/imgres",
- "google.com.tw/imgres",
- "google.com.ua/imgres",
- "google.com.uy/imgres",
- "google.com.vc/imgres",
- "google.com.vn/imgres",
- "google.cv/imgres",
- "google.cz/imgres",
- "google.de/imgres",
- "google.dj/imgres",
- "google.dk/imgres",
- "google.dm/imgres",
- "google.dz/imgres",
- "google.ee/imgres",
- "google.es/imgres",
- "google.fi/imgres",
- "google.fm/imgres",
- "google.fr/imgres",
- "google.ga/imgres",
- "google.gd/imgres",
- "google.ge/imgres",
- "google.gf/imgres",
- "google.gg/imgres",
- "google.gl/imgres",
- "google.gm/imgres",
- "google.gp/imgres",
- "google.gr/imgres",
- "google.gy/imgres",
- "google.hn/imgres",
- "google.hr/imgres",
- "google.ht/imgres",
- "google.hu/imgres",
- "google.ie/imgres",
- "google.im/imgres",
- "google.io/imgres",
- "google.iq/imgres",
- "google.is/imgres",
- "google.it/imgres",
- "google.it.ao/imgres",
- "google.je/imgres",
- "google.jo/imgres",
- "google.kg/imgres",
- "google.ki/imgres",
- "google.kz/imgres",
- "google.la/imgres",
- "google.li/imgres",
- "google.lk/imgres",
- "google.lt/imgres",
- "google.lu/imgres",
- "google.lv/imgres",
- "google.md/imgres",
- "google.me/imgres",
- "google.mg/imgres",
- "google.mk/imgres",
- "google.ml/imgres",
- "google.mn/imgres",
- "google.ms/imgres",
- "google.mu/imgres",
- "google.mv/imgres",
- "google.mw/imgres",
- "google.ne/imgres",
- "google.nl/imgres",
- "google.no/imgres",
- "google.nr/imgres",
- "google.nu/imgres",
- "google.pl/imgres",
- "google.pn/imgres",
- "google.ps/imgres",
- "google.pt/imgres",
- "google.ro/imgres",
- "google.rs/imgres",
- "google.ru/imgres",
- "google.rw/imgres",
- "google.sc/imgres",
- "google.se/imgres",
- "google.sh/imgres",
- "google.si/imgres",
- "google.sk/imgres",
- "google.sm/imgres",
- "google.sn/imgres",
- "google.so/imgres",
- "google.st/imgres",
- "google.td/imgres",
- "google.tg/imgres",
- "google.tk/imgres",
- "google.tl/imgres",
- "google.tm/imgres",
- "google.to/imgres",
- "google.tt/imgres",
- "google.us/imgres",
- "google.vg/imgres",
- "google.vu/imgres",
- "images.google.ws",
- "images.google.ac",
- "images.google.ad",
- "images.google.ae",
- "images.google.am",
- "images.google.as",
- "images.google.at",
- "images.google.az",
- "images.google.ba",
- "images.google.be",
- "images.google.bf",
- "images.google.bg",
- "images.google.bi",
- "images.google.bj",
- "images.google.bs",
- "images.google.by",
- "images.google.ca",
- "images.google.cat",
- "images.google.cc",
- "images.google.cd",
- "images.google.cf",
- "images.google.cg",
- "images.google.ch",
- "images.google.ci",
- "images.google.cl",
- "images.google.cm",
- "images.google.cn",
- "images.google.co.bw",
- "images.google.co.ck",
- "images.google.co.cr",
- "images.google.co.id",
- "images.google.co.il",
- "images.google.co.in",
- "images.google.co.jp",
- "images.google.co.ke",
- "images.google.co.kr",
- "images.google.co.ls",
- "images.google.co.ma",
- "images.google.co.mz",
- "images.google.co.nz",
- "images.google.co.th",
- "images.google.co.tz",
- "images.google.co.ug",
- "images.google.co.uk",
- "images.google.co.uz",
- "images.google.co.ve",
- "images.google.co.vi",
- "images.google.co.za",
- "images.google.co.zm",
- "images.google.co.zw",
- "images.google.com",
- "images.google.com.af",
- "images.google.com.ag",
- "images.google.com.ai",
- "images.google.com.ar",
- "images.google.com.au",
- "images.google.com.bd",
- "images.google.com.bh",
- "images.google.com.bn",
- "images.google.com.bo",
- "images.google.com.br",
- "images.google.com.by",
- "images.google.com.bz",
- "images.google.com.co",
- "images.google.com.cu",
- "images.google.com.cy",
- "images.google.com.do",
- "images.google.com.ec",
- "images.google.com.eg",
- "images.google.com.et",
- "images.google.com.fj",
- "images.google.com.gh",
- "images.google.com.gi",
- "images.google.com.gt",
- "images.google.com.hk",
- "images.google.com.jm",
- "images.google.com.kh",
- "images.google.com.kh",
- "images.google.com.kw",
- "images.google.com.lb",
- "images.google.com.lc",
- "images.google.com.ly",
- "images.google.com.mt",
- "images.google.com.mx",
- "images.google.com.my",
- "images.google.com.na",
- "images.google.com.nf",
- "images.google.com.ng",
- "images.google.com.ni",
- "images.google.com.np",
- "images.google.com.om",
- "images.google.com.pa",
- "images.google.com.pe",
- "images.google.com.ph",
- "images.google.com.pk",
- "images.google.com.pr",
- "images.google.com.py",
- "images.google.com.qa",
- "images.google.com.sa",
- "images.google.com.sb",
- "images.google.com.sg",
- "images.google.com.sl",
- "images.google.com.sv",
- "images.google.com.tj",
- "images.google.com.tn",
- "images.google.com.tr",
- "images.google.com.tw",
- "images.google.com.ua",
- "images.google.com.uy",
- "images.google.com.vc",
- "images.google.com.vn",
- "images.google.cv",
- "images.google.cz",
- "images.google.de",
- "images.google.dj",
- "images.google.dk",
- "images.google.dm",
- "images.google.dz",
- "images.google.ee",
- "images.google.es",
- "images.google.fi",
- "images.google.fm",
- "images.google.fr",
- "images.google.ga",
- "images.google.gd",
- "images.google.ge",
- "images.google.gf",
- "images.google.gg",
- "images.google.gl",
- "images.google.gm",
- "images.google.gp",
- "images.google.gr",
- "images.google.gy",
- "images.google.hn",
- "images.google.hr",
- "images.google.ht",
- "images.google.hu",
- "images.google.ie",
- "images.google.im",
- "images.google.io",
- "images.google.iq",
- "images.google.is",
- "images.google.it",
- "images.google.it.ao",
- "images.google.je",
- "images.google.jo",
- "images.google.kg",
- "images.google.ki",
- "images.google.kz",
- "images.google.la",
- "images.google.li",
- "images.google.lk",
- "images.google.lt",
- "images.google.lu",
- "images.google.lv",
- "images.google.md",
- "images.google.me",
- "images.google.mg",
- "images.google.mk",
- "images.google.ml",
- "images.google.mn",
- "images.google.ms",
- "images.google.mu",
- "images.google.mv",
- "images.google.mw",
- "images.google.ne",
- "images.google.nl",
- "images.google.no",
- "images.google.nr",
- "images.google.nu",
- "images.google.pl",
- "images.google.pn",
- "images.google.ps",
- "images.google.pt",
- "images.google.ro",
- "images.google.rs",
- "images.google.ru",
- "images.google.rw",
- "images.google.sc",
- "images.google.se",
- "images.google.sh",
- "images.google.si",
- "images.google.sk",
- "images.google.sm",
- "images.google.sn",
- "images.google.so",
- "images.google.st",
- "images.google.td",
- "images.google.tg",
- "images.google.tk",
- "images.google.tl",
- "images.google.tm",
- "images.google.to",
- "images.google.tt",
- "images.google.us",
- "images.google.vg",
- "images.google.vu",
- "images.google.ws"
- ],
- "parameters": [
- "q"
- ]
- },
- "ABCs\u00f8k": {
- "domains": [
- "abcsolk.no",
- "verden.abcsok.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Google Product Search": {
- "domains": [
- "google.ac/products",
- "google.ad/products",
- "google.ae/products",
- "google.am/products",
- "google.as/products",
- "google.at/products",
- "google.az/products",
- "google.ba/products",
- "google.be/products",
- "google.bf/products",
- "google.bg/products",
- "google.bi/products",
- "google.bj/products",
- "google.bs/products",
- "google.by/products",
- "google.ca/products",
- "google.cat/products",
- "google.cc/products",
- "google.cd/products",
- "google.cf/products",
- "google.cg/products",
- "google.ch/products",
- "google.ci/products",
- "google.cl/products",
- "google.cm/products",
- "google.cn/products",
- "google.co.bw/products",
- "google.co.ck/products",
- "google.co.cr/products",
- "google.co.id/products",
- "google.co.il/products",
- "google.co.in/products",
- "google.co.jp/products",
- "google.co.ke/products",
- "google.co.kr/products",
- "google.co.ls/products",
- "google.co.ma/products",
- "google.co.mz/products",
- "google.co.nz/products",
- "google.co.th/products",
- "google.co.tz/products",
- "google.co.ug/products",
- "google.co.uk/products",
- "google.co.uz/products",
- "google.co.ve/products",
- "google.co.vi/products",
- "google.co.za/products",
- "google.co.zm/products",
- "google.co.zw/products",
- "google.com/products",
- "google.com.af/products",
- "google.com.ag/products",
- "google.com.ai/products",
- "google.com.ar/products",
- "google.com.au/products",
- "google.com.bd/products",
- "google.com.bh/products",
- "google.com.bn/products",
- "google.com.bo/products",
- "google.com.br/products",
- "google.com.by/products",
- "google.com.bz/products",
- "google.com.co/products",
- "google.com.cu/products",
- "google.com.cy/products",
- "google.com.do/products",
- "google.com.ec/products",
- "google.com.eg/products",
- "google.com.et/products",
- "google.com.fj/products",
- "google.com.gh/products",
- "google.com.gi/products",
- "google.com.gt/products",
- "google.com.hk/products",
- "google.com.jm/products",
- "google.com.kh/products",
- "google.com.kh/products",
- "google.com.kw/products",
- "google.com.lb/products",
- "google.com.lc/products",
- "google.com.ly/products",
- "google.com.mt/products",
- "google.com.mx/products",
- "google.com.my/products",
- "google.com.na/products",
- "google.com.nf/products",
- "google.com.ng/products",
- "google.com.ni/products",
- "google.com.np/products",
- "google.com.om/products",
- "google.com.pa/products",
- "google.com.pe/products",
- "google.com.ph/products",
- "google.com.pk/products",
- "google.com.pr/products",
- "google.com.py/products",
- "google.com.qa/products",
- "google.com.sa/products",
- "google.com.sb/products",
- "google.com.sg/products",
- "google.com.sl/products",
- "google.com.sv/products",
- "google.com.tj/products",
- "google.com.tn/products",
- "google.com.tr/products",
- "google.com.tw/products",
- "google.com.ua/products",
- "google.com.uy/products",
- "google.com.vc/products",
- "google.com.vn/products",
- "google.cv/products",
- "google.cz/products",
- "google.de/products",
- "google.dj/products",
- "google.dk/products",
- "google.dm/products",
- "google.dz/products",
- "google.ee/products",
- "google.es/products",
- "google.fi/products",
- "google.fm/products",
- "google.fr/products",
- "google.ga/products",
- "google.gd/products",
- "google.ge/products",
- "google.gf/products",
- "google.gg/products",
- "google.gl/products",
- "google.gm/products",
- "google.gp/products",
- "google.gr/products",
- "google.gy/products",
- "google.hn/products",
- "google.hr/products",
- "google.ht/products",
- "google.hu/products",
- "google.ie/products",
- "google.im/products",
- "google.io/products",
- "google.iq/products",
- "google.is/products",
- "google.it/products",
- "google.it.ao/products",
- "google.je/products",
- "google.jo/products",
- "google.kg/products",
- "google.ki/products",
- "google.kz/products",
- "google.la/products",
- "google.li/products",
- "google.lk/products",
- "google.lt/products",
- "google.lu/products",
- "google.lv/products",
- "google.md/products",
- "google.me/products",
- "google.mg/products",
- "google.mk/products",
- "google.ml/products",
- "google.mn/products",
- "google.ms/products",
- "google.mu/products",
- "google.mv/products",
- "google.mw/products",
- "google.ne/products",
- "google.nl/products",
- "google.no/products",
- "google.nr/products",
- "google.nu/products",
- "google.pl/products",
- "google.pn/products",
- "google.ps/products",
- "google.pt/products",
- "google.ro/products",
- "google.rs/products",
- "google.ru/products",
- "google.rw/products",
- "google.sc/products",
- "google.se/products",
- "google.sh/products",
- "google.si/products",
- "google.sk/products",
- "google.sm/products",
- "google.sn/products",
- "google.so/products",
- "google.st/products",
- "google.td/products",
- "google.tg/products",
- "google.tk/products",
- "google.tl/products",
- "google.tm/products",
- "google.to/products",
- "google.tt/products",
- "google.us/products",
- "google.vg/products",
- "google.vu/products",
- "google.ws/products",
- "www.google.ac/products",
- "www.google.ad/products",
- "www.google.ae/products",
- "www.google.am/products",
- "www.google.as/products",
- "www.google.at/products",
- "www.google.az/products",
- "www.google.ba/products",
- "www.google.be/products",
- "www.google.bf/products",
- "www.google.bg/products",
- "www.google.bi/products",
- "www.google.bj/products",
- "www.google.bs/products",
- "www.google.by/products",
- "www.google.ca/products",
- "www.google.cat/products",
- "www.google.cc/products",
- "www.google.cd/products",
- "www.google.cf/products",
- "www.google.cg/products",
- "www.google.ch/products",
- "www.google.ci/products",
- "www.google.cl/products",
- "www.google.cm/products",
- "www.google.cn/products",
- "www.google.co.bw/products",
- "www.google.co.ck/products",
- "www.google.co.cr/products",
- "www.google.co.id/products",
- "www.google.co.il/products",
- "www.google.co.in/products",
- "www.google.co.jp/products",
- "www.google.co.ke/products",
- "www.google.co.kr/products",
- "www.google.co.ls/products",
- "www.google.co.ma/products",
- "www.google.co.mz/products",
- "www.google.co.nz/products",
- "www.google.co.th/products",
- "www.google.co.tz/products",
- "www.google.co.ug/products",
- "www.google.co.uk/products",
- "www.google.co.uz/products",
- "www.google.co.ve/products",
- "www.google.co.vi/products",
- "www.google.co.za/products",
- "www.google.co.zm/products",
- "www.google.co.zw/products",
- "www.google.com/products",
- "www.google.com.af/products",
- "www.google.com.ag/products",
- "www.google.com.ai/products",
- "www.google.com.ar/products",
- "www.google.com.au/products",
- "www.google.com.bd/products",
- "www.google.com.bh/products",
- "www.google.com.bn/products",
- "www.google.com.bo/products",
- "www.google.com.br/products",
- "www.google.com.by/products",
- "www.google.com.bz/products",
- "www.google.com.co/products",
- "www.google.com.cu/products",
- "www.google.com.cy/products",
- "www.google.com.do/products",
- "www.google.com.ec/products",
- "www.google.com.eg/products",
- "www.google.com.et/products",
- "www.google.com.fj/products",
- "www.google.com.gh/products",
- "www.google.com.gi/products",
- "www.google.com.gt/products",
- "www.google.com.hk/products",
- "www.google.com.jm/products",
- "www.google.com.kh/products",
- "www.google.com.kh/products",
- "www.google.com.kw/products",
- "www.google.com.lb/products",
- "www.google.com.lc/products",
- "www.google.com.ly/products",
- "www.google.com.mt/products",
- "www.google.com.mx/products",
- "www.google.com.my/products",
- "www.google.com.na/products",
- "www.google.com.nf/products",
- "www.google.com.ng/products",
- "www.google.com.ni/products",
- "www.google.com.np/products",
- "www.google.com.om/products",
- "www.google.com.pa/products",
- "www.google.com.pe/products",
- "www.google.com.ph/products",
- "www.google.com.pk/products",
- "www.google.com.pr/products",
- "www.google.com.py/products",
- "www.google.com.qa/products",
- "www.google.com.sa/products",
- "www.google.com.sb/products",
- "www.google.com.sg/products",
- "www.google.com.sl/products",
- "www.google.com.sv/products",
- "www.google.com.tj/products",
- "www.google.com.tn/products",
- "www.google.com.tr/products",
- "www.google.com.tw/products",
- "www.google.com.ua/products",
- "www.google.com.uy/products",
- "www.google.com.vc/products",
- "www.google.com.vn/products",
- "www.google.cv/products",
- "www.google.cz/products",
- "www.google.de/products",
- "www.google.dj/products",
- "www.google.dk/products",
- "www.google.dm/products",
- "www.google.dz/products",
- "www.google.ee/products",
- "www.google.es/products",
- "www.google.fi/products",
- "www.google.fm/products",
- "www.google.fr/products",
- "www.google.ga/products",
- "www.google.gd/products",
- "www.google.ge/products",
- "www.google.gf/products",
- "www.google.gg/products",
- "www.google.gl/products",
- "www.google.gm/products",
- "www.google.gp/products",
- "www.google.gr/products",
- "www.google.gy/products",
- "www.google.hn/products",
- "www.google.hr/products",
- "www.google.ht/products",
- "www.google.hu/products",
- "www.google.ie/products",
- "www.google.im/products",
- "www.google.io/products",
- "www.google.iq/products",
- "www.google.is/products",
- "www.google.it/products",
- "www.google.it.ao/products",
- "www.google.je/products",
- "www.google.jo/products",
- "www.google.kg/products",
- "www.google.ki/products",
- "www.google.kz/products",
- "www.google.la/products",
- "www.google.li/products",
- "www.google.lk/products",
- "www.google.lt/products",
- "www.google.lu/products",
- "www.google.lv/products",
- "www.google.md/products",
- "www.google.me/products",
- "www.google.mg/products",
- "www.google.mk/products",
- "www.google.ml/products",
- "www.google.mn/products",
- "www.google.ms/products",
- "www.google.mu/products",
- "www.google.mv/products",
- "www.google.mw/products",
- "www.google.ne/products",
- "www.google.nl/products",
- "www.google.no/products",
- "www.google.nr/products",
- "www.google.nu/products",
- "www.google.pl/products",
- "www.google.pn/products",
- "www.google.ps/products",
- "www.google.pt/products",
- "www.google.ro/products",
- "www.google.rs/products",
- "www.google.ru/products",
- "www.google.rw/products",
- "www.google.sc/products",
- "www.google.se/products",
- "www.google.sh/products",
- "www.google.si/products",
- "www.google.sk/products",
- "www.google.sm/products",
- "www.google.sn/products",
- "www.google.so/products",
- "www.google.st/products",
- "www.google.td/products",
- "www.google.tg/products",
- "www.google.tk/products",
- "www.google.tl/products",
- "www.google.tm/products",
- "www.google.to/products",
- "www.google.tt/products",
- "www.google.us/products",
- "www.google.vg/products",
- "www.google.vu/products",
- "www.google.ws/products"
- ],
- "parameters": [
- "q"
- ]
- },
- "DasOertliche": {
- "domains": [
- "www.dasoertliche.de"
- ],
- "parameters": [
- "kw"
- ]
- },
- "InfoSpace": {
- "domains": [
- "infospace.com",
- "dogpile.com",
- "www.dogpile.com",
- "metacrawler.com",
- "webfetch.com",
- "webcrawler.com",
- "search.kiwee.com",
- "isearch.babylon.com",
- "start.facemoods.com",
- "search.magnetic.com",
- "search.searchcompletion.com",
- "clusty.com"
- ],
- "parameters": [
- "q",
- "s"
- ]
- },
- "Weborama": {
- "domains": [
- "www.weborama.com"
- ],
- "parameters": [
- "QUERY"
- ]
- },
- "Bluewin": {
- "domains": [
- "search.bluewin.ch"
- ],
- "parameters": [
- "searchTerm"
- ]
- },
- "Neti": {
- "domains": [
- "www.neti.ee"
- ],
- "parameters": [
- "query"
- ]
- },
- "Winamp": {
- "domains": [
- "search.winamp.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Nigma": {
- "domains": [
- "nigma.ru"
- ],
- "parameters": [
- "s"
- ]
- },
- "Yahoo! Images": {
- "domains": [
- "image.yahoo.cn",
- "images.search.yahoo.com"
- ],
- "parameters": [
- "p",
- "q"
- ]
- },
- "Exalead": {
- "domains": [
- "www.exalead.fr",
- "www.exalead.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Teoma": {
- "domains": [
- "www.teoma.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Needtofind": {
- "domains": [
- "ko.search.need2find.com"
- ],
- "parameters": [
- "searchfor"
- ]
- },
- "Looksmart": {
- "domains": [
- "www.looksmart.com"
- ],
- "parameters": [
- "key"
- ]
- },
- "Wirtualna Polska": {
- "domains": [
- "szukaj.wp.pl"
- ],
- "parameters": [
- "szukaj"
- ]
- },
- "Toolbarhome": {
- "domains": [
- "www.toolbarhome.com",
- "vshare.toolbarhome.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Searchalot": {
- "domains": [
- "searchalot.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yandex": {
- "domains": [
- "yandex.ru",
- "yandex.ua",
- "yandex.com",
- "yandex.by",
- "www.yandex.ru",
- "www.yandex.ua",
- "www.yandex.com",
- "www.yandex.by"
- ],
- "parameters": [
- "text"
- ]
- },
- "canoe.ca": {
- "domains": [
- "web.canoe.ca"
- ],
- "parameters": [
- "q"
- ]
- },
- "Compuserve": {
- "domains": [
- "websearch.cs.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Blogdigger": {
- "domains": [
- "www.blogdigger.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Startpagina": {
- "domains": [
- "startgoogle.startpagina.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "eo": {
- "domains": [
- "eo.st"
- ],
- "parameters": [
- "x_query"
- ]
- },
- "Zhongsou": {
- "domains": [
- "p.zhongsou.com"
- ],
- "parameters": [
- "w"
- ]
- },
- "La Toile Du Quebec Via Google": {
- "domains": [
- "www.toile.com",
- "web.toile.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Paperball": {
- "domains": [
- "www.paperball.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Jungle Spider": {
- "domains": [
- "www.jungle-spider.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "PeoplePC": {
- "domains": [
- "search.peoplepc.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "MetaCrawler.de": {
- "domains": [
- "s1.metacrawler.de",
- "s2.metacrawler.de",
- "s3.metacrawler.de"
- ],
- "parameters": [
- "qry"
- ]
- },
- "Orange": {
- "domains": [
- "busca.orange.es",
- "search.orange.co.uk"
- ],
- "parameters": [
- "q"
- ]
- },
- "Gule Sider": {
- "domains": [
- "www.gulesider.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Francite": {
- "domains": [
- "recherche.francite.com"
- ],
- "parameters": [
- "name"
- ]
- },
- "Ask Toolbar": {
- "domains": [
- "search.tb.ask.com"
- ],
- "parameters": [
- "searchfor"
- ]
- },
- "Trusted-Search": {
- "domains": [
- "www.trusted--search.com"
- ],
- "parameters": [
- "w"
- ]
- },
- "goo": {
- "domains": [
- "search.goo.ne.jp",
- "ocnsearch.goo.ne.jp"
- ],
- "parameters": [
- "MT"
- ]
- },
- "Fast Browser Search": {
- "domains": [
- "www.fastbrowsersearch.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Blogpulse": {
- "domains": [
- "www.blogpulse.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Volny": {
- "domains": [
- "web.volny.cz"
- ],
- "parameters": [
- "search"
- ]
- },
- "Icerockeet": {
- "domains": [
- "blogs.icerocket.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Terra": {
- "domains": [
- "buscador.terra.es",
- "buscador.terra.cl",
- "buscador.terra.com.br"
- ],
- "parameters": [
- "query"
- ]
- },
- "Amazon": {
- "domains": [
- "amazon.com",
- "www.amazon.com"
- ],
- "parameters": [
- "keywords"
- ]
- },
- "Onet": {
- "domains": [
- "szukaj.onet.pl"
- ],
- "parameters": [
- "qt"
- ]
- },
- "Digg": {
- "domains": [
- "digg.com"
- ],
- "parameters": [
- "s"
- ]
- },
- "Abacho": {
- "domains": [
- "www.abacho.de",
- "www.abacho.com",
- "www.abacho.co.uk",
- "www.se.abacho.com",
- "www.tr.abacho.com",
- "www.abacho.at",
- "www.abacho.fr",
- "www.abacho.es",
- "www.abacho.ch",
- "www.abacho.it"
- ],
- "parameters": [
- "q"
- ]
- },
- "maailm": {
- "domains": [
- "www.maailm.com"
- ],
- "parameters": [
- "tekst"
- ]
- },
- "Flix": {
- "domains": [
- "www.flix.de"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Suchnase": {
- "domains": [
- "www.suchnase.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Freenet": {
- "domains": [
- "suche.freenet.de"
- ],
- "parameters": [
- "query",
- "Keywords"
- ]
- },
- "Poisk.ru": {
- "domains": [
- "www.plazoo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Sharelook": {
- "domains": [
- "www.sharelook.fr"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Najdi": {
- "domains": [
- "www.najdi.si"
- ],
- "parameters": [
- "q"
- ]
- },
- "Picsearch": {
- "domains": [
- "www.picsearch.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Mail.ru": {
- "domains": [
- "go.mail.ru"
- ],
- "parameters": [
- "q"
- ]
- },
- "Alexa": {
- "domains": [
- "alexa.com",
- "search.toolbars.alexa.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Metager": {
- "domains": [
- "meta.rrzn.uni-hannover.de",
- "www.metager.de"
- ],
- "parameters": [
- "eingabe"
- ]
- },
- "Technorati": {
- "domains": [
- "technorati.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Globososo": {
- "domains": [
- "searches.globososo.com",
- "search.globososo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "WWW": {
- "domains": [
- "search.www.ee"
- ],
- "parameters": [
- "query"
- ]
- },
- "Trouvez.com": {
- "domains": [
- "www.trouvez.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "IXquick": {
- "domains": [
- "ixquick.com",
- "www.eu.ixquick.com",
- "ixquick.de",
- "www.ixquick.de",
- "us.ixquick.com",
- "s1.us.ixquick.com",
- "s2.us.ixquick.com",
- "s3.us.ixquick.com",
- "s4.us.ixquick.com",
- "s5.us.ixquick.com",
- "eu.ixquick.com",
- "s8-eu.ixquick.com",
- "s1-eu.ixquick.de"
- ],
- "parameters": [
- "query"
- ]
- },
- "Naver Images": {
- "domains": [
- "image.search.naver.com",
- "imagesearch.naver.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Zapmeta": {
- "domains": [
- "www.zapmeta.com",
- "www.zapmeta.nl",
- "www.zapmeta.de",
- "uk.zapmeta.com"
- ],
- "parameters": [
- "q",
- "query"
- ]
- },
- "Yippy": {
- "domains": [
- "search.yippy.com"
- ],
- "parameters": [
- "q",
- "query"
- ]
- },
- "Gomeo": {
- "domains": [
- "www.gomeo.com"
- ],
- "parameters": [
- "Keywords"
- ]
- },
- "Walhello": {
- "domains": [
- "www.walhello.info",
- "www.walhello.com",
- "www.walhello.de",
- "www.walhello.nl"
- ],
- "parameters": [
- "key"
- ]
- },
- "Meta": {
- "domains": [
- "meta.ua"
- ],
- "parameters": [
- "q"
- ]
- },
- "Skynet": {
- "domains": [
- "www.skynet.be"
- ],
- "parameters": [
- "q"
- ]
- },
- "Searchy": {
- "domains": [
- "www.searchy.co.uk"
- ],
- "parameters": [
- "q"
- ]
- },
- "Findwide": {
- "domains": [
- "search.findwide.com"
- ],
- "parameters": [
- "k"
- ]
- },
- "WebSearch": {
- "domains": [
- "www.websearch.com"
- ],
- "parameters": [
- "qkw",
- "q"
- ]
- },
- "Rambler": {
- "domains": [
- "nova.rambler.ru"
- ],
- "parameters": [
- "query",
- "words"
- ]
- },
- "Latne": {
- "domains": [
- "www.latne.lv"
- ],
- "parameters": [
- "q"
- ]
- },
- "MySearch": {
- "domains": [
- "www.mysearch.com",
- "ms114.mysearch.com",
- "ms146.mysearch.com",
- "kf.mysearch.myway.com",
- "ki.mysearch.myway.com",
- "search.myway.com",
- "search.mywebsearch.com"
- ],
- "parameters": [
- "searchfor",
- "searchFor"
- ]
- },
- "Cuil": {
- "domains": [
- "www.cuil.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Tixuma": {
- "domains": [
- "www.tixuma.de"
- ],
- "parameters": [
- "sc"
- ]
- },
- "Sapo": {
- "domains": [
- "pesquisa.sapo.pt"
- ],
- "parameters": [
- "q"
- ]
- },
- "Gnadenmeer": {
- "domains": [
- "www.gnadenmeer.de"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Arcor": {
- "domains": [
- "www.arcor.de"
- ],
- "parameters": [
- "Keywords"
- ]
- },
- "Naver": {
- "domains": [
- "search.naver.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Zoeken": {
- "domains": [
- "www.zoeken.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Startsiden": {
- "domains": [
- "www.startsiden.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yam": {
- "domains": [
- "search.yam.com"
- ],
- "parameters": [
- "k"
- ]
- },
- "Eniro": {
- "domains": [
- "www.eniro.se"
- ],
- "parameters": [
- "q",
- "search_word"
- ]
- },
- "APOLL07": {
- "domains": [
- "apollo7.de"
- ],
- "parameters": [
- "query"
- ]
- },
- "Biglobe": {
- "domains": [
- "cgi.search.biglobe.ne.jp"
- ],
- "parameters": [
- "q"
- ]
- },
- "Mozbot": {
- "domains": [
- "www.mozbot.fr",
- "www.mozbot.co.uk",
- "www.mozbot.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "ICQ": {
- "domains": [
- "www.icq.com",
- "search.icq.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Baidu": {
- "domains": [
- "www.baidu.com",
- "www1.baidu.com",
- "zhidao.baidu.com",
- "tieba.baidu.com",
- "news.baidu.com",
- "web.gougou.com"
- ],
- "parameters": [
- "wd",
- "word",
- "kw",
- "k"
- ]
- },
- "Conduit": {
- "domains": [
- "search.conduit.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Vindex": {
- "domains": [
- "www.vindex.nl",
- "search.vindex.nl"
- ],
- "parameters": [
- "search_for"
- ]
- },
- "Babylon": {
- "domains": [
- "search.babylon.com",
- "searchassist.babylon.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "TrovaRapido": {
- "domains": [
- "www.trovarapido.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Suchmaschine.com": {
- "domains": [
- "www.suchmaschine.com"
- ],
- "parameters": [
- "suchstr"
- ]
- },
- "Lycos": {
- "domains": [
- "search.lycos.com",
- "www.lycos.com",
- "lycos.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Vinden": {
- "domains": [
- "www.vinden.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Altavista": {
- "domains": [
- "www.altavista.com",
- "search.altavista.com",
- "listings.altavista.com",
- "altavista.de",
- "altavista.fr",
- "be-nl.altavista.com",
- "be-fr.altavista.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "dmoz": {
- "domains": [
- "dmoz.org",
- "editors.dmoz.org"
- ],
- "parameters": [
- "q"
- ]
- },
- "Ecosia": {
- "domains": [
- "ecosia.org"
- ],
- "parameters": [
- "q"
- ]
- },
- "Maxwebsearch": {
- "domains": [
- "maxwebsearch.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Euroseek": {
- "domains": [
- "www.euroseek.com"
- ],
- "parameters": [
- "string"
- ]
- },
- "Bing": {
- "domains": [
- "bing.com",
- "www.bing.com",
- "msnbc.msn.com",
- "dizionario.it.msn.com",
- "cc.bingj.com",
- "m.bing.com"
- ],
- "parameters": [
- "q",
- "Q"
- ]
- },
- "X-recherche": {
- "domains": [
- "www.x-recherche.com"
- ],
- "parameters": [
- "MOTS"
- ]
- },
- "Yandex Images": {
- "domains": [
- "images.yandex.ru",
- "images.yandex.ua",
- "images.yandex.com"
- ],
- "parameters": [
- "text"
- ]
- },
- "GMX": {
- "domains": [
- "suche.gmx.net"
- ],
- "parameters": [
- "su"
- ]
- },
- "Daemon search": {
- "domains": [
- "daemon-search.com",
- "my.daemon-search.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Jungle Key": {
- "domains": [
- "junglekey.com",
- "junglekey.fr"
- ],
- "parameters": [
- "query"
- ]
- },
- "Firstfind": {
- "domains": [
- "www.firstsfind.com"
- ],
- "parameters": [
- "qry"
- ]
- },
- "Crawler": {
- "domains": [
- "www.crawler.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Holmes": {
- "domains": [
- "holmes.ge"
- ],
- "parameters": [
- "q"
- ]
- },
- "Charter": {
- "domains": [
- "www.charter.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Ilse": {
- "domains": [
- "www.ilse.nl"
- ],
- "parameters": [
- "search_for"
- ]
- },
- "earthlink": {
- "domains": [
- "search.earthlink.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Qualigo": {
- "domains": [
- "www.qualigo.at",
- "www.qualigo.ch",
- "www.qualigo.de",
- "www.qualigo.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "El Mundo": {
- "domains": [
- "ariadna.elmundo.es"
- ],
- "parameters": [
- "q"
- ]
- },
- "Metager2": {
- "domains": [
- "metager2.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Forestle": {
- "domains": [
- "forestle.org",
- "www.forestle.org",
- "forestle.mobi"
- ],
- "parameters": [
- "q"
- ]
- },
- "Search.ch": {
- "domains": [
- "www.search.ch"
- ],
- "parameters": [
- "q"
- ]
- },
- "Meinestadt": {
- "domains": [
- "www.meinestadt.de"
- ],
- "parameters": [
- "words"
- ]
- },
- "Freshweather": {
- "domains": [
- "www.fresh-weather.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "AllTheWeb": {
- "domains": [
- "www.alltheweb.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Snapdo": {
- "domains": [
- "search.snapdo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Zoek": {
- "domains": [
- "www3.zoek.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Daum": {
- "domains": [
- "search.daum.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Marktplaats": {
- "domains": [
- "www.marktplaats.nl"
- ],
- "parameters": [
- "query"
- ]
- },
- "suche.info": {
- "domains": [
- "suche.info"
- ],
- "parameters": [
- "q"
- ]
- },
- "Google News": {
- "domains": [
- "news.google.ac",
- "news.google.ad",
- "news.google.ae",
- "news.google.am",
- "news.google.as",
- "news.google.at",
- "news.google.az",
- "news.google.ba",
- "news.google.be",
- "news.google.bf",
- "news.google.bg",
- "news.google.bi",
- "news.google.bj",
- "news.google.bs",
- "news.google.by",
- "news.google.ca",
- "news.google.cat",
- "news.google.cc",
- "news.google.cd",
- "news.google.cf",
- "news.google.cg",
- "news.google.ch",
- "news.google.ci",
- "news.google.cl",
- "news.google.cm",
- "news.google.cn",
- "news.google.co.bw",
- "news.google.co.ck",
- "news.google.co.cr",
- "news.google.co.id",
- "news.google.co.il",
- "news.google.co.in",
- "news.google.co.jp",
- "news.google.co.ke",
- "news.google.co.kr",
- "news.google.co.ls",
- "news.google.co.ma",
- "news.google.co.mz",
- "news.google.co.nz",
- "news.google.co.th",
- "news.google.co.tz",
- "news.google.co.ug",
- "news.google.co.uk",
- "news.google.co.uz",
- "news.google.co.ve",
- "news.google.co.vi",
- "news.google.co.za",
- "news.google.co.zm",
- "news.google.co.zw",
- "news.google.com",
- "news.google.com.af",
- "news.google.com.ag",
- "news.google.com.ai",
- "news.google.com.ar",
- "news.google.com.au",
- "news.google.com.bd",
- "news.google.com.bh",
- "news.google.com.bn",
- "news.google.com.bo",
- "news.google.com.br",
- "news.google.com.by",
- "news.google.com.bz",
- "news.google.com.co",
- "news.google.com.cu",
- "news.google.com.cy",
- "news.google.com.do",
- "news.google.com.ec",
- "news.google.com.eg",
- "news.google.com.et",
- "news.google.com.fj",
- "news.google.com.gh",
- "news.google.com.gi",
- "news.google.com.gt",
- "news.google.com.hk",
- "news.google.com.jm",
- "news.google.com.kh",
- "news.google.com.kh",
- "news.google.com.kw",
- "news.google.com.lb",
- "news.google.com.lc",
- "news.google.com.ly",
- "news.google.com.mt",
- "news.google.com.mx",
- "news.google.com.my",
- "news.google.com.na",
- "news.google.com.nf",
- "news.google.com.ng",
- "news.google.com.ni",
- "news.google.com.np",
- "news.google.com.om",
- "news.google.com.pa",
- "news.google.com.pe",
- "news.google.com.ph",
- "news.google.com.pk",
- "news.google.com.pr",
- "news.google.com.py",
- "news.google.com.qa",
- "news.google.com.sa",
- "news.google.com.sb",
- "news.google.com.sg",
- "news.google.com.sl",
- "news.google.com.sv",
- "news.google.com.tj",
- "news.google.com.tn",
- "news.google.com.tr",
- "news.google.com.tw",
- "news.google.com.ua",
- "news.google.com.uy",
- "news.google.com.vc",
- "news.google.com.vn",
- "news.google.cv",
- "news.google.cz",
- "news.google.de",
- "news.google.dj",
- "news.google.dk",
- "news.google.dm",
- "news.google.dz",
- "news.google.ee",
- "news.google.es",
- "news.google.fi",
- "news.google.fm",
- "news.google.fr",
- "news.google.ga",
- "news.google.gd",
- "news.google.ge",
- "news.google.gf",
- "news.google.gg",
- "news.google.gl",
- "news.google.gm",
- "news.google.gp",
- "news.google.gr",
- "news.google.gy",
- "news.google.hn",
- "news.google.hr",
- "news.google.ht",
- "news.google.hu",
- "news.google.ie",
- "news.google.im",
- "news.google.io",
- "news.google.iq",
- "news.google.is",
- "news.google.it",
- "news.google.it.ao",
- "news.google.je",
- "news.google.jo",
- "news.google.kg",
- "news.google.ki",
- "news.google.kz",
- "news.google.la",
- "news.google.li",
- "news.google.lk",
- "news.google.lt",
- "news.google.lu",
- "news.google.lv",
- "news.google.md",
- "news.google.me",
- "news.google.mg",
- "news.google.mk",
- "news.google.ml",
- "news.google.mn",
- "news.google.ms",
- "news.google.mu",
- "news.google.mv",
- "news.google.mw",
- "news.google.ne",
- "news.google.nl",
- "news.google.no",
- "news.google.nr",
- "news.google.nu",
- "news.google.pl",
- "news.google.pn",
- "news.google.ps",
- "news.google.pt",
- "news.google.ro",
- "news.google.rs",
- "news.google.ru",
- "news.google.rw",
- "news.google.sc",
- "news.google.se",
- "news.google.sh",
- "news.google.si",
- "news.google.sk",
- "news.google.sm",
- "news.google.sn",
- "news.google.so",
- "news.google.st",
- "news.google.td",
- "news.google.tg",
- "news.google.tk",
- "news.google.tl",
- "news.google.tm",
- "news.google.to",
- "news.google.tt",
- "news.google.us",
- "news.google.vg",
- "news.google.vu",
- "news.google.ws"
- ],
- "parameters": [
- "q"
- ]
- },
- "Zoohoo": {
- "domains": [
- "zoohoo.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Seznam": {
- "domains": [
- "search.seznam.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Online.no": {
- "domains": [
- "online.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Eurip": {
- "domains": [
- "www.eurip.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "all.by": {
- "domains": [
- "all.by"
- ],
- "parameters": [
- "query"
- ]
- },
- "Road Runner Search": {
- "domains": [
- "search.rr.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Opplysningen 1881": {
- "domains": [
- "www.1881.no"
- ],
- "parameters": [
- "Query"
- ]
- },
- "YouGoo": {
- "domains": [
- "www.yougoo.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "Bing Images": {
- "domains": [
- "bing.com/images/search",
- "www.bing.com/images/search"
- ],
- "parameters": [
- "q",
- "Q"
- ]
- },
- "Geona": {
- "domains": [
- "geona.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Nate": {
- "domains": [
- "search.nate.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "DuckDuckGo": {
- "domains": [
- "duckduckgo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Hotbot": {
- "domains": [
- "www.hotbot.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Kvasir": {
- "domains": [
- "www.kvasir.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Austronaut": {
- "domains": [
- "www2.austronaut.at",
- "www1.astronaut.at"
- ],
- "parameters": [
- "q"
- ]
- },
- "Excite": {
- "domains": [
- "search.excite.it",
- "search.excite.fr",
- "search.excite.de",
- "search.excite.co.uk",
- "serach.excite.es",
- "search.excite.nl",
- "msxml.excite.com",
- "www.excite.co.jp"
- ],
- "parameters": [
- "q",
- "search"
- ]
- },
- "qip": {
- "domains": [
- "search.qip.ru"
- ],
- "parameters": [
- "query"
- ]
- },
- "Certified-Toolbar": {
- "domains": [
- "search.certified-toolbar.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yahoo!": {
- "domains": [
- "search.yahoo.com",
- "yahoo.com",
- "ar.search.yahoo.com",
- "ar.yahoo.com",
- "au.search.yahoo.com",
- "au.yahoo.com",
- "br.search.yahoo.com",
- "br.yahoo.com",
- "cade.searchde.yahoo.com",
- "cade.yahoo.com",
- "chinese.searchinese.yahoo.com",
- "chinese.yahoo.com",
- "cn.search.yahoo.com",
- "cn.yahoo.com",
- "de.search.yahoo.com",
- "de.yahoo.com",
- "dk.search.yahoo.com",
- "dk.yahoo.com",
- "es.search.yahoo.com",
- "es.yahoo.com",
- "espanol.searchpanol.yahoo.com",
- "espanol.searchpanol.yahoo.com",
- "espanol.yahoo.com",
- "espanol.yahoo.com",
- "fr.search.yahoo.com",
- "fr.yahoo.com",
- "ie.search.yahoo.com",
- "ie.yahoo.com",
- "it.search.yahoo.com",
- "it.yahoo.com",
- "kr.search.yahoo.com",
- "kr.yahoo.com",
- "mx.search.yahoo.com",
- "mx.yahoo.com",
- "no.search.yahoo.com",
- "no.yahoo.com",
- "nz.search.yahoo.com",
- "nz.yahoo.com",
- "one.cn.yahoo.com",
- "one.searchn.yahoo.com",
- "qc.search.yahoo.com",
- "qc.search.yahoo.com",
- "qc.search.yahoo.com",
- "qc.yahoo.com",
- "qc.yahoo.com",
- "se.search.yahoo.com",
- "se.search.yahoo.com",
- "se.yahoo.com",
- "search.searcharch.yahoo.com",
- "search.yahoo.com",
- "uk.search.yahoo.com",
- "uk.yahoo.com",
- "www.yahoo.co.jp",
- "search.yahoo.co.jp",
- "www.cercato.it",
- "search.offerbox.com",
- "ys.mirostart.com"
- ],
- "parameters": [
- "p",
- "q"
- ]
- },
- "URL.ORGanizier": {
- "domains": [
- "www.url.org"
- ],
- "parameters": [
- "q"
- ]
- },
- "Witch": {
- "domains": [
- "www.witch.de"
- ],
- "parameters": [
- "search"
- ]
- },
- "Mister Wong": {
- "domains": [
- "www.mister-wong.com",
- "www.mister-wong.de"
- ],
- "parameters": [
- "Keywords"
- ]
- },
- "Aport": {
- "domains": [
- "sm.aport.ru"
- ],
- "parameters": [
- "r"
- ]
- },
- "Web.de": {
- "domains": [
- "suche.web.de"
- ],
- "parameters": [
- "su"
- ]
- },
- "Ask": {
- "domains": [
- "ask.com",
- "www.ask.com",
- "web.ask.com",
- "int.ask.com",
- "mws.ask.com",
- "uk.ask.com",
- "images.ask.com",
- "ask.reference.com",
- "www.askkids.com",
- "iwon.ask.com",
- "www.ask.co.uk",
- "www.qbyrd.com",
- "search-results.com",
- "uk.search-results.com",
- "www.search-results.com",
- "int.search-results.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Centrum": {
- "domains": [
- "serach.centrum.cz",
- "morfeo.centrum.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Everyclick": {
- "domains": [
- "www.everyclick.com"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Google Video": {
- "domains": [
- "video.google.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Delfi": {
- "domains": [
- "otsing.delfi.ee"
- ],
- "parameters": [
- "q"
- ]
- },
- "blekko": {
- "domains": [
- "blekko.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Jyxo": {
- "domains": [
- "jyxo.1188.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Kataweb": {
- "domains": [
- "www.kataweb.it"
- ],
- "parameters": [
- "q"
- ]
- },
- "uol.com.br": {
- "domains": [
- "busca.uol.com.br"
- ],
- "parameters": [
- "q"
- ]
- },
- "Arianna": {
- "domains": [
- "arianna.libero.it",
- "www.arianna.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Mamma": {
- "domains": [
- "www.mamma.com",
- "mamma75.mamma.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Yatedo": {
- "domains": [
- "www.yatedo.com",
- "www.yatedo.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "Twingly": {
- "domains": [
- "www.twingly.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Delfi latvia": {
- "domains": [
- "smart.delfi.lv"
- ],
- "parameters": [
- "q"
- ]
- },
- "PriceRunner": {
- "domains": [
- "www.pricerunner.co.uk"
- ],
- "parameters": [
- "q"
- ]
- },
- "Rakuten": {
- "domains": [
- "websearch.rakuten.co.jp"
- ],
- "parameters": [
- "qt"
- ]
- },
- "Google": {
- "domains": [
- "www.google.com",
- "www.google.ac",
- "www.google.ad",
- "www.google.com.af",
- "www.google.com.ag",
- "www.google.com.ai",
- "www.google.am",
- "www.google.it.ao",
- "www.google.com.ar",
- "www.google.as",
- "www.google.at",
- "www.google.com.au",
- "www.google.az",
- "www.google.ba",
- "www.google.com.bd",
- "www.google.be",
- "www.google.bf",
- "www.google.bg",
- "www.google.com.bh",
- "www.google.bi",
- "www.google.bj",
- "www.google.com.bn",
- "www.google.com.bo",
- "www.google.com.br",
- "www.google.bs",
- "www.google.co.bw",
- "www.google.com.by",
- "www.google.by",
- "www.google.com.bz",
- "www.google.ca",
- "www.google.com.kh",
- "www.google.cc",
- "www.google.cd",
- "www.google.cf",
- "www.google.cat",
- "www.google.cg",
- "www.google.ch",
- "www.google.ci",
- "www.google.co.ck",
- "www.google.cl",
- "www.google.cm",
- "www.google.cn",
- "www.google.com.co",
- "www.google.co.cr",
- "www.google.com.cu",
- "www.google.cv",
- "www.google.com.cy",
- "www.google.cz",
- "www.google.de",
- "www.google.dj",
- "www.google.dk",
- "www.google.dm",
- "www.google.com.do",
- "www.google.dz",
- "www.google.com.ec",
- "www.google.ee",
- "www.google.com.eg",
- "www.google.es",
- "www.google.com.et",
- "www.google.fi",
- "www.google.com.fj",
- "www.google.fm",
- "www.google.fr",
- "www.google.ga",
- "www.google.gd",
- "www.google.ge",
- "www.google.gf",
- "www.google.gg",
- "www.google.com.gh",
- "www.google.com.gi",
- "www.google.gl",
- "www.google.gm",
- "www.google.gp",
- "www.google.gr",
- "www.google.com.gt",
- "www.google.gy",
- "www.google.com.hk",
- "www.google.hn",
- "www.google.hr",
- "www.google.ht",
- "www.google.hu",
- "www.google.co.id",
- "www.google.iq",
- "www.google.ie",
- "www.google.co.il",
- "www.google.im",
- "www.google.co.in",
- "www.google.io",
- "www.google.is",
- "www.google.it",
- "www.google.je",
- "www.google.com.jm",
- "www.google.jo",
- "www.google.co.jp",
- "www.google.co.ke",
- "www.google.com.kh",
- "www.google.ki",
- "www.google.kg",
- "www.google.co.kr",
- "www.google.com.kw",
- "www.google.kz",
- "www.google.la",
- "www.google.com.lb",
- "www.google.com.lc",
- "www.google.li",
- "www.google.lk",
- "www.google.co.ls",
- "www.google.lt",
- "www.google.lu",
- "www.google.lv",
- "www.google.com.ly",
- "www.google.co.ma",
- "www.google.md",
- "www.google.me",
- "www.google.mg",
- "www.google.mk",
- "www.google.ml",
- "www.google.mn",
- "www.google.ms",
- "www.google.com.mt",
- "www.google.mu",
- "www.google.mv",
- "www.google.mw",
- "www.google.com.mx",
- "www.google.com.my",
- "www.google.co.mz",
- "www.google.com.na",
- "www.google.ne",
- "www.google.com.nf",
- "www.google.com.ng",
- "www.google.com.ni",
- "www.google.nl",
- "www.google.no",
- "www.google.com.np",
- "www.google.nr",
- "www.google.nu",
- "www.google.co.nz",
- "www.google.com.om",
- "www.google.com.pa",
- "www.google.com.pe",
- "www.google.com.ph",
- "www.google.com.pk",
- "www.google.pl",
- "www.google.pn",
- "www.google.com.pr",
- "www.google.ps",
- "www.google.pt",
- "www.google.com.py",
- "www.google.com.qa",
- "www.google.ro",
- "www.google.rs",
- "www.google.ru",
- "www.google.rw",
- "www.google.com.sa",
- "www.google.com.sb",
- "www.google.sc",
- "www.google.se",
- "www.google.com.sg",
- "www.google.sh",
- "www.google.si",
- "www.google.sk",
- "www.google.com.sl",
- "www.google.sn",
- "www.google.sm",
- "www.google.so",
- "www.google.st",
- "www.google.com.sv",
- "www.google.td",
- "www.google.tg",
- "www.google.co.th",
- "www.google.com.tj",
- "www.google.tk",
- "www.google.tl",
- "www.google.tm",
- "www.google.to",
- "www.google.com.tn",
- "www.google.com.tr",
- "www.google.tt",
- "www.google.com.tw",
- "www.google.co.tz",
- "www.google.com.ua",
- "www.google.co.ug",
- "www.google.ae",
- "www.google.co.uk",
- "www.google.us",
- "www.google.com.uy",
- "www.google.co.uz",
- "www.google.com.vc",
- "www.google.co.ve",
- "www.google.vg",
- "www.google.co.vi",
- "www.google.com.vn",
- "www.google.vu",
- "www.google.ws",
- "www.google.co.za",
- "www.google.co.zm",
- "www.google.co.zw",
- "google.com",
- "google.ac",
- "google.ad",
- "google.com.af",
- "google.com.ag",
- "google.com.ai",
- "google.am",
- "google.it.ao",
- "google.com.ar",
- "google.as",
- "google.at",
- "google.com.au",
- "google.az",
- "google.ba",
- "google.com.bd",
- "google.be",
- "google.bf",
- "google.bg",
- "google.com.bh",
- "google.bi",
- "google.bj",
- "google.com.bn",
- "google.com.bo",
- "google.com.br",
- "google.bs",
- "google.co.bw",
- "google.com.by",
- "google.by",
- "google.com.bz",
- "google.ca",
- "google.com.kh",
- "google.cc",
- "google.cd",
- "google.cf",
- "google.cat",
- "google.cg",
- "google.ch",
- "google.ci",
- "google.co.ck",
- "google.cl",
- "google.cm",
- "google.cn",
- "google.com.co",
- "google.co.cr",
- "google.com.cu",
- "google.cv",
- "google.com.cy",
- "google.cz",
- "google.de",
- "google.dj",
- "google.dk",
- "google.dm",
- "google.com.do",
- "google.dz",
- "google.com.ec",
- "google.ee",
- "google.com.eg",
- "google.es",
- "google.com.et",
- "google.fi",
- "google.com.fj",
- "google.fm",
- "google.fr",
- "google.ga",
- "google.gd",
- "google.ge",
- "google.gf",
- "google.gg",
- "google.com.gh",
- "google.com.gi",
- "google.gl",
- "google.gm",
- "google.gp",
- "google.gr",
- "google.com.gt",
- "google.gy",
- "google.com.hk",
- "google.hn",
- "google.hr",
- "google.ht",
- "google.hu",
- "google.co.id",
- "google.iq",
- "google.ie",
- "google.co.il",
- "google.im",
- "google.co.in",
- "google.io",
- "google.is",
- "google.it",
- "google.je",
- "google.com.jm",
- "google.jo",
- "google.co.jp",
- "google.co.ke",
- "google.com.kh",
- "google.ki",
- "google.kg",
- "google.co.kr",
- "google.com.kw",
- "google.kz",
- "google.la",
- "google.com.lb",
- "google.com.lc",
- "google.li",
- "google.lk",
- "google.co.ls",
- "google.lt",
- "google.lu",
- "google.lv",
- "google.com.ly",
- "google.co.ma",
- "google.md",
- "google.me",
- "google.mg",
- "google.mk",
- "google.ml",
- "google.mn",
- "google.ms",
- "google.com.mt",
- "google.mu",
- "google.mv",
- "google.mw",
- "google.com.mx",
- "google.com.my",
- "google.co.mz",
- "google.com.na",
- "google.ne",
- "google.com.nf",
- "google.com.ng",
- "google.com.ni",
- "google.nl",
- "google.no",
- "google.com.np",
- "google.nr",
- "google.nu",
- "google.co.nz",
- "google.com.om",
- "google.com.pa",
- "google.com.pe",
- "google.com.ph",
- "google.com.pk",
- "google.pl",
- "google.pn",
- "google.com.pr",
- "google.ps",
- "google.pt",
- "google.com.py",
- "google.com.qa",
- "google.ro",
- "google.rs",
- "google.ru",
- "google.rw",
- "google.com.sa",
- "google.com.sb",
- "google.sc",
- "google.se",
- "google.com.sg",
- "google.sh",
- "google.si",
- "google.sk",
- "google.com.sl",
- "google.sn",
- "google.sm",
- "google.so",
- "google.st",
- "google.com.sv",
- "google.td",
- "google.tg",
- "google.co.th",
- "google.com.tj",
- "google.tk",
- "google.tl",
- "google.tm",
- "google.to",
- "google.com.tn",
- "google.com.tr",
- "google.tt",
- "google.com.tw",
- "google.co.tz",
- "google.com.ua",
- "google.co.ug",
- "google.ae",
- "google.co.uk",
- "google.us",
- "google.com.uy",
- "google.co.uz",
- "google.com.vc",
- "google.co.ve",
- "google.vg",
- "google.co.vi",
- "google.com.vn",
- "google.vu",
- "google.ws",
- "google.co.za",
- "google.co.zm",
- "google.co.zw",
- "search.avg.com",
- "isearch.avg.com",
- "www.cnn.com",
- "darkoogle.com",
- "search.darkoogle.com",
- "search.foxtab.com",
- "www.gooofullsearch.com",
- "search.hiyo.com",
- "search.incredimail.com",
- "search1.incredimail.com",
- "search2.incredimail.com",
- "search3.incredimail.com",
- "search4.incredimail.com",
- "search.incredibar.com",
- "search.sweetim.com",
- "www.fastweb.it",
- "search.juno.com",
- "find.tdc.dk",
- "searchresults.verizon.com",
- "search.walla.co.il",
- "search.alot.com",
- "www.googleearth.de",
- "www.googleearth.fr",
- "webcache.googleusercontent.com",
- "encrypted.google.com",
- "googlesyndicatedsearch.com"
- ],
- "parameters": [
- "q",
- "query",
- "Keywords"
- ]
- },
- "Google Blogsearch": {
- "domains": [
- "blogsearch.google.ac",
- "blogsearch.google.ad",
- "blogsearch.google.ae",
- "blogsearch.google.am",
- "blogsearch.google.as",
- "blogsearch.google.at",
- "blogsearch.google.az",
- "blogsearch.google.ba",
- "blogsearch.google.be",
- "blogsearch.google.bf",
- "blogsearch.google.bg",
- "blogsearch.google.bi",
- "blogsearch.google.bj",
- "blogsearch.google.bs",
- "blogsearch.google.by",
- "blogsearch.google.ca",
- "blogsearch.google.cat",
- "blogsearch.google.cc",
- "blogsearch.google.cd",
- "blogsearch.google.cf",
- "blogsearch.google.cg",
- "blogsearch.google.ch",
- "blogsearch.google.ci",
- "blogsearch.google.cl",
- "blogsearch.google.cm",
- "blogsearch.google.cn",
- "blogsearch.google.co.bw",
- "blogsearch.google.co.ck",
- "blogsearch.google.co.cr",
- "blogsearch.google.co.id",
- "blogsearch.google.co.il",
- "blogsearch.google.co.in",
- "blogsearch.google.co.jp",
- "blogsearch.google.co.ke",
- "blogsearch.google.co.kr",
- "blogsearch.google.co.ls",
- "blogsearch.google.co.ma",
- "blogsearch.google.co.mz",
- "blogsearch.google.co.nz",
- "blogsearch.google.co.th",
- "blogsearch.google.co.tz",
- "blogsearch.google.co.ug",
- "blogsearch.google.co.uk",
- "blogsearch.google.co.uz",
- "blogsearch.google.co.ve",
- "blogsearch.google.co.vi",
- "blogsearch.google.co.za",
- "blogsearch.google.co.zm",
- "blogsearch.google.co.zw",
- "blogsearch.google.com",
- "blogsearch.google.com.af",
- "blogsearch.google.com.ag",
- "blogsearch.google.com.ai",
- "blogsearch.google.com.ar",
- "blogsearch.google.com.au",
- "blogsearch.google.com.bd",
- "blogsearch.google.com.bh",
- "blogsearch.google.com.bn",
- "blogsearch.google.com.bo",
- "blogsearch.google.com.br",
- "blogsearch.google.com.by",
- "blogsearch.google.com.bz",
- "blogsearch.google.com.co",
- "blogsearch.google.com.cu",
- "blogsearch.google.com.cy",
- "blogsearch.google.com.do",
- "blogsearch.google.com.ec",
- "blogsearch.google.com.eg",
- "blogsearch.google.com.et",
- "blogsearch.google.com.fj",
- "blogsearch.google.com.gh",
- "blogsearch.google.com.gi",
- "blogsearch.google.com.gt",
- "blogsearch.google.com.hk",
- "blogsearch.google.com.jm",
- "blogsearch.google.com.kh",
- "blogsearch.google.com.kh",
- "blogsearch.google.com.kw",
- "blogsearch.google.com.lb",
- "blogsearch.google.com.lc",
- "blogsearch.google.com.ly",
- "blogsearch.google.com.mt",
- "blogsearch.google.com.mx",
- "blogsearch.google.com.my",
- "blogsearch.google.com.na",
- "blogsearch.google.com.nf",
- "blogsearch.google.com.ng",
- "blogsearch.google.com.ni",
- "blogsearch.google.com.np",
- "blogsearch.google.com.om",
- "blogsearch.google.com.pa",
- "blogsearch.google.com.pe",
- "blogsearch.google.com.ph",
- "blogsearch.google.com.pk",
- "blogsearch.google.com.pr",
- "blogsearch.google.com.py",
- "blogsearch.google.com.qa",
- "blogsearch.google.com.sa",
- "blogsearch.google.com.sb",
- "blogsearch.google.com.sg",
- "blogsearch.google.com.sl",
- "blogsearch.google.com.sv",
- "blogsearch.google.com.tj",
- "blogsearch.google.com.tn",
- "blogsearch.google.com.tr",
- "blogsearch.google.com.tw",
- "blogsearch.google.com.ua",
- "blogsearch.google.com.uy",
- "blogsearch.google.com.vc",
- "blogsearch.google.com.vn",
- "blogsearch.google.cv",
- "blogsearch.google.cz",
- "blogsearch.google.de",
- "blogsearch.google.dj",
- "blogsearch.google.dk",
- "blogsearch.google.dm",
- "blogsearch.google.dz",
- "blogsearch.google.ee",
- "blogsearch.google.es",
- "blogsearch.google.fi",
- "blogsearch.google.fm",
- "blogsearch.google.fr",
- "blogsearch.google.ga",
- "blogsearch.google.gd",
- "blogsearch.google.ge",
- "blogsearch.google.gf",
- "blogsearch.google.gg",
- "blogsearch.google.gl",
- "blogsearch.google.gm",
- "blogsearch.google.gp",
- "blogsearch.google.gr",
- "blogsearch.google.gy",
- "blogsearch.google.hn",
- "blogsearch.google.hr",
- "blogsearch.google.ht",
- "blogsearch.google.hu",
- "blogsearch.google.ie",
- "blogsearch.google.im",
- "blogsearch.google.io",
- "blogsearch.google.iq",
- "blogsearch.google.is",
- "blogsearch.google.it",
- "blogsearch.google.it.ao",
- "blogsearch.google.je",
- "blogsearch.google.jo",
- "blogsearch.google.kg",
- "blogsearch.google.ki",
- "blogsearch.google.kz",
- "blogsearch.google.la",
- "blogsearch.google.li",
- "blogsearch.google.lk",
- "blogsearch.google.lt",
- "blogsearch.google.lu",
- "blogsearch.google.lv",
- "blogsearch.google.md",
- "blogsearch.google.me",
- "blogsearch.google.mg",
- "blogsearch.google.mk",
- "blogsearch.google.ml",
- "blogsearch.google.mn",
- "blogsearch.google.ms",
- "blogsearch.google.mu",
- "blogsearch.google.mv",
- "blogsearch.google.mw",
- "blogsearch.google.ne",
- "blogsearch.google.nl",
- "blogsearch.google.no",
- "blogsearch.google.nr",
- "blogsearch.google.nu",
- "blogsearch.google.pl",
- "blogsearch.google.pn",
- "blogsearch.google.ps",
- "blogsearch.google.pt",
- "blogsearch.google.ro",
- "blogsearch.google.rs",
- "blogsearch.google.ru",
- "blogsearch.google.rw",
- "blogsearch.google.sc",
- "blogsearch.google.se",
- "blogsearch.google.sh",
- "blogsearch.google.si",
- "blogsearch.google.sk",
- "blogsearch.google.sm",
- "blogsearch.google.sn",
- "blogsearch.google.so",
- "blogsearch.google.st",
- "blogsearch.google.td",
- "blogsearch.google.tg",
- "blogsearch.google.tk",
- "blogsearch.google.tl",
- "blogsearch.google.tm",
- "blogsearch.google.to",
- "blogsearch.google.tt",
- "blogsearch.google.us",
- "blogsearch.google.vg",
- "blogsearch.google.vu",
- "blogsearch.google.ws"
- ],
- "parameters": [
- "q"
- ]
- },
- "Hooseek.com": {
- "domains": [
- "www.hooseek.com"
- ],
- "parameters": [
- "recherche"
- ]
- },
- "Dalesearch": {
- "domains": [
- "www.dalesearch.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Alice Adsl": {
- "domains": [
- "rechercher.aliceadsl.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "T-Online": {
- "domains": [
- "suche.t-online.de",
- "brisbane.t-online.de",
- "navigationshilfe.t-online.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "soso.com": {
- "domains": [
- "www.soso.com"
- ],
- "parameters": [
- "w"
- ]
- },
- "Sogou": {
- "domains": [
- "www.sougou.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Hit-Parade": {
- "domains": [
- "req.-hit-parade.com",
- "class.hit-parade.com",
- "www.hit-parade.com"
- ],
- "parameters": [
- "p7"
- ]
- },
- "SearchCanvas": {
- "domains": [
- "www.searchcanvas.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Interia": {
- "domains": [
- "www.google.interia.pl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Genieo": {
- "domains": [
- "search.genieo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Tiscali": {
- "domains": [
- "search.tiscali.it",
- "search-dyn.tiscali.it",
- "hledani.tiscali.cz"
- ],
- "parameters": [
- "q",
- "key"
- ]
- },
- "Clix": {
- "domains": [
- "pesquisa.clix.pt"
- ],
- "parameters": [
- "question"
- ]
- }
- },
- "email": {
- "Bigpond": {
- "domains": [
- "webmail.bigpond.com",
- "webmail2.bigpond.com"
- ]
- },
- "Naver Mail": {
- "domains": [
- "mail.naver.com"
- ]
- },
- "Optus Zoo": {
- "domains": [
- "webmail.optuszoo.com.au"
- ]
- },
- "Seznam Mail": {
- "domains": [
- "email.seznam.cz"
- ]
- },
- "126 Mail": {
- "domains": [
- "mail.126.com"
- ]
- },
- "Outlook.com": {
- "domains": [
- "mail.live.com"
- ]
- },
- "AOL Mail": {
- "domains": [
- "mail.aol.com"
- ]
- },
- "Daum Mail": {
- "domains": [
- "mail2.daum.net"
- ]
- },
- "Yahoo! Mail": {
- "domains": [
- "mail.yahoo.net",
- "mail.yahoo.com",
- "mail.yahoo.co.uk",
- "mail.yahoo.co.jp"
- ]
- },
- "163 Mail": {
- "domains": [
- "mail.163.com"
- ]
- },
- "Orange Webmail": {
- "domains": [
- "orange.fr/webmail"
- ]
- },
- "QQ Mail": {
- "domains": [
- "mail.qq.com"
- ]
- },
- "Mynet Mail": {
- "domains": [
- "mail.mynet.com"
- ]
- },
- "Gmail": {
- "domains": [
- "mail.google.com"
- ]
- }
- },
- "social": {
- "hi5": {
- "domains": [
- "hi5.com"
- ]
- },
- "Friendster": {
- "domains": [
- "friendster.com"
- ]
- },
- "Weibo": {
- "domains": [
- "weibo.com",
- "t.cn"
- ]
- },
- "Xanga": {
- "domains": [
- "xanga.com"
- ]
- },
- "Myspace": {
- "domains": [
- "myspace.com"
- ]
- },
- "Buzznet": {
- "domains": [
- "wayn.com"
- ]
- },
- "MyLife": {
- "domains": [
- "mylife.ru"
- ]
- },
- "Flickr": {
- "domains": [
- "flickr.com"
- ]
- },
- "Sonico.com": {
- "domains": [
- "sonico.com"
- ]
- },
- "Odnoklassniki": {
- "domains": [
- "odnoklassniki.ru"
- ]
- },
- "GitHub": {
- "domains": [
- "github.com"
- ]
- },
- "Classmates": {
- "domains": [
- "classmates.com"
- ]
- },
- "Friends Reunited": {
- "domains": [
- "friendsreunited.com"
- ]
- },
- "Renren": {
- "domains": [
- "renren.com"
- ]
- },
- "Quora": {
- "domains": [
- "quora.com"
- ]
- },
- "Gaia Online": {
- "domains": [
- "gaiaonline.com"
- ]
- },
- "Netlog": {
- "domains": [
- "netlog.com"
- ]
- },
- "Orkut": {
- "domains": [
- "orkut.com"
- ]
- },
- "MyHeritage": {
- "domains": [
- "myheritage.com"
- ]
- },
- "Multiply": {
- "domains": [
- "multiply.com"
- ]
- },
- "myYearbook": {
- "domains": [
- "myyearbook.com"
- ]
- },
- "WeeWorld": {
- "domains": [
- "weeworld.com"
- ]
- },
- "Vimeo": {
- "domains": [
- "vimeo.com"
- ]
- },
- "Eksi Sozluk": {
- "domains": [
- "Sozluk.com",
- "sourtimes.org"
- ]
- },
- "Geni": {
- "domains": [
- "geni.com"
- ]
- },
- "Uludag Sozluk": {
- "domains": [
- "uludagsozluk.com",
- "ulusozluk.com"
- ]
- },
- "SourceForge": {
- "domains": [
- "sourceforge.net"
- ]
- },
- "Plaxo": {
- "domains": [
- "plaxo.com"
- ]
- },
- "Taringa!": {
- "domains": [
- "taringa.net"
- ]
- },
- "Tagged": {
- "domains": [
- "login.tagged.com"
- ]
- },
- "XING": {
- "domains": [
- "xing.com"
- ]
- },
- "Instagram": {
- "domains": [
- "instagram.com"
- ]
- },
- "Vkontakte": {
- "domains": [
- "vk.com",
- "vkontakte.ru"
- ]
- },
- "Twitter": {
- "domains": [
- "twitter.com",
- "t.co"
- ]
- },
- "vKruguDruzei.ru": {
- "domains": [
- "vkrugudruzei.ru"
- ]
- },
- "Donanimhaber": {
- "domains": [
- "donanimhaber.com"
- ]
- },
- "WAYN": {
- "domains": [
- "wayn.com"
- ]
- },
- "Tuenti": {
- "domains": [
- "tuenti.com"
- ]
- },
- "Mail.ru": {
- "domains": [
- "my.mail.ru"
- ]
- },
- "Badoo": {
- "domains": [
- "badoo.com"
- ]
- },
- "Instela": {
- "domains": [
- "instela.com"
- ]
- },
- "Habbo": {
- "domains": [
- "habbo.com"
- ]
- },
- "Pinterest": {
- "domains": [
- "pinterest.com"
- ]
- },
- "LinkedIn": {
- "domains": [
- "linkedin.com",
- "lnkd.in"
- ]
- },
- "Foursquare": {
- "domains": [
- "foursquare.com"
- ]
- },
- "Flixster": {
- "domains": [
- "flixster.com"
- ]
- },
- "Windows Live Spaces": {
- "domains": [
- "login.live.com"
- ]
- },
- "BlackPlanet": {
- "domains": [
- "blackplanet.com"
- ]
- },
- "Cyworld": {
- "domains": [
- "global.cyworld.com"
- ]
- },
- "Pocket": {
- "domains": [
- "itusozluk.com"
- ],
- "ITU Sozluk": null
- },
- "Skyrock": {
- "domains": [
- "skyrock.com"
- ]
- },
- "Facebook": {
- "domains": [
- "facebook.com",
- "fb.me",
- "m.facebook.com",
- "l.facebook.com",
- "lm.facebook.com"
- ]
- },
- "Disqus": {
- "domains": [
- "redirect.disqus.com",
- "disq.us",
- "disqus.com"
- ]
- },
- "StudiVZ": {
- "domains": [
- "studivz.net"
- ]
- },
- "Fotolog": {
- "domains": [
- "fotolog.com"
- ]
- },
- "Google+": {
- "domains": [
- "url.google.com",
- "plus.google.com"
- ]
- },
- "Nasza-klasa.pl": {
- "domains": [
- "nk.pl"
- ]
- },
- "Qzone": {
- "domains": [
- "qzone.qq.com"
- ]
- },
- "Douban": {
- "domains": [
- "douban.com"
- ]
- },
- "Bebo": {
- "domains": [
- "bebo.com"
- ]
- },
- "Youtube": {
- "domains": [
- "youtube.com",
- "youtu.be"
- ]
- },
- "Reddit": {
- "domains": [
- "reddit.com"
- ]
- },
- "Identi.ca": {
- "domains": [
- "identi.ca"
- ]
- },
- "StackOverflow": {
- "domains": [
- "stackoverflow.com"
- ]
- },
- "Mixi": {
- "domains": [
- "mixi.jp"
- ]
- },
- "StumbleUpon": {
- "domains": [
- "stumbleupon.com"
- ]
- },
- "Inci Sozluk": {
- "domains": [
- "inci.sozlukspot.com",
- "incisozluk.com",
- "incisozluk.cc"
- ]
- },
- "Viadeo": {
- "domains": [
- "viadeo.com"
- ]
- },
- "Last.fm": {
- "domains": [
- "lastfm.ru"
- ]
- },
- "LiveJournal": {
- "domains": [
- "livejournal.ru"
- ]
- },
- "Tumblr": {
- "domains": [
- "tumblr.com"
- ]
- },
- "Hacker News": {
- "domains": [
- "news.ycombinator.com"
- ]
- },
- "Hocam.com": {
- "domains": [
- "hocam.com"
- ]
- },
- "Delicious": {
- "domains": [
- "delicious.com"
- ]
- },
- "Hyves": {
- "domains": [
- "hyves.nl"
- ]
- },
- "Paper.li": {
- "domains": [
- "paper.li"
- ]
- },
- "MoiKrug.ru": {
- "domains": [
- "moikrug.ru"
- ]
- }
- }
-}
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/python/referer_parser/data/referers.yml b/vendor/snowplow/referer-parser/python/referer_parser/data/referers.yml
deleted file mode 100644
index e1ecf54f7..000000000
--- a/vendor/snowplow/referer-parser/python/referer_parser/data/referers.yml
+++ /dev/null
@@ -1,3621 +0,0 @@
-# #######################################################################################################
-#
-# ALL SUPPORTED REFERERS
-#
-# Broken down into:
-#
-# 1. Medium-unknown providers
-# 2. Email providers
-# 3. Social providers
-# 4. Search providers
-
-
-# #######################################################################################################
-#
-# MEDIUM-UNKNOWN PROVIDERS
-#
-# We know the source, but not the medium.
-# This section is useful for reducing false positives in the other sections
-
-unknown:
-
- Google:
- domains:
- - support.google.com
- - developers.google.com
- - maps.google.com
- - accounts.google.com
- - drive.google.com
- - sites.google.com
- - groups.google.com
- - groups.google.co.uk
- - news.google.co.uk
-
- Yahoo!:
- domains:
- - finance.yahoo.com
- - news.yahoo.com
- - eurosport.yahoo.com
- - sports.yahoo.com
- - astrology.yahoo.com
- - travel.yahoo.com
- - answers.yahoo.com
- - screen.yahoo.com
- - weather.yahoo.com
- - messenger.yahoo.com
- - games.yahoo.com
- - shopping.yahoo.net
- - movies.yahoo.com
- - cars.yahoo.com
- - lifestyle.yahoo.com
- - omg.yahoo.com
- - match.yahoo.net
-
- Taboola:
- domains:
- - trc.taboola.com
- - api.taboola.com
-
- Outbrain:
- domains:
- - paid.outbrain.com
-
-
-# #######################################################################################################
-#
-# EMAIL PROVIDERS
-
-email:
-
- 126 Mail:
- domains:
- - mail.126.com
-
- 163 Mail:
- domains:
- - mail.163.com
-
- AOL Mail:
- domains:
- - mail.aol.com
-
- Bigpond:
- domains:
- - webmail.bigpond.com
- - webmail2.bigpond.com
-
- Daum Mail:
- domains:
- - mail2.daum.net
-
- Gmail:
- domains:
- - mail.google.com
-
- Naver Mail:
- domains:
- - mail.naver.com
-
- Optus Zoo:
- domains:
- - webmail.optuszoo.com.au
-
- Orange Webmail:
- domains:
- - orange.fr/webmail
-
- Outlook.com:
- domains:
- - mail.live.com
-
- QQ Mail:
- domains:
- - mail.qq.com
-
- Seznam Mail:
- domains:
- - email.seznam.cz
-
- Yahoo! Mail:
- domains:
- - mail.yahoo.net
- - mail.yahoo.com
- - mail.yahoo.co.uk
- - mail.yahoo.co.jp
-
- Mynet Mail:
- domains:
- - mail.mynet.com
-
-
-# #######################################################################################################
-#
-# SOCIAL PROVIDERS
-
-social:
-
- Facebook:
- domains:
- - facebook.com
- - fb.me
- - m.facebook.com
- - l.facebook.com
- - lm.facebook.com
-
- Qzone:
- domains:
- - qzone.qq.com
-
- Habbo:
- domains:
- - habbo.com
-
- Twitter:
- domains:
- - twitter.com
- - t.co
-
- Instagram:
- domains:
- - instagram.com
-
- Youtube:
- domains:
- - youtube.com
- - youtu.be
-
- Vimeo:
- domains:
- - vimeo.com
-
- Renren:
- domains:
- - renren.com
-
- Windows Live Spaces:
- domains:
- - login.live.com
-
- LinkedIn:
- domains:
- - linkedin.com
- - lnkd.in
-
- Bebo:
- domains:
- - bebo.com
-
- Vkontakte:
- domains:
- - vk.com
- - vkontakte.ru
-
- Tagged:
- domains:
- - login.tagged.com
-
- Orkut:
- domains:
- - orkut.com
-
- Myspace:
- domains:
- - myspace.com
-
- Friendster:
- domains:
- - friendster.com
-
- Badoo:
- domains:
- - badoo.com
-
- hi5:
- domains:
- - hi5.com
-
- Netlog:
- domains:
- - netlog.com
-
- Flixster:
- domains:
- - flixster.com
-
- MyLife:
- domains:
- - mylife.ru
-
- Paper.li:
- domains:
- - paper.li
-
- Classmates:
- domains:
- - classmates.com
-
- GitHub:
- domains:
- - github.com
-
- Google+:
- domains:
- - url.google.com
- - plus.google.com
-
- Douban:
- domains:
- - douban.com
-
- Odnoklassniki:
- domains:
- - odnoklassniki.ru
-
- Viadeo:
- domains:
- - viadeo.com
-
- Flickr:
- domains:
- - flickr.com
-
- WeeWorld:
- domains:
- - weeworld.com
-
- Last.fm:
- domains:
- - lastfm.ru
-
- MyHeritage:
- domains:
- - myheritage.com
-
- Xanga:
- domains:
- - xanga.com
-
- Mixi:
- domains:
- - mixi.jp
-
- Cyworld:
- domains:
- - global.cyworld.com
-
- Gaia Online:
- domains:
- - gaiaonline.com
-
- Skyrock:
- domains:
- - skyrock.com
-
- BlackPlanet:
- domains:
- - blackplanet.com
-
- myYearbook:
- domains:
- - myyearbook.com
-
- Fotolog:
- domains:
- - fotolog.com
-
- Friends Reunited:
- domains:
- - friendsreunited.com
-
- LiveJournal:
- domains:
- - livejournal.ru
-
- StudiVZ:
- domains:
- - studivz.net
-
- StackOverflow:
- domains:
- - stackoverflow.com
-
- Sonico.com:
- domains:
- - sonico.com
-
- Pinterest:
- domains:
- - pinterest.com
-
- Plaxo:
- domains:
- - plaxo.com
-
- Geni:
- domains:
- - geni.com
-
- Tuenti:
- domains:
- - tuenti.com
-
- XING:
- domains:
- - xing.com
-
- Taringa!:
- domains:
- - taringa.net
-
- Tumblr:
- domains:
- - tumblr.com
-
- Nasza-klasa.pl:
- domains:
- - nk.pl
-
- StumbleUpon:
- domains:
- - stumbleupon.com
-
- SourceForge:
- domains:
- - sourceforge.net
-
- Hyves:
- domains:
- - hyves.nl
-
- WAYN:
- domains:
- - wayn.com
-
- Buzznet:
- domains:
- - wayn.com
-
- Multiply:
- domains:
- - multiply.com
-
- Foursquare:
- domains:
- - foursquare.com
-
- vKruguDruzei.ru:
- domains:
- - vkrugudruzei.ru
-
- Mail.ru:
- domains:
- - my.mail.ru
-
- MoiKrug.ru:
- domains:
- - moikrug.ru
-
- Reddit:
- domains:
- - reddit.com
-
- Hacker News:
- domains:
- - news.ycombinator.com
-
- Identi.ca:
- domains:
- - identi.ca
-
- Weibo:
- domains:
- - weibo.com
- - t.cn
-
- Delicious:
- domains:
- - delicious.com
-
- Pocket:
- domains:
- - getpocket.com
-
- ITU Sozluk:
- domains:
- - itusozluk.com
-
- Instela:
- domains:
- - instela.com
-
- Eksi Sozluk:
- domains:
- - Sozluk.com
- - sourtimes.org
-
- Uludag Sozluk:
- domains:
- - uludagsozluk.com
- - ulusozluk.com
-
- Inci Sozluk:
- domains:
- - inci.sozlukspot.com
- - incisozluk.com
- - incisozluk.cc
-
- Hocam.com:
- domains:
- - hocam.com
-
- Donanimhaber:
- domains:
- - donanimhaber.com
-
- Disqus:
- domains:
- - redirect.disqus.com
- - disq.us
- - disqus.com
-
- Quora:
- domains:
- - quora.com
-
-# #######################################################################################################
-#
-# SEARCH PROVIDERS
-
-search:
-
- 1.cz:
- parameters:
- - q
- domains:
- - 1.cz
-
- # 123people TODO
-
- 1und1:
- parameters:
- - su
- domains:
- - search.1und1.de
-
- 360.cn:
- parameters:
- - q
- domains:
- - so.360.cn
- - www.so.com
-
- Abacho:
- parameters:
- - q
- domains:
- - www.abacho.de
- - www.abacho.com
- - www.abacho.co.uk
- - www.se.abacho.com
- - www.tr.abacho.com
- - www.abacho.at
- - www.abacho.fr
- - www.abacho.es
- - www.abacho.ch
- - www.abacho.it
-
- ABCsøk:
- parameters:
- - q
- domains:
- - abcsolk.no
- - verden.abcsok.no
-
- Acoon:
- parameters:
- - begriff
- domains:
- - www.acoon.de
-
- Alexa:
- parameters:
- - q
- domains:
- - alexa.com
- - search.toolbars.alexa.com
-
- Alice Adsl:
- parameters:
- - q
- domains:
- - rechercher.aliceadsl.fr
-
- AllTheWeb:
- parameters:
- - q
- domains:
- - www.alltheweb.com
-
- all.by:
- parameters:
- - query
- domains:
- - all.by
-
- Altavista:
- parameters:
- - q
- domains:
- - www.altavista.com
- - search.altavista.com
- - listings.altavista.com
- - altavista.de
- - altavista.fr
- - be-nl.altavista.com
- - be-fr.altavista.com
-
- Amazon:
- parameters:
- - keywords
- domains:
- - amazon.com
- - www.amazon.com
-
- AOL:
- parameters:
- - q
- - query
- domains:
- - search.aol.com
- - search.aol.it
- - aolsearch.aol.com
- - aolsearch.com
- - www.aolrecherche.aol.fr
- - www.aolrecherches.aol.fr
- - www.aolimages.aol.fr
- - aim.search.aol.com
- - www.recherche.aol.fr
- - find.web.aol.com
- - recherche.aol.ca
- - aolsearch.aol.co.uk
- - search.aol.co.uk
- - aolrecherche.aol.fr
- - sucheaol.aol.de
- - suche.aol.de
- - suche.aolsvc.de
- - aolbusqueda.aol.com.mx
- - alicesuche.aol.de
- - alicesuchet.aol.de
- - suchet2.aol.de
- - search.hp.my.aol.com.au
- - search.hp.my.aol.de
- - search.hp.my.aol.it
- - search-intl.netscape.com
-
- Apollo Latvia:
- parameters:
- - q
- domains:
- - apollo.lv/portal/search/
-
- APOLL07:
- parameters:
- - query
- domains:
- - apollo7.de
-
- Apontador:
- parameters:
- - q
- domains:
- - apontador.com.br
- - www.apontador.com.br
-
- Aport:
- parameters:
- - r
- domains:
- - sm.aport.ru
-
- arama:
- parameters:
- - q
- domains:
- - arama.com
-
- Arcor:
- parameters:
- - Keywords
- domains:
- - www.arcor.de
-
- Arianna:
- parameters:
- - query
- domains:
- - arianna.libero.it
- - www.arianna.com
-
- Ask:
- parameters:
- - q
- domains:
- - ask.com
- - www.ask.com
- - web.ask.com
- - int.ask.com
- - mws.ask.com
- - uk.ask.com
- - images.ask.com
- - ask.reference.com
- - www.askkids.com
- - iwon.ask.com
- - www.ask.co.uk
- - www.qbyrd.com
- - search-results.com
- - uk.search-results.com
- - www.search-results.com
- - int.search-results.com
-
- Ask Toolbar:
- parameters:
- - searchfor
- domains:
- - search.tb.ask.com
-
- Atlas:
- parameters:
- - q
- domains:
- - searchatlas.centrum.cz
-
- Austronaut:
- parameters:
- - q
- domains:
- - www2.austronaut.at
- - www1.astronaut.at
-
- Babylon:
- parameters:
- - q
- domains:
- - search.babylon.com
- - searchassist.babylon.com
-
- Baidu:
- parameters:
- - wd
- - word
- - kw
- - k
- domains:
- - www.baidu.com
- - www1.baidu.com
- - zhidao.baidu.com
- - tieba.baidu.com
- - news.baidu.com
- - web.gougou.com
-
- Biglobe:
- parameters:
- - q
- domains:
- - cgi.search.biglobe.ne.jp
-
- Bing:
- parameters:
- - q
- - Q
- domains:
- - bing.com
- - www.bing.com
- - msnbc.msn.com
- - dizionario.it.msn.com
- - cc.bingj.com
- - m.bing.com
-
- Bing Images:
- parameters:
- - q
- - Q
- domains:
- - bing.com/images/search
- - www.bing.com/images/search
-
- blekko:
- parameters:
- - q
- domains:
- - blekko.com
-
- Blogdigger:
- parameters:
- - q
- domains:
- - www.blogdigger.com
-
- Blogpulse:
- parameters:
- - query
- domains:
- - www.blogpulse.com
-
- Bluewin:
- parameters:
- - searchTerm
- domains:
- - search.bluewin.ch
-
- canoe.ca:
- parameters:
- - q
- domains:
- - web.canoe.ca
-
- Centrum:
- parameters:
- - q
- domains:
- - serach.centrum.cz
- - morfeo.centrum.cz
-
- Certified-Toolbar:
- parameters:
- - q
- domains:
- - search.certified-toolbar.com
-
- Charter:
- parameters:
- - q
- domains:
- - www.charter.net
-
- Clix:
- parameters:
- - question
- domains:
- - pesquisa.clix.pt
-
- Comcast:
- parameters:
- - q
- domains:
- - search.comcast.net
-
- Conduit:
- parameters:
- - q
- domains:
- - search.conduit.com
-
- Comcast:
- parameters:
- - q
- domains:
- - serach.comcast.net
-
- Crawler:
- parameters:
- - q
- domains:
- - www.crawler.com
-
- Compuserve:
- parameters:
- - query
- domains:
- - websearch.cs.com
-
- Cuil:
- parameters:
- - q
- domains:
- - www.cuil.com
-
- Daemon search:
- parameters:
- - q
- domains:
- - daemon-search.com
- - my.daemon-search.com
-
- Dalesearch:
- parameters:
- - q
- domains:
- - www.dalesearch.com
-
- DasOertliche:
- parameters:
- - kw
- domains:
- - www.dasoertliche.de
-
- DasTelefonbuch:
- parameters:
- - kw
- domains:
- - www1.dastelefonbuch.de
-
- Daum:
- parameters:
- - q
- domains:
- - search.daum.net
-
- Delfi latvia:
- parameters:
- - q
- domains:
- - smart.delfi.lv
-
- Delfi:
- parameters:
- - q
- domains:
- - otsing.delfi.ee
-
- Digg:
- parameters:
- - s
- domains:
- - digg.com
-
- dmoz:
- parameters:
- - q
- domains:
- - dmoz.org
- - editors.dmoz.org
-
- DuckDuckGo:
- parameters:
- - q
- domains:
- - duckduckgo.com
-
- earthlink:
- parameters:
- - q
- domains:
- - search.earthlink.net
-
- Ecosia:
- parameters:
- - q
- domains:
- - ecosia.org
-
- Eniro:
- parameters:
- - q
- - search_word
- domains:
- - www.eniro.se
-
- Eurip:
- parameters:
- - q
- domains:
- - www.eurip.com
-
- Euroseek:
- parameters:
- - string
- domains:
- - www.euroseek.com
-
- Everyclick:
- parameters:
- - keyword
- domains:
- - www.everyclick.com
-
- Excite:
- parameters:
- - q
- - search
- domains:
- - search.excite.it
- - search.excite.fr
- - search.excite.de
- - search.excite.co.uk
- - serach.excite.es
- - search.excite.nl
- - msxml.excite.com
- - www.excite.co.jp
-
- Exalead:
- parameters:
- - q
- domains:
- - www.exalead.fr
- - www.exalead.com
-
- eo:
- parameters:
- - x_query
- domains:
- - eo.st
-
- Fast Browser Search:
- parameters:
- - q
- domains:
- - www.fastbrowsersearch.com
-
- Francite:
- parameters:
- - name
- domains:
- - recherche.francite.com
-
- Findwide:
- parameters:
- - k
- domains:
- - search.findwide.com
-
- Fireball:
- parameters:
- - q
- domains:
- - www.fireball.de
-
- Firstfind:
- parameters:
- - qry
- domains:
- - www.firstsfind.com
-
- Fixsuche:
- parameters:
- - q
- domains:
- - www.fixsuche.de
-
- Flix:
- parameters:
- - keyword
- domains:
- - www.flix.de
-
- Forestle:
- parameters:
- - q
- domains:
- - forestle.org
- - www.forestle.org
- - forestle.mobi
-
- Free:
- parameters:
- - q
- domains:
- - search.free.fr
- - search1-2.free.fr
- - search1-1.free.fr
-
- Freecause:
- parameters:
- - p
- domains:
- - search.freecause.com
-
- Freenet:
- parameters:
- - query
- - Keywords
- domains:
- - suche.freenet.de
-
- Freshweather:
- parameters:
- - q
- domains:
- - www.fresh-weather.com
-
- FriendFeed:
- parameters:
- - q
- domains:
- - friendfeed.com
-
- GAIS:
- parameters:
- - q
- domains:
- - gais.cs.ccu.edu.tw
-
- Geona:
- parameters:
- - q
- domains:
- - geona.net
-
- Genieo:
- parameters:
- - q
- domains:
- - search.genieo.com
-
- Gigablast:
- parameters:
- - q
- domains:
- - www.gigablast.com
- - dir.gigablast.com
-
- Globososo:
- parameters:
- - q
- domains:
- - searches.globososo.com
- - search.globososo.com
-
- GMX:
- parameters:
- - su
- domains:
- - suche.gmx.net
-
- Gnadenmeer:
- parameters:
- - keyword
- domains:
- - www.gnadenmeer.de
-
- Gomeo:
- parameters:
- - Keywords
- domains:
- - www.gomeo.com
-
- goo:
- parameters:
- - MT
- domains:
- - search.goo.ne.jp
- - ocnsearch.goo.ne.jp
-
- Google:
- parameters:
- - q
- - query # For www.cnn.com (powered by Google)
- - Keywords # For gooofullsearch.com (powered by Google)
- domains:
- - www.google.com
- - www.google.ac
- - www.google.ad
- - www.google.com.af
- - www.google.com.ag
- - www.google.com.ai
- - www.google.am
- - www.google.it.ao
- - www.google.com.ar
- - www.google.as
- - www.google.at
- - www.google.com.au
- - www.google.az
- - www.google.ba
- - www.google.com.bd
- - www.google.be
- - www.google.bf
- - www.google.bg
- - www.google.com.bh
- - www.google.bi
- - www.google.bj
- - www.google.com.bn
- - www.google.com.bo
- - www.google.com.br
- - www.google.bs
- - www.google.co.bw
- - www.google.com.by
- - www.google.by
- - www.google.com.bz
- - www.google.ca
- - www.google.com.kh
- - www.google.cc
- - www.google.cd
- - www.google.cf
- - www.google.cat
- - www.google.cg
- - www.google.ch
- - www.google.ci
- - www.google.co.ck
- - www.google.cl
- - www.google.cm
- - www.google.cn
- - www.google.com.co
- - www.google.co.cr
- - www.google.com.cu
- - www.google.cv
- - www.google.com.cy
- - www.google.cz
- - www.google.de
- - www.google.dj
- - www.google.dk
- - www.google.dm
- - www.google.com.do
- - www.google.dz
- - www.google.com.ec
- - www.google.ee
- - www.google.com.eg
- - www.google.es
- - www.google.com.et
- - www.google.fi
- - www.google.com.fj
- - www.google.fm
- - www.google.fr
- - www.google.ga
- - www.google.gd
- - www.google.ge
- - www.google.gf
- - www.google.gg
- - www.google.com.gh
- - www.google.com.gi
- - www.google.gl
- - www.google.gm
- - www.google.gp
- - www.google.gr
- - www.google.com.gt
- - www.google.gy
- - www.google.com.hk
- - www.google.hn
- - www.google.hr
- - www.google.ht
- - www.google.hu
- - www.google.co.id
- - www.google.iq
- - www.google.ie
- - www.google.co.il
- - www.google.im
- - www.google.co.in
- - www.google.io
- - www.google.is
- - www.google.it
- - www.google.je
- - www.google.com.jm
- - www.google.jo
- - www.google.co.jp
- - www.google.co.ke
- - www.google.com.kh
- - www.google.ki
- - www.google.kg
- - www.google.co.kr
- - www.google.com.kw
- - www.google.kz
- - www.google.la
- - www.google.com.lb
- - www.google.com.lc
- - www.google.li
- - www.google.lk
- - www.google.co.ls
- - www.google.lt
- - www.google.lu
- - www.google.lv
- - www.google.com.ly
- - www.google.co.ma
- - www.google.md
- - www.google.me
- - www.google.mg
- - www.google.mk
- - www.google.ml
- - www.google.mn
- - www.google.ms
- - www.google.com.mt
- - www.google.mu
- - www.google.mv
- - www.google.mw
- - www.google.com.mx
- - www.google.com.my
- - www.google.co.mz
- - www.google.com.na
- - www.google.ne
- - www.google.com.nf
- - www.google.com.ng
- - www.google.com.ni
- - www.google.nl
- - www.google.no
- - www.google.com.np
- - www.google.nr
- - www.google.nu
- - www.google.co.nz
- - www.google.com.om
- - www.google.com.pa
- - www.google.com.pe
- - www.google.com.ph
- - www.google.com.pk
- - www.google.pl
- - www.google.pn
- - www.google.com.pr
- - www.google.ps
- - www.google.pt
- - www.google.com.py
- - www.google.com.qa
- - www.google.ro
- - www.google.rs
- - www.google.ru
- - www.google.rw
- - www.google.com.sa
- - www.google.com.sb
- - www.google.sc
- - www.google.se
- - www.google.com.sg
- - www.google.sh
- - www.google.si
- - www.google.sk
- - www.google.com.sl
- - www.google.sn
- - www.google.sm
- - www.google.so
- - www.google.st
- - www.google.com.sv
- - www.google.td
- - www.google.tg
- - www.google.co.th
- - www.google.com.tj
- - www.google.tk
- - www.google.tl
- - www.google.tm
- - www.google.to
- - www.google.com.tn
- - www.google.com.tr
- - www.google.tt
- - www.google.com.tw
- - www.google.co.tz
- - www.google.com.ua
- - www.google.co.ug
- - www.google.ae
- - www.google.co.uk
- - www.google.us
- - www.google.com.uy
- - www.google.co.uz
- - www.google.com.vc
- - www.google.co.ve
- - www.google.vg
- - www.google.co.vi
- - www.google.com.vn
- - www.google.vu
- - www.google.ws
- - www.google.co.za
- - www.google.co.zm
- - www.google.co.zw
- - google.com
- - google.ac
- - google.ad
- - google.com.af
- - google.com.ag
- - google.com.ai
- - google.am
- - google.it.ao
- - google.com.ar
- - google.as
- - google.at
- - google.com.au
- - google.az
- - google.ba
- - google.com.bd
- - google.be
- - google.bf
- - google.bg
- - google.com.bh
- - google.bi
- - google.bj
- - google.com.bn
- - google.com.bo
- - google.com.br
- - google.bs
- - google.co.bw
- - google.com.by
- - google.by
- - google.com.bz
- - google.ca
- - google.com.kh
- - google.cc
- - google.cd
- - google.cf
- - google.cat
- - google.cg
- - google.ch
- - google.ci
- - google.co.ck
- - google.cl
- - google.cm
- - google.cn
- - google.com.co
- - google.co.cr
- - google.com.cu
- - google.cv
- - google.com.cy
- - google.cz
- - google.de
- - google.dj
- - google.dk
- - google.dm
- - google.com.do
- - google.dz
- - google.com.ec
- - google.ee
- - google.com.eg
- - google.es
- - google.com.et
- - google.fi
- - google.com.fj
- - google.fm
- - google.fr
- - google.ga
- - google.gd
- - google.ge
- - google.gf
- - google.gg
- - google.com.gh
- - google.com.gi
- - google.gl
- - google.gm
- - google.gp
- - google.gr
- - google.com.gt
- - google.gy
- - google.com.hk
- - google.hn
- - google.hr
- - google.ht
- - google.hu
- - google.co.id
- - google.iq
- - google.ie
- - google.co.il
- - google.im
- - google.co.in
- - google.io
- - google.is
- - google.it
- - google.je
- - google.com.jm
- - google.jo
- - google.co.jp
- - google.co.ke
- - google.com.kh
- - google.ki
- - google.kg
- - google.co.kr
- - google.com.kw
- - google.kz
- - google.la
- - google.com.lb
- - google.com.lc
- - google.li
- - google.lk
- - google.co.ls
- - google.lt
- - google.lu
- - google.lv
- - google.com.ly
- - google.co.ma
- - google.md
- - google.me
- - google.mg
- - google.mk
- - google.ml
- - google.mn
- - google.ms
- - google.com.mt
- - google.mu
- - google.mv
- - google.mw
- - google.com.mx
- - google.com.my
- - google.co.mz
- - google.com.na
- - google.ne
- - google.com.nf
- - google.com.ng
- - google.com.ni
- - google.nl
- - google.no
- - google.com.np
- - google.nr
- - google.nu
- - google.co.nz
- - google.com.om
- - google.com.pa
- - google.com.pe
- - google.com.ph
- - google.com.pk
- - google.pl
- - google.pn
- - google.com.pr
- - google.ps
- - google.pt
- - google.com.py
- - google.com.qa
- - google.ro
- - google.rs
- - google.ru
- - google.rw
- - google.com.sa
- - google.com.sb
- - google.sc
- - google.se
- - google.com.sg
- - google.sh
- - google.si
- - google.sk
- - google.com.sl
- - google.sn
- - google.sm
- - google.so
- - google.st
- - google.com.sv
- - google.td
- - google.tg
- - google.co.th
- - google.com.tj
- - google.tk
- - google.tl
- - google.tm
- - google.to
- - google.com.tn
- - google.com.tr
- - google.tt
- - google.com.tw
- - google.co.tz
- - google.com.ua
- - google.co.ug
- - google.ae
- - google.co.uk
- - google.us
- - google.com.uy
- - google.co.uz
- - google.com.vc
- - google.co.ve
- - google.vg
- - google.co.vi
- - google.com.vn
- - google.vu
- - google.ws
- - google.co.za
- - google.co.zm
- - google.co.zw
- # powered by Google
- - search.avg.com
- - isearch.avg.com
- - www.cnn.com
- - darkoogle.com
- - search.darkoogle.com
- - search.foxtab.com
- - www.gooofullsearch.com
- - search.hiyo.com
- - search.incredimail.com
- - search1.incredimail.com
- - search2.incredimail.com
- - search3.incredimail.com
- - search4.incredimail.com
- - search.incredibar.com
- - search.sweetim.com
- - www.fastweb.it
- - search.juno.com
- - find.tdc.dk
- - searchresults.verizon.com
- - search.walla.co.il
- - search.alot.com
- # Google Earch
- - www.googleearth.de
- - www.googleearth.fr
- # Google Cache
- - webcache.googleusercontent.com
- # Google SSL
- - encrypted.google.com
- # Syndicated search
- - googlesyndicatedsearch.com
-
- Google Blogsearch:
- parameters:
- - q
- domains:
- - blogsearch.google.ac
- - blogsearch.google.ad
- - blogsearch.google.ae
- - blogsearch.google.am
- - blogsearch.google.as
- - blogsearch.google.at
- - blogsearch.google.az
- - blogsearch.google.ba
- - blogsearch.google.be
- - blogsearch.google.bf
- - blogsearch.google.bg
- - blogsearch.google.bi
- - blogsearch.google.bj
- - blogsearch.google.bs
- - blogsearch.google.by
- - blogsearch.google.ca
- - blogsearch.google.cat
- - blogsearch.google.cc
- - blogsearch.google.cd
- - blogsearch.google.cf
- - blogsearch.google.cg
- - blogsearch.google.ch
- - blogsearch.google.ci
- - blogsearch.google.cl
- - blogsearch.google.cm
- - blogsearch.google.cn
- - blogsearch.google.co.bw
- - blogsearch.google.co.ck
- - blogsearch.google.co.cr
- - blogsearch.google.co.id
- - blogsearch.google.co.il
- - blogsearch.google.co.in
- - blogsearch.google.co.jp
- - blogsearch.google.co.ke
- - blogsearch.google.co.kr
- - blogsearch.google.co.ls
- - blogsearch.google.co.ma
- - blogsearch.google.co.mz
- - blogsearch.google.co.nz
- - blogsearch.google.co.th
- - blogsearch.google.co.tz
- - blogsearch.google.co.ug
- - blogsearch.google.co.uk
- - blogsearch.google.co.uz
- - blogsearch.google.co.ve
- - blogsearch.google.co.vi
- - blogsearch.google.co.za
- - blogsearch.google.co.zm
- - blogsearch.google.co.zw
- - blogsearch.google.com
- - blogsearch.google.com.af
- - blogsearch.google.com.ag
- - blogsearch.google.com.ai
- - blogsearch.google.com.ar
- - blogsearch.google.com.au
- - blogsearch.google.com.bd
- - blogsearch.google.com.bh
- - blogsearch.google.com.bn
- - blogsearch.google.com.bo
- - blogsearch.google.com.br
- - blogsearch.google.com.by
- - blogsearch.google.com.bz
- - blogsearch.google.com.co
- - blogsearch.google.com.cu
- - blogsearch.google.com.cy
- - blogsearch.google.com.do
- - blogsearch.google.com.ec
- - blogsearch.google.com.eg
- - blogsearch.google.com.et
- - blogsearch.google.com.fj
- - blogsearch.google.com.gh
- - blogsearch.google.com.gi
- - blogsearch.google.com.gt
- - blogsearch.google.com.hk
- - blogsearch.google.com.jm
- - blogsearch.google.com.kh
- - blogsearch.google.com.kh
- - blogsearch.google.com.kw
- - blogsearch.google.com.lb
- - blogsearch.google.com.lc
- - blogsearch.google.com.ly
- - blogsearch.google.com.mt
- - blogsearch.google.com.mx
- - blogsearch.google.com.my
- - blogsearch.google.com.na
- - blogsearch.google.com.nf
- - blogsearch.google.com.ng
- - blogsearch.google.com.ni
- - blogsearch.google.com.np
- - blogsearch.google.com.om
- - blogsearch.google.com.pa
- - blogsearch.google.com.pe
- - blogsearch.google.com.ph
- - blogsearch.google.com.pk
- - blogsearch.google.com.pr
- - blogsearch.google.com.py
- - blogsearch.google.com.qa
- - blogsearch.google.com.sa
- - blogsearch.google.com.sb
- - blogsearch.google.com.sg
- - blogsearch.google.com.sl
- - blogsearch.google.com.sv
- - blogsearch.google.com.tj
- - blogsearch.google.com.tn
- - blogsearch.google.com.tr
- - blogsearch.google.com.tw
- - blogsearch.google.com.ua
- - blogsearch.google.com.uy
- - blogsearch.google.com.vc
- - blogsearch.google.com.vn
- - blogsearch.google.cv
- - blogsearch.google.cz
- - blogsearch.google.de
- - blogsearch.google.dj
- - blogsearch.google.dk
- - blogsearch.google.dm
- - blogsearch.google.dz
- - blogsearch.google.ee
- - blogsearch.google.es
- - blogsearch.google.fi
- - blogsearch.google.fm
- - blogsearch.google.fr
- - blogsearch.google.ga
- - blogsearch.google.gd
- - blogsearch.google.ge
- - blogsearch.google.gf
- - blogsearch.google.gg
- - blogsearch.google.gl
- - blogsearch.google.gm
- - blogsearch.google.gp
- - blogsearch.google.gr
- - blogsearch.google.gy
- - blogsearch.google.hn
- - blogsearch.google.hr
- - blogsearch.google.ht
- - blogsearch.google.hu
- - blogsearch.google.ie
- - blogsearch.google.im
- - blogsearch.google.io
- - blogsearch.google.iq
- - blogsearch.google.is
- - blogsearch.google.it
- - blogsearch.google.it.ao
- - blogsearch.google.je
- - blogsearch.google.jo
- - blogsearch.google.kg
- - blogsearch.google.ki
- - blogsearch.google.kz
- - blogsearch.google.la
- - blogsearch.google.li
- - blogsearch.google.lk
- - blogsearch.google.lt
- - blogsearch.google.lu
- - blogsearch.google.lv
- - blogsearch.google.md
- - blogsearch.google.me
- - blogsearch.google.mg
- - blogsearch.google.mk
- - blogsearch.google.ml
- - blogsearch.google.mn
- - blogsearch.google.ms
- - blogsearch.google.mu
- - blogsearch.google.mv
- - blogsearch.google.mw
- - blogsearch.google.ne
- - blogsearch.google.nl
- - blogsearch.google.no
- - blogsearch.google.nr
- - blogsearch.google.nu
- - blogsearch.google.pl
- - blogsearch.google.pn
- - blogsearch.google.ps
- - blogsearch.google.pt
- - blogsearch.google.ro
- - blogsearch.google.rs
- - blogsearch.google.ru
- - blogsearch.google.rw
- - blogsearch.google.sc
- - blogsearch.google.se
- - blogsearch.google.sh
- - blogsearch.google.si
- - blogsearch.google.sk
- - blogsearch.google.sm
- - blogsearch.google.sn
- - blogsearch.google.so
- - blogsearch.google.st
- - blogsearch.google.td
- - blogsearch.google.tg
- - blogsearch.google.tk
- - blogsearch.google.tl
- - blogsearch.google.tm
- - blogsearch.google.to
- - blogsearch.google.tt
- - blogsearch.google.us
- - blogsearch.google.vg
- - blogsearch.google.vu
- - blogsearch.google.ws
-
- Google Images:
- parameters:
- - q
- domains:
- - google.ac/imgres
- - google.ad/imgres
- - google.ae/imgres
- - google.am/imgres
- - google.as/imgres
- - google.at/imgres
- - google.az/imgres
- - google.ba/imgres
- - google.be/imgres
- - google.bf/imgres
- - google.bg/imgres
- - google.bi/imgres
- - google.bj/imgres
- - google.bs/imgres
- - google.by/imgres
- - google.ca/imgres
- - google.cat/imgres
- - google.cc/imgres
- - google.cd/imgres
- - google.cf/imgres
- - google.cg/imgres
- - google.ch/imgres
- - google.ci/imgres
- - google.cl/imgres
- - google.cm/imgres
- - google.cn/imgres
- - google.co.bw/imgres
- - google.co.ck/imgres
- - google.co.cr/imgres
- - google.co.id/imgres
- - google.co.il/imgres
- - google.co.in/imgres
- - google.co.jp/imgres
- - google.co.ke/imgres
- - google.co.kr/imgres
- - google.co.ls/imgres
- - google.co.ma/imgres
- - google.co.mz/imgres
- - google.co.nz/imgres
- - google.co.th/imgres
- - google.co.tz/imgres
- - google.co.ug/imgres
- - google.co.uk/imgres
- - google.co.uz/imgres
- - google.co.ve/imgres
- - google.co.vi/imgres
- - google.co.za/imgres
- - google.co.zm/imgres
- - google.co.zw/imgres
- - google.com/imgres
- - google.com.af/imgres
- - google.com.ag/imgres
- - google.com.ai/imgres
- - google.com.ar/imgres
- - google.com.au/imgres
- - google.com.bd/imgres
- - google.com.bh/imgres
- - google.com.bn/imgres
- - google.com.bo/imgres
- - google.com.br/imgres
- - google.com.by/imgres
- - google.com.bz/imgres
- - google.com.co/imgres
- - google.com.cu/imgres
- - google.com.cy/imgres
- - google.com.do/imgres
- - google.com.ec/imgres
- - google.com.eg/imgres
- - google.com.et/imgres
- - google.com.fj/imgres
- - google.com.gh/imgres
- - google.com.gi/imgres
- - google.com.gt/imgres
- - google.com.hk/imgres
- - google.com.jm/imgres
- - google.com.kh/imgres
- - google.com.kw/imgres
- - google.com.lb/imgres
- - google.com.lc/imgres
- - google.com.ly/imgres
- - google.com.mt/imgres
- - google.com.mx/imgres
- - google.com.my/imgres
- - google.com.na/imgres
- - google.com.nf/imgres
- - google.com.ng/imgres
- - google.com.ni/imgres
- - google.com.np/imgres
- - google.com.om/imgres
- - google.com.pa/imgres
- - google.com.pe/imgres
- - google.com.ph/imgres
- - google.com.pk/imgres
- - google.com.pr/imgres
- - google.com.py/imgres
- - google.com.qa/imgres
- - google.com.sa/imgres
- - google.com.sb/imgres
- - google.com.sg/imgres
- - google.com.sl/imgres
- - google.com.sv/imgres
- - google.com.tj/imgres
- - google.com.tn/imgres
- - google.com.tr/imgres
- - google.com.tw/imgres
- - google.com.ua/imgres
- - google.com.uy/imgres
- - google.com.vc/imgres
- - google.com.vn/imgres
- - google.cv/imgres
- - google.cz/imgres
- - google.de/imgres
- - google.dj/imgres
- - google.dk/imgres
- - google.dm/imgres
- - google.dz/imgres
- - google.ee/imgres
- - google.es/imgres
- - google.fi/imgres
- - google.fm/imgres
- - google.fr/imgres
- - google.ga/imgres
- - google.gd/imgres
- - google.ge/imgres
- - google.gf/imgres
- - google.gg/imgres
- - google.gl/imgres
- - google.gm/imgres
- - google.gp/imgres
- - google.gr/imgres
- - google.gy/imgres
- - google.hn/imgres
- - google.hr/imgres
- - google.ht/imgres
- - google.hu/imgres
- - google.ie/imgres
- - google.im/imgres
- - google.io/imgres
- - google.iq/imgres
- - google.is/imgres
- - google.it/imgres
- - google.it.ao/imgres
- - google.je/imgres
- - google.jo/imgres
- - google.kg/imgres
- - google.ki/imgres
- - google.kz/imgres
- - google.la/imgres
- - google.li/imgres
- - google.lk/imgres
- - google.lt/imgres
- - google.lu/imgres
- - google.lv/imgres
- - google.md/imgres
- - google.me/imgres
- - google.mg/imgres
- - google.mk/imgres
- - google.ml/imgres
- - google.mn/imgres
- - google.ms/imgres
- - google.mu/imgres
- - google.mv/imgres
- - google.mw/imgres
- - google.ne/imgres
- - google.nl/imgres
- - google.no/imgres
- - google.nr/imgres
- - google.nu/imgres
- - google.pl/imgres
- - google.pn/imgres
- - google.ps/imgres
- - google.pt/imgres
- - google.ro/imgres
- - google.rs/imgres
- - google.ru/imgres
- - google.rw/imgres
- - google.sc/imgres
- - google.se/imgres
- - google.sh/imgres
- - google.si/imgres
- - google.sk/imgres
- - google.sm/imgres
- - google.sn/imgres
- - google.so/imgres
- - google.st/imgres
- - google.td/imgres
- - google.tg/imgres
- - google.tk/imgres
- - google.tl/imgres
- - google.tm/imgres
- - google.to/imgres
- - google.tt/imgres
- - google.us/imgres
- - google.vg/imgres
- - google.vu/imgres
- - images.google.ws
- - images.google.ac
- - images.google.ad
- - images.google.ae
- - images.google.am
- - images.google.as
- - images.google.at
- - images.google.az
- - images.google.ba
- - images.google.be
- - images.google.bf
- - images.google.bg
- - images.google.bi
- - images.google.bj
- - images.google.bs
- - images.google.by
- - images.google.ca
- - images.google.cat
- - images.google.cc
- - images.google.cd
- - images.google.cf
- - images.google.cg
- - images.google.ch
- - images.google.ci
- - images.google.cl
- - images.google.cm
- - images.google.cn
- - images.google.co.bw
- - images.google.co.ck
- - images.google.co.cr
- - images.google.co.id
- - images.google.co.il
- - images.google.co.in
- - images.google.co.jp
- - images.google.co.ke
- - images.google.co.kr
- - images.google.co.ls
- - images.google.co.ma
- - images.google.co.mz
- - images.google.co.nz
- - images.google.co.th
- - images.google.co.tz
- - images.google.co.ug
- - images.google.co.uk
- - images.google.co.uz
- - images.google.co.ve
- - images.google.co.vi
- - images.google.co.za
- - images.google.co.zm
- - images.google.co.zw
- - images.google.com
- - images.google.com.af
- - images.google.com.ag
- - images.google.com.ai
- - images.google.com.ar
- - images.google.com.au
- - images.google.com.bd
- - images.google.com.bh
- - images.google.com.bn
- - images.google.com.bo
- - images.google.com.br
- - images.google.com.by
- - images.google.com.bz
- - images.google.com.co
- - images.google.com.cu
- - images.google.com.cy
- - images.google.com.do
- - images.google.com.ec
- - images.google.com.eg
- - images.google.com.et
- - images.google.com.fj
- - images.google.com.gh
- - images.google.com.gi
- - images.google.com.gt
- - images.google.com.hk
- - images.google.com.jm
- - images.google.com.kh
- - images.google.com.kh
- - images.google.com.kw
- - images.google.com.lb
- - images.google.com.lc
- - images.google.com.ly
- - images.google.com.mt
- - images.google.com.mx
- - images.google.com.my
- - images.google.com.na
- - images.google.com.nf
- - images.google.com.ng
- - images.google.com.ni
- - images.google.com.np
- - images.google.com.om
- - images.google.com.pa
- - images.google.com.pe
- - images.google.com.ph
- - images.google.com.pk
- - images.google.com.pr
- - images.google.com.py
- - images.google.com.qa
- - images.google.com.sa
- - images.google.com.sb
- - images.google.com.sg
- - images.google.com.sl
- - images.google.com.sv
- - images.google.com.tj
- - images.google.com.tn
- - images.google.com.tr
- - images.google.com.tw
- - images.google.com.ua
- - images.google.com.uy
- - images.google.com.vc
- - images.google.com.vn
- - images.google.cv
- - images.google.cz
- - images.google.de
- - images.google.dj
- - images.google.dk
- - images.google.dm
- - images.google.dz
- - images.google.ee
- - images.google.es
- - images.google.fi
- - images.google.fm
- - images.google.fr
- - images.google.ga
- - images.google.gd
- - images.google.ge
- - images.google.gf
- - images.google.gg
- - images.google.gl
- - images.google.gm
- - images.google.gp
- - images.google.gr
- - images.google.gy
- - images.google.hn
- - images.google.hr
- - images.google.ht
- - images.google.hu
- - images.google.ie
- - images.google.im
- - images.google.io
- - images.google.iq
- - images.google.is
- - images.google.it
- - images.google.it.ao
- - images.google.je
- - images.google.jo
- - images.google.kg
- - images.google.ki
- - images.google.kz
- - images.google.la
- - images.google.li
- - images.google.lk
- - images.google.lt
- - images.google.lu
- - images.google.lv
- - images.google.md
- - images.google.me
- - images.google.mg
- - images.google.mk
- - images.google.ml
- - images.google.mn
- - images.google.ms
- - images.google.mu
- - images.google.mv
- - images.google.mw
- - images.google.ne
- - images.google.nl
- - images.google.no
- - images.google.nr
- - images.google.nu
- - images.google.pl
- - images.google.pn
- - images.google.ps
- - images.google.pt
- - images.google.ro
- - images.google.rs
- - images.google.ru
- - images.google.rw
- - images.google.sc
- - images.google.se
- - images.google.sh
- - images.google.si
- - images.google.sk
- - images.google.sm
- - images.google.sn
- - images.google.so
- - images.google.st
- - images.google.td
- - images.google.tg
- - images.google.tk
- - images.google.tl
- - images.google.tm
- - images.google.to
- - images.google.tt
- - images.google.us
- - images.google.vg
- - images.google.vu
- - images.google.ws
-
- Google News:
- parameters:
- - q
- domains:
- - news.google.ac
- - news.google.ad
- - news.google.ae
- - news.google.am
- - news.google.as
- - news.google.at
- - news.google.az
- - news.google.ba
- - news.google.be
- - news.google.bf
- - news.google.bg
- - news.google.bi
- - news.google.bj
- - news.google.bs
- - news.google.by
- - news.google.ca
- - news.google.cat
- - news.google.cc
- - news.google.cd
- - news.google.cf
- - news.google.cg
- - news.google.ch
- - news.google.ci
- - news.google.cl
- - news.google.cm
- - news.google.cn
- - news.google.co.bw
- - news.google.co.ck
- - news.google.co.cr
- - news.google.co.id
- - news.google.co.il
- - news.google.co.in
- - news.google.co.jp
- - news.google.co.ke
- - news.google.co.kr
- - news.google.co.ls
- - news.google.co.ma
- - news.google.co.mz
- - news.google.co.nz
- - news.google.co.th
- - news.google.co.tz
- - news.google.co.ug
- - news.google.co.uk
- - news.google.co.uz
- - news.google.co.ve
- - news.google.co.vi
- - news.google.co.za
- - news.google.co.zm
- - news.google.co.zw
- - news.google.com
- - news.google.com.af
- - news.google.com.ag
- - news.google.com.ai
- - news.google.com.ar
- - news.google.com.au
- - news.google.com.bd
- - news.google.com.bh
- - news.google.com.bn
- - news.google.com.bo
- - news.google.com.br
- - news.google.com.by
- - news.google.com.bz
- - news.google.com.co
- - news.google.com.cu
- - news.google.com.cy
- - news.google.com.do
- - news.google.com.ec
- - news.google.com.eg
- - news.google.com.et
- - news.google.com.fj
- - news.google.com.gh
- - news.google.com.gi
- - news.google.com.gt
- - news.google.com.hk
- - news.google.com.jm
- - news.google.com.kh
- - news.google.com.kh
- - news.google.com.kw
- - news.google.com.lb
- - news.google.com.lc
- - news.google.com.ly
- - news.google.com.mt
- - news.google.com.mx
- - news.google.com.my
- - news.google.com.na
- - news.google.com.nf
- - news.google.com.ng
- - news.google.com.ni
- - news.google.com.np
- - news.google.com.om
- - news.google.com.pa
- - news.google.com.pe
- - news.google.com.ph
- - news.google.com.pk
- - news.google.com.pr
- - news.google.com.py
- - news.google.com.qa
- - news.google.com.sa
- - news.google.com.sb
- - news.google.com.sg
- - news.google.com.sl
- - news.google.com.sv
- - news.google.com.tj
- - news.google.com.tn
- - news.google.com.tr
- - news.google.com.tw
- - news.google.com.ua
- - news.google.com.uy
- - news.google.com.vc
- - news.google.com.vn
- - news.google.cv
- - news.google.cz
- - news.google.de
- - news.google.dj
- - news.google.dk
- - news.google.dm
- - news.google.dz
- - news.google.ee
- - news.google.es
- - news.google.fi
- - news.google.fm
- - news.google.fr
- - news.google.ga
- - news.google.gd
- - news.google.ge
- - news.google.gf
- - news.google.gg
- - news.google.gl
- - news.google.gm
- - news.google.gp
- - news.google.gr
- - news.google.gy
- - news.google.hn
- - news.google.hr
- - news.google.ht
- - news.google.hu
- - news.google.ie
- - news.google.im
- - news.google.io
- - news.google.iq
- - news.google.is
- - news.google.it
- - news.google.it.ao
- - news.google.je
- - news.google.jo
- - news.google.kg
- - news.google.ki
- - news.google.kz
- - news.google.la
- - news.google.li
- - news.google.lk
- - news.google.lt
- - news.google.lu
- - news.google.lv
- - news.google.md
- - news.google.me
- - news.google.mg
- - news.google.mk
- - news.google.ml
- - news.google.mn
- - news.google.ms
- - news.google.mu
- - news.google.mv
- - news.google.mw
- - news.google.ne
- - news.google.nl
- - news.google.no
- - news.google.nr
- - news.google.nu
- - news.google.pl
- - news.google.pn
- - news.google.ps
- - news.google.pt
- - news.google.ro
- - news.google.rs
- - news.google.ru
- - news.google.rw
- - news.google.sc
- - news.google.se
- - news.google.sh
- - news.google.si
- - news.google.sk
- - news.google.sm
- - news.google.sn
- - news.google.so
- - news.google.st
- - news.google.td
- - news.google.tg
- - news.google.tk
- - news.google.tl
- - news.google.tm
- - news.google.to
- - news.google.tt
- - news.google.us
- - news.google.vg
- - news.google.vu
- - news.google.ws
-
- Google Product Search:
- parameters:
- - q
- domains:
- - google.ac/products
- - google.ad/products
- - google.ae/products
- - google.am/products
- - google.as/products
- - google.at/products
- - google.az/products
- - google.ba/products
- - google.be/products
- - google.bf/products
- - google.bg/products
- - google.bi/products
- - google.bj/products
- - google.bs/products
- - google.by/products
- - google.ca/products
- - google.cat/products
- - google.cc/products
- - google.cd/products
- - google.cf/products
- - google.cg/products
- - google.ch/products
- - google.ci/products
- - google.cl/products
- - google.cm/products
- - google.cn/products
- - google.co.bw/products
- - google.co.ck/products
- - google.co.cr/products
- - google.co.id/products
- - google.co.il/products
- - google.co.in/products
- - google.co.jp/products
- - google.co.ke/products
- - google.co.kr/products
- - google.co.ls/products
- - google.co.ma/products
- - google.co.mz/products
- - google.co.nz/products
- - google.co.th/products
- - google.co.tz/products
- - google.co.ug/products
- - google.co.uk/products
- - google.co.uz/products
- - google.co.ve/products
- - google.co.vi/products
- - google.co.za/products
- - google.co.zm/products
- - google.co.zw/products
- - google.com/products
- - google.com.af/products
- - google.com.ag/products
- - google.com.ai/products
- - google.com.ar/products
- - google.com.au/products
- - google.com.bd/products
- - google.com.bh/products
- - google.com.bn/products
- - google.com.bo/products
- - google.com.br/products
- - google.com.by/products
- - google.com.bz/products
- - google.com.co/products
- - google.com.cu/products
- - google.com.cy/products
- - google.com.do/products
- - google.com.ec/products
- - google.com.eg/products
- - google.com.et/products
- - google.com.fj/products
- - google.com.gh/products
- - google.com.gi/products
- - google.com.gt/products
- - google.com.hk/products
- - google.com.jm/products
- - google.com.kh/products
- - google.com.kh/products
- - google.com.kw/products
- - google.com.lb/products
- - google.com.lc/products
- - google.com.ly/products
- - google.com.mt/products
- - google.com.mx/products
- - google.com.my/products
- - google.com.na/products
- - google.com.nf/products
- - google.com.ng/products
- - google.com.ni/products
- - google.com.np/products
- - google.com.om/products
- - google.com.pa/products
- - google.com.pe/products
- - google.com.ph/products
- - google.com.pk/products
- - google.com.pr/products
- - google.com.py/products
- - google.com.qa/products
- - google.com.sa/products
- - google.com.sb/products
- - google.com.sg/products
- - google.com.sl/products
- - google.com.sv/products
- - google.com.tj/products
- - google.com.tn/products
- - google.com.tr/products
- - google.com.tw/products
- - google.com.ua/products
- - google.com.uy/products
- - google.com.vc/products
- - google.com.vn/products
- - google.cv/products
- - google.cz/products
- - google.de/products
- - google.dj/products
- - google.dk/products
- - google.dm/products
- - google.dz/products
- - google.ee/products
- - google.es/products
- - google.fi/products
- - google.fm/products
- - google.fr/products
- - google.ga/products
- - google.gd/products
- - google.ge/products
- - google.gf/products
- - google.gg/products
- - google.gl/products
- - google.gm/products
- - google.gp/products
- - google.gr/products
- - google.gy/products
- - google.hn/products
- - google.hr/products
- - google.ht/products
- - google.hu/products
- - google.ie/products
- - google.im/products
- - google.io/products
- - google.iq/products
- - google.is/products
- - google.it/products
- - google.it.ao/products
- - google.je/products
- - google.jo/products
- - google.kg/products
- - google.ki/products
- - google.kz/products
- - google.la/products
- - google.li/products
- - google.lk/products
- - google.lt/products
- - google.lu/products
- - google.lv/products
- - google.md/products
- - google.me/products
- - google.mg/products
- - google.mk/products
- - google.ml/products
- - google.mn/products
- - google.ms/products
- - google.mu/products
- - google.mv/products
- - google.mw/products
- - google.ne/products
- - google.nl/products
- - google.no/products
- - google.nr/products
- - google.nu/products
- - google.pl/products
- - google.pn/products
- - google.ps/products
- - google.pt/products
- - google.ro/products
- - google.rs/products
- - google.ru/products
- - google.rw/products
- - google.sc/products
- - google.se/products
- - google.sh/products
- - google.si/products
- - google.sk/products
- - google.sm/products
- - google.sn/products
- - google.so/products
- - google.st/products
- - google.td/products
- - google.tg/products
- - google.tk/products
- - google.tl/products
- - google.tm/products
- - google.to/products
- - google.tt/products
- - google.us/products
- - google.vg/products
- - google.vu/products
- - google.ws/products
- - www.google.ac/products
- - www.google.ad/products
- - www.google.ae/products
- - www.google.am/products
- - www.google.as/products
- - www.google.at/products
- - www.google.az/products
- - www.google.ba/products
- - www.google.be/products
- - www.google.bf/products
- - www.google.bg/products
- - www.google.bi/products
- - www.google.bj/products
- - www.google.bs/products
- - www.google.by/products
- - www.google.ca/products
- - www.google.cat/products
- - www.google.cc/products
- - www.google.cd/products
- - www.google.cf/products
- - www.google.cg/products
- - www.google.ch/products
- - www.google.ci/products
- - www.google.cl/products
- - www.google.cm/products
- - www.google.cn/products
- - www.google.co.bw/products
- - www.google.co.ck/products
- - www.google.co.cr/products
- - www.google.co.id/products
- - www.google.co.il/products
- - www.google.co.in/products
- - www.google.co.jp/products
- - www.google.co.ke/products
- - www.google.co.kr/products
- - www.google.co.ls/products
- - www.google.co.ma/products
- - www.google.co.mz/products
- - www.google.co.nz/products
- - www.google.co.th/products
- - www.google.co.tz/products
- - www.google.co.ug/products
- - www.google.co.uk/products
- - www.google.co.uz/products
- - www.google.co.ve/products
- - www.google.co.vi/products
- - www.google.co.za/products
- - www.google.co.zm/products
- - www.google.co.zw/products
- - www.google.com/products
- - www.google.com.af/products
- - www.google.com.ag/products
- - www.google.com.ai/products
- - www.google.com.ar/products
- - www.google.com.au/products
- - www.google.com.bd/products
- - www.google.com.bh/products
- - www.google.com.bn/products
- - www.google.com.bo/products
- - www.google.com.br/products
- - www.google.com.by/products
- - www.google.com.bz/products
- - www.google.com.co/products
- - www.google.com.cu/products
- - www.google.com.cy/products
- - www.google.com.do/products
- - www.google.com.ec/products
- - www.google.com.eg/products
- - www.google.com.et/products
- - www.google.com.fj/products
- - www.google.com.gh/products
- - www.google.com.gi/products
- - www.google.com.gt/products
- - www.google.com.hk/products
- - www.google.com.jm/products
- - www.google.com.kh/products
- - www.google.com.kh/products
- - www.google.com.kw/products
- - www.google.com.lb/products
- - www.google.com.lc/products
- - www.google.com.ly/products
- - www.google.com.mt/products
- - www.google.com.mx/products
- - www.google.com.my/products
- - www.google.com.na/products
- - www.google.com.nf/products
- - www.google.com.ng/products
- - www.google.com.ni/products
- - www.google.com.np/products
- - www.google.com.om/products
- - www.google.com.pa/products
- - www.google.com.pe/products
- - www.google.com.ph/products
- - www.google.com.pk/products
- - www.google.com.pr/products
- - www.google.com.py/products
- - www.google.com.qa/products
- - www.google.com.sa/products
- - www.google.com.sb/products
- - www.google.com.sg/products
- - www.google.com.sl/products
- - www.google.com.sv/products
- - www.google.com.tj/products
- - www.google.com.tn/products
- - www.google.com.tr/products
- - www.google.com.tw/products
- - www.google.com.ua/products
- - www.google.com.uy/products
- - www.google.com.vc/products
- - www.google.com.vn/products
- - www.google.cv/products
- - www.google.cz/products
- - www.google.de/products
- - www.google.dj/products
- - www.google.dk/products
- - www.google.dm/products
- - www.google.dz/products
- - www.google.ee/products
- - www.google.es/products
- - www.google.fi/products
- - www.google.fm/products
- - www.google.fr/products
- - www.google.ga/products
- - www.google.gd/products
- - www.google.ge/products
- - www.google.gf/products
- - www.google.gg/products
- - www.google.gl/products
- - www.google.gm/products
- - www.google.gp/products
- - www.google.gr/products
- - www.google.gy/products
- - www.google.hn/products
- - www.google.hr/products
- - www.google.ht/products
- - www.google.hu/products
- - www.google.ie/products
- - www.google.im/products
- - www.google.io/products
- - www.google.iq/products
- - www.google.is/products
- - www.google.it/products
- - www.google.it.ao/products
- - www.google.je/products
- - www.google.jo/products
- - www.google.kg/products
- - www.google.ki/products
- - www.google.kz/products
- - www.google.la/products
- - www.google.li/products
- - www.google.lk/products
- - www.google.lt/products
- - www.google.lu/products
- - www.google.lv/products
- - www.google.md/products
- - www.google.me/products
- - www.google.mg/products
- - www.google.mk/products
- - www.google.ml/products
- - www.google.mn/products
- - www.google.ms/products
- - www.google.mu/products
- - www.google.mv/products
- - www.google.mw/products
- - www.google.ne/products
- - www.google.nl/products
- - www.google.no/products
- - www.google.nr/products
- - www.google.nu/products
- - www.google.pl/products
- - www.google.pn/products
- - www.google.ps/products
- - www.google.pt/products
- - www.google.ro/products
- - www.google.rs/products
- - www.google.ru/products
- - www.google.rw/products
- - www.google.sc/products
- - www.google.se/products
- - www.google.sh/products
- - www.google.si/products
- - www.google.sk/products
- - www.google.sm/products
- - www.google.sn/products
- - www.google.so/products
- - www.google.st/products
- - www.google.td/products
- - www.google.tg/products
- - www.google.tk/products
- - www.google.tl/products
- - www.google.tm/products
- - www.google.to/products
- - www.google.tt/products
- - www.google.us/products
- - www.google.vg/products
- - www.google.vu/products
- - www.google.ws/products
-
- Google Video:
- parameters:
- - q
- domains:
- - video.google.com
-
- Goyellow.de:
- parameters:
- - MDN
- domains:
- - www.goyellow.de
-
- Gule Sider:
- parameters:
- - q
- domains:
- - www.gulesider.no
-
- HighBeam:
- parameters:
- - q
- domains:
- - www.highbeam.com
-
- Hit-Parade:
- parameters:
- - p7
- domains:
- - req.-hit-parade.com
- - class.hit-parade.com
- - www.hit-parade.com
-
- Holmes:
- parameters:
- - q
- domains:
- - holmes.ge
-
- Hooseek.com:
- parameters:
- - recherche
- domains:
- - www.hooseek.com
-
- Hotbot:
- parameters:
- - query
- domains:
- - www.hotbot.com
-
- Icerockeet:
- parameters:
- - q
- domains:
- - blogs.icerocket.com
-
- ICQ:
- parameters:
- - q
- domains:
- - www.icq.com
- - search.icq.com
-
- Ilse:
- parameters:
- - search_for
- domains:
- - www.ilse.nl
-
- InfoSpace:
- parameters:
- - q
- - s
- domains:
- - infospace.com
- - dogpile.com
- - www.dogpile.com
- - metacrawler.com
- - webfetch.com
- - webcrawler.com
- - search.kiwee.com
- # powered by InfoSpace
- - isearch.babylon.com
- - start.facemoods.com
- - search.magnetic.com
- - search.searchcompletion.com
- - clusty.com
-
- Interia:
- parameters:
- - q
- domains:
- - www.google.interia.pl
-
- I-play:
- parameters:
- - q
- domains:
- - start.iplay.com
-
- IXquick:
- parameters:
- - query
- domains:
- - ixquick.com
- - www.eu.ixquick.com
- - ixquick.de
- - www.ixquick.de
- - us.ixquick.com
- - s1.us.ixquick.com
- - s2.us.ixquick.com
- - s3.us.ixquick.com
- - s4.us.ixquick.com
- - s5.us.ixquick.com
- - eu.ixquick.com
- - s8-eu.ixquick.com
- - s1-eu.ixquick.de
-
- Jyxo:
- parameters:
- - q
- domains:
- - jyxo.1188.cz
-
- Jungle Spider:
- parameters:
- - q
- domains:
- - www.jungle-spider.de
-
- Jungle Key:
- parameters:
- - query
- domains:
- - junglekey.com
- - junglekey.fr
-
- Kataweb:
- parameters:
- - q
- domains:
- - www.kataweb.it
-
- Kvasir:
- parameters:
- - q
- domains:
- - www.kvasir.no
-
- Latne:
- parameters:
- - q
- domains:
- - www.latne.lv
-
- La Toile Du Quebec Via Google:
- parameters:
- - q
- domains:
- - www.toile.com
- - web.toile.com
-
- Looksmart:
- parameters:
- - key
- domains:
- - www.looksmart.com
-
- Lo.st:
- parameters:
- - x_query
- domains:
- - lo.st
-
- Lycos:
- parameters:
- - query
- domains:
- - search.lycos.com
- - www.lycos.com
- - lycos.com
-
- maailm:
- parameters:
- - tekst
- domains:
- - www.maailm.com
-
- Mail.ru:
- parameters:
- - q
- domains:
- - go.mail.ru
-
- Mamma:
- parameters:
- - query
- domains:
- - www.mamma.com
- - mamma75.mamma.com
-
- Marktplaats:
- parameters:
- - query
- domains:
- - www.marktplaats.nl
-
- Maxwebsearch:
- parameters:
- - query
- domains:
- - maxwebsearch.com
-
- Meta:
- parameters:
- - q
- domains:
- - meta.ua
-
- MetaCrawler.de:
- parameters:
- - qry
- domains:
- - s1.metacrawler.de
- - s2.metacrawler.de
- - s3.metacrawler.de
-
- Metager:
- parameters:
- - eingabe
- domains:
- - meta.rrzn.uni-hannover.de
- - www.metager.de
-
- Metager2:
- parameters:
- - q
- domains:
- - metager2.de
-
- Meinestadt:
- parameters:
- - words
- domains:
- - www.meinestadt.de
-
- Mister Wong:
- parameters:
- - Keywords
- domains:
- - www.mister-wong.com
- - www.mister-wong.de
-
- Monstercrawler:
- parameters:
- - qry
- domains:
- - www.monstercrawler.com
-
- Mozbot:
- parameters:
- - q
- domains:
- - www.mozbot.fr
- - www.mozbot.co.uk
- - www.mozbot.com
-
- El Mundo:
- parameters:
- - q
- domains:
- - ariadna.elmundo.es
-
- MySearch:
- parameters:
- - searchfor
- - searchFor
- domains:
- - www.mysearch.com
- - ms114.mysearch.com
- - ms146.mysearch.com
- - kf.mysearch.myway.com
- - ki.mysearch.myway.com
- - search.myway.com
- - search.mywebsearch.com
-
- Najdi:
- parameters:
- - q
- domains:
- - www.najdi.si
-
- Nate:
- parameters:
- - q
- domains:
- - search.nate.com
-
- Naver:
- parameters:
- - query
- domains:
- - search.naver.com
-
- Naver Images:
- parameters:
- - query
- domains:
- - image.search.naver.com
- - imagesearch.naver.com
-
- Needtofind:
- parameters:
- - searchfor
- domains:
- - ko.search.need2find.com
-
- Neti:
- parameters:
- - query
- domains:
- - www.neti.ee
-
- Nifty:
- parameters:
- - q
- domains:
- - search.nifty.com
-
- Nigma:
- parameters:
- - s
- domains:
- - nigma.ru
-
- Onet:
- parameters:
- - qt
- domains:
- - szukaj.onet.pl
-
- Online.no:
- parameters:
- - q
- domains:
- - online.no
-
- Opplysningen 1881:
- parameters:
- - Query
- domains:
- - www.1881.no
-
- Orange:
- parameters:
- - q
- domains:
- - busca.orange.es
- - search.orange.co.uk
-
- Paperball:
- parameters:
- - q
- domains:
- - www.paperball.de
-
- PeoplePC:
- parameters:
- - q
- domains:
- - search.peoplepc.com
-
- Picsearch:
- parameters:
- - q
- domains:
- - www.picsearch.com
-
- Plazoo:
- parameters:
- - q
- domains:
- - www.plazoo.com
-
- Poisk.ru:
- parameters:
- - q
- domains:
- - www.plazoo.com
-
- PriceRunner:
- parameters:
- - q
- domains:
- - www.pricerunner.co.uk
-
- qip:
- parameters:
- - query
- domains:
- - search.qip.ru
-
- Qualigo:
- parameters:
- - q
- domains:
- - www.qualigo.at
- - www.qualigo.ch
- - www.qualigo.de
- - www.qualigo.nl
-
- Rakuten:
- parameters:
- - qt
- domains:
- - websearch.rakuten.co.jp
-
- Rambler:
- parameters:
- - query
- - words
- domains:
- - nova.rambler.ru
-
- RPMFind:
- parameters:
- - query
- domains:
- - rpmfind.net
- - fr2.rpmfind.net
-
- Road Runner Search:
- parameters:
- - q
- domains:
- - search.rr.com
-
- Sapo:
- parameters:
- - q
- domains:
- - pesquisa.sapo.pt
-
- # Add Scour.com
-
- Search.com:
- parameters:
- - q
- domains:
- - www.search.com
-
- Search.ch:
- parameters:
- - q
- domains:
- - www.search.ch
-
- Searchalot:
- parameters:
- - q
- domains:
- - searchalot.com
-
- SearchCanvas:
- parameters:
- - q
- domains:
- - www.searchcanvas.com
-
- Searchy:
- parameters:
- - q
- domains:
- - www.searchy.co.uk
-
- # Add setooz.com
-
- Seznam:
- parameters:
- - q
- domains:
- - search.seznam.cz
-
- Sharelook:
- parameters:
- - keyword
- domains:
- - www.sharelook.fr
-
- Skynet:
- parameters:
- - q
- domains:
- - www.skynet.be
-
- Sogou:
- parameters:
- - query
- domains:
- - www.sougou.com
-
- Softonic:
- parameters:
- - q
- domains:
- - search.softonic.com
-
- soso.com:
- parameters:
- - w
- domains:
- - www.soso.com
-
- Snapdo:
- parameters:
- - q
- domains:
- - search.snapdo.com
-
- Startpagina:
- parameters:
- - q
- domains:
- - startgoogle.startpagina.nl
-
- Startsiden:
- parameters:
- - q
- domains:
- - www.startsiden.no
-
- suche.info:
- parameters:
- - q
- domains:
- - suche.info
-
- Suchmaschine.com:
- parameters:
- - suchstr
- domains:
- - www.suchmaschine.com
-
- Suchnase:
- parameters:
- - q
- domains:
- - www.suchnase.de
-
- TalkTalk:
- parameters:
- - query
- domains:
- - www.talktalk.co.uk
-
- Technorati:
- parameters:
- - q
- domains:
- - technorati.com
-
- Teoma:
- parameters:
- - q
- domains:
- - www.teoma.com
-
- Terra:
- parameters:
- - query
- domains:
- - buscador.terra.es
- - buscador.terra.cl
- - buscador.terra.com.br
-
- Tiscali:
- parameters:
- - q
- - key
- domains:
- - search.tiscali.it
- - search-dyn.tiscali.it
- - hledani.tiscali.cz
-
- Tixuma:
- parameters:
- - sc
- domains:
- - www.tixuma.de
-
- T-Online:
- parameters:
- - q
- domains:
- - suche.t-online.de
- - brisbane.t-online.de
- - navigationshilfe.t-online.de
-
- Toolbarhome:
- parameters:
- - q
- domains:
- - www.toolbarhome.com
- - vshare.toolbarhome.com
-
- Trouvez.com:
- parameters:
- - query
- domains:
- - www.trouvez.com
-
- TrovaRapido:
- parameters:
- - q
- domains:
- - www.trovarapido.com
-
- Trusted-Search:
- parameters:
- - w
- domains:
- - www.trusted--search.com
-
- Twingly:
- parameters:
- - q
- domains:
- - www.twingly.com
-
- uol.com.br:
- parameters:
- - q
- domains:
- - busca.uol.com.br
-
- URL.ORGanizier:
- parameters:
- - q
- domains:
- - www.url.org
-
- Vinden:
- parameters:
- - q
- domains:
- - www.vinden.nl
-
- Vindex:
- parameters:
- - search_for
- domains:
- - www.vindex.nl
- - search.vindex.nl
-
- Virgilio:
- parameters:
- - qs
- domains:
- - ricerca.virgilio.it
- - ricercaimmagini.virgilio.it
- - ricercavideo.virgilio.it
- - ricercanews.virgilio.it
- - mobile.virgilio.it
-
- Voila:
- parameters:
- - rdata
- - kw
- domains:
- - search.ke.voila.fr
- - www.lemoteur.fr
-
- Volny:
- parameters:
- - search
- domains:
- - web.volny.cz
-
- Walhello :
- parameters:
- - key
- domains:
- - www.walhello.info
- - www.walhello.com
- - www.walhello.de
- - www.walhello.nl
-
- Web.de:
- parameters:
- - su
- domains:
- - suche.web.de
-
- Web.nl:
- parameters:
- - zoekwoord
- domains:
- - www.web.nl
-
- Weborama:
- parameters:
- - QUERY
- domains:
- - www.weborama.com
-
- WebSearch:
- parameters:
- - qkw
- - q
- domains:
- - www.websearch.com
-
- Winamp:
- parameters:
- - q
- domains:
- - search.winamp.com
-
- Witch:
- parameters:
- - search
- domains:
- - www.witch.de
-
- Wirtualna Polska:
- parameters:
- - szukaj
- domains:
- - szukaj.wp.pl
-
- WWW:
- parameters:
- - query
- domains:
- - search.www.ee
-
- X-recherche:
- parameters:
- - MOTS
- domains:
- - www.x-recherche.com
-
- Yahoo!:
- parameters:
- - p
- - q
- domains:
- - search.yahoo.com
- - yahoo.com
- - ar.search.yahoo.com
- - ar.yahoo.com
- - au.search.yahoo.com
- - au.yahoo.com
- - br.search.yahoo.com
- - br.yahoo.com
- - cade.searchde.yahoo.com
- - cade.yahoo.com
- - chinese.searchinese.yahoo.com
- - chinese.yahoo.com
- - cn.search.yahoo.com
- - cn.yahoo.com
- - de.search.yahoo.com
- - de.yahoo.com
- - dk.search.yahoo.com
- - dk.yahoo.com
- - es.search.yahoo.com
- - es.yahoo.com
- - espanol.searchpanol.yahoo.com
- - espanol.searchpanol.yahoo.com
- - espanol.yahoo.com
- - espanol.yahoo.com
- - fr.search.yahoo.com
- - fr.yahoo.com
- - ie.search.yahoo.com
- - ie.yahoo.com
- - it.search.yahoo.com
- - it.yahoo.com
- - kr.search.yahoo.com
- - kr.yahoo.com
- - mx.search.yahoo.com
- - mx.yahoo.com
- - no.search.yahoo.com
- - no.yahoo.com
- - nz.search.yahoo.com
- - nz.yahoo.com
- - one.cn.yahoo.com
- - one.searchn.yahoo.com
- - qc.search.yahoo.com
- - qc.search.yahoo.com
- - qc.search.yahoo.com
- - qc.yahoo.com
- - qc.yahoo.com
- - se.search.yahoo.com
- - se.search.yahoo.com
- - se.yahoo.com
- - search.searcharch.yahoo.com
- - search.yahoo.com
- - uk.search.yahoo.com
- - uk.yahoo.com
- - www.yahoo.co.jp
- - search.yahoo.co.jp
- # powered by Yahoo
- - www.cercato.it
- - search.offerbox.com
- - ys.mirostart.com
-
- Yahoo! Images:
- parameters:
- - p
- - q
- domains:
- - image.yahoo.cn
- - images.search.yahoo.com
-
- Yam:
- parameters:
- - k
- domains:
- - search.yam.com
-
- Yandex:
- parameters:
- - text
- domains:
- - yandex.ru
- - yandex.ua
- - yandex.com
- - yandex.by
- - www.yandex.ru
- - www.yandex.ua
- - www.yandex.com
- - www.yandex.by
-
- Yandex Images:
- parameters:
- - text
- domains:
- - images.yandex.ru
- - images.yandex.ua
- - images.yandex.com
-
- Yasni:
- parameters:
- - query
- domains:
- - www.yasni.de
- - www.yasni.com
- - www.yasni.co.uk
- - www.yasni.ch
- - www.yasni.at
-
- Yatedo:
- parameters:
- - q
- domains:
- - www.yatedo.com
- - www.yatedo.fr
-
- # Add Yellowmap:
-
- Yippy:
- parameters:
- - q
- - query
- domains:
- - search.yippy.com
-
- YouGoo:
- parameters:
- - q
- domains:
- - www.yougoo.fr
-
- Zapmeta:
- parameters:
- - q
- - query
- domains:
- - www.zapmeta.com
- - www.zapmeta.nl
- - www.zapmeta.de
- - uk.zapmeta.com
-
- Zoek:
- parameters:
- - q
- domains:
- - www3.zoek.nl
-
- Zhongsou:
- parameters:
- - w
- domains:
- - p.zhongsou.com
-
- Zoeken:
- parameters:
- - q
- domains:
- - www.zoeken.nl
-
- Zoohoo:
- parameters:
- - q
- domains:
- - zoohoo.cz
diff --git a/vendor/snowplow/referer-parser/python/referer_parser/test/__init__.py b/vendor/snowplow/referer-parser/python/referer_parser/test/__init__.py
deleted file mode 100644
index 22275c289..000000000
--- a/vendor/snowplow/referer-parser/python/referer_parser/test/__init__.py
+++ /dev/null
@@ -1,213 +0,0 @@
-import unittest
-from referer_parser import Referer
-
-class TestRefererParsing(unittest.TestCase):
- def check_equals(self, ref_obj, referer, term, medium):
- self.assertTrue(ref_obj.known)
- self.assertEqual(ref_obj.referer, referer)
- self.assertEqual(ref_obj.search_term, term)
- self.assertEqual(ref_obj.medium, medium)
-
- def check_no_term(self, ref_obj, referer, medium):
- self.assertTrue(ref_obj.known)
- self.assertEqual(ref_obj.referer, referer)
- self.assertIsNone(ref_obj.search_term)
- self.assertEqual(ref_obj.medium, medium)
-
- def test_google_minimal(self):
- """ Google search #1
- """
- r = Referer('http://www.google.com/search')
- # r.known, r.referer, r.search_term, r.medium
- self.assertTrue(r.known)
- self.assertEqual(r.referer, 'Google')
- self.assertIsNone(r.search_term)
- self.assertEqual(r.medium, 'search')
-
- def test_google_term(self):
- """ Google search #2
- """
- r = Referer('http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=\
-en&client=safari')
- self.check_equals(r, 'Google', 'gateway oracle cards denise linn', 'search')
-
- def test_powered_by_google(self):
- """ Powered by Google
- """
- r = Referer("""http://isearch.avg.com/pages/images.aspx?q=tarot+card+change&sap=\
-dsp&lang=en&mid=209215200c4147d1a9d6d1565005540b-b0d4f81a8999f5981f04537c5ec8468fd523459\
-3&cid=%7B50F9298B-C111-4C7E-9740-363BF0015949%7D&v=12.1.0.21&ds=AVG&d=7%2F23%2F2012+10%3\
-A31%3A08+PM&pr=fr&sba=06oENya4ZG1YS6vOLJwpLiFdjG91ICt2YE59W2p5ENc2c4w8KvJb5xbvjkj3ceMjny\
-TSpZq-e6pj7GQUylIQtuK4psJU60wZuI-8PbjX-OqtdX3eIcxbMoxg3qnIasP0ww2fuID1B-p2qJln8vBHxWztkp\
-xeixjZPSppHnrb9fEcx62a9DOR0pZ-V-Kjhd-85bIL0QG5qi1OuA4M1eOP4i_NzJQVRXPQDmXb-CpIcruc2h5FE9\
-2Tc8QMUtNiTEWBbX-QiCoXlgbHLpJo5Jlq-zcOisOHNWU2RSHYJnK7IUe_SH6iQ.%2CYT0zO2s9MTA7aD1mNjZmZ\
-DBjMjVmZDAxMGU4&snd=hdr&tc=test1""")
- self.check_equals(r, 'Google', 'tarot card change', 'search')
-
- def test_google_img_search(self):
- """ Google Images search
- """
- r = Referer("""http://www.google.fr/imgres?q=Ogham+the+celtic+oracle&hl=fr&safe=\
-off&client=firefox-a&hs=ZDu&sa=X&rls=org.mozilla:fr-FR:unofficial&tbm=isch&prmd=imvnsa&t\
-bnid=HUVaj-o88ZRdYM:&imgrefurl=http://www.psychicbazaar.com/oracles/101-ogham-the-celtic\
--oracle-set.html&docid=DY5_pPFMliYUQM&imgurl=http://mdm.pbzstatic.com/oracles/ogham-the-\
-celtic-oracle-set/montage.png&w=734&h=250&ei=GPdWUIePCOqK0AWp3oCQBA&zoom=1&iact=hc&vpx=1\
-29&vpy=276&dur=827&hovh=131&hovw=385&tx=204&ty=71&sig=104115776612919232039&page=1&tbnh=\
-69&tbnw=202&start=0&ndsp=26&ved=1t:429,r:13,s:0,i:114&biw=1272&bih=826""")
- self.check_equals(r, 'Google Images', 'Ogham the celtic oracle', 'search')
-
- def test_yahoo_search(self):
- """ Yahoo! search
- """
- r = Referer("""http://es.search.yahoo.com/search;_ylt=A7x9QbwbZXxQ9EMAPCKT.Qt.?p=\
-BIEDERMEIER+FORTUNE+TELLING+CARDS&ei=utf-8&type=685749&fr=chr-greentree_gc&xargs=0&pstar\
-t=1&b=11""")
- self.check_equals(r, 'Yahoo!', 'BIEDERMEIER FORTUNE TELLING CARDS', 'search')
-
- def test_yahoo_img_search(self):
- """ Yahoo! Images search
- """
- r = Referer("""http://it.images.search.yahoo.com/images/view;_ylt=A0PDodgQmGBQpn\
-4AWQgdDQx.;_ylu=X3oDMTBlMTQ4cGxyBHNlYwNzcgRzbGsDaW1n?back=http%3A%2F%2Fit.images.search.\
-yahoo.com%2Fsearch%2Fimages%3Fp%3DEarth%2BMagic%2BOracle%2BCards%26fr%3Dmcafee%26fr2%3Dp\
-iv-web%26tab%3Dorganic%26ri%3D5&w=1064&h=1551&imgurl=mdm.pbzstatic.com%2Foracles%2Fearth\
--magic-oracle-cards%2Fcard-1.png&rurl=http%3A%2F%2Fwww.psychicbazaar.com%2Foracles%2F143\
--earth-magic-oracle-cards.html&size=2.8+KB&name=Earth+Magic+Oracle+Cards+-+Psychic+Bazaa\
-r&p=Earth+Magic+Oracle+Cards&oid=f0a5ad5c4211efe1c07515f56cf5a78e&fr2=piv-web&fr=mcafee&\
-tt=Earth%2BMagic%2BOracle%2BCards%2B-%2BPsychic%2BBazaar&b=0&ni=90&no=5&ts=&tab=organic&\
-sigr=126n355ib&sigb=13hbudmkc&sigi=11ta8f0gd&.crumb=IZBOU1c0UHU""")
- self.check_equals(r, 'Yahoo! Images', 'Earth Magic Oracle Cards', 'search')
-
- def test_price_runner_search(self):
- """ PriceRunner search
- """
- r = Referer("""http://www.pricerunner.co.uk/search?displayNoHitsMessage=1&q=wild\
-+wisdom+of+the+faery+oracle""")
- self.check_equals(r, 'PriceRunner', 'wild wisdom of the faery oracle', 'search')
-
- def test_bing_img(self):
- """ Bing Images
- """
- r = Referer("""http://www.bing.com/images/search?q=psychic+oracle+cards&view=det\
-ail&id=D268EDDEA8D3BF20AF887E62AF41E8518FE96F08""")
- self.check_equals(r, 'Bing Images', 'psychic oracle cards', 'search')
-
- def test_ixquick(self):
- """ IXquick search
- """
- r = Referer("""https://s3-us3.ixquick.com/do/search""")
- self.assertTrue(r.known)
- self.assertEqual(r.referer, 'IXquick')
- self.assertIsNone(r.search_term)
- self.assertEqual(r.medium, 'search')
-
- def test_aol_search(self):
- """ AOL search
- """
- r = Referer("""http://aolsearch.aol.co.uk/aol/search?s_chn=hp&enabled_terms=&s_i\
-t=aoluk-homePage50&q=pendulums""")
- self.check_equals(r, 'AOL', 'pendulums', 'search')
-
- def test_ask_search(self):
- """ Ask search
- """
- r = Referer("""http://uk.search-results.com/web?qsrc=1&o=1921&l=dis&q=pendulums&\
-dm=ctry&atb=sysid%3D406%3Aappid%3D113%3Auid%3D8f40f651e7b608b5%3Auc%3D1346336505%3Aqu%3D\
-pendulums%3Asrc%3Dcrt%3Ao%3D1921&locale=en_GB""")
- self.check_equals(r, 'Ask', 'pendulums', 'search')
-
- def test_mailru_search(self):
- """ Mail.ru search
- """
- r = Referer("""http://go.mail.ru/search?q=Gothic%20Tarot%20Cards&where=any&num=1\
-0&rch=e&sf=20""")
- self.check_equals(r, 'Mail.ru', 'Gothic Tarot Cards', 'search')
-
- def test_yandex_search(self):
- """ Yandex search
- """
- r = Referer("""http://images.yandex.ru/yandsearch?text=Blue%20Angel%20Oracle%20B\
-lue%20Angel%20Oracle&noreask=1&pos=16&rpt=simage&lr=45&img_url=http%3A%2F%2Fmdm.pbzstati\
-c.com%2Foracles%2Fblue-angel-oracle%2Fbox-small.png""")
- self.check_equals(r, 'Yandex Images', 'Blue Angel Oracle Blue Angel Oracle', 'search')
-
- def test_twitter_redirect(self):
- """ Twitter redirect
- """
- r = Referer("""http://t.co/chrgFZDb""")
- self.check_no_term(r, 'Twitter', 'social')
-
- def test_fb_social(self):
- """ Facebook social
- """
- r = Referer("""http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.psychicbazaar.co\
-m&h=yAQHZtXxS&s=1""")
- self.check_no_term(r, 'Facebook', 'social')
-
- def test_fb_mobile(self):
- """ Facebook mobile
- """
- r = Referer("""http://m.facebook.com/l.php?u=http%3A%2F%2Fwww.psychicbazaar.com%\
-2Fblog%2F2012%2F09%2Fpsychic-bazaar-reviews-tarot-foundations-31-days-to-read-tarot-with\
--confidence%2F&h=kAQGXKbf9&s=1""")
- self.check_no_term(r, 'Facebook', 'social')
-
- def test_odnoklassniki(self):
- """ Odnoklassniki
- """
- r = Referer("""http://www.odnoklassniki.ru/dk?cmd=logExternal&st._aid=Conversati\
-ons_Openlink&st.name=externalLinkRedirect&st.link=http%3A%2F%2Fwww.psychicbazaar.com%2Fo\
-racles%2F187-blue-angel-oracle.html""")
- self.check_no_term(r, 'Odnoklassniki', 'social')
-
- def test_tumblr(self):
- """ Tumblr social #1
- """
- r = Referer("http://www.tumblr.com/dashboard")
- self.check_no_term(r, 'Tumblr', 'social')
-
- def test_tumblr_subdomain(self):
- """ Tumblr w subdomain
- """
- r = Referer("http://psychicbazaar.tumblr.com/")
- self.check_no_term(r, 'Tumblr', 'social')
-
- def test_yahoo_mail(self):
- """ Yahoo! Mail
- """
- r = Referer("""http://36ohk6dgmcd1n-c.c.yom.mail.yahoo.net/om/api/1.0/openmail.a\
-pp.invoke/36ohk6dgmcd1n/11/1.0.35/us/en-US/view.html/0""")
- self.check_no_term(r, 'Yahoo! Mail', 'email')
-
- def test_outlookcom_mail(self):
- """ Outlook.com mail
- """
- r = Referer("http://co106w.col106.mail.live.com/default.aspx?rru=inbox")
- self.check_no_term(r, 'Outlook.com', 'email')
-
- def test_orange_webmail(self):
- """ Orange Webmail
- """
- r = Referer("""http://webmail1m.orange.fr/webmail/fr_FR/read.html?FOLDER=SF_INBO\
-X&IDMSG=8594&check=&SORTBY=31""")
- self.check_no_term(r, 'Orange Webmail', 'email')
-
- def test_internal(self):
- r = Referer("http://www.snowplowanalytics.com/about/team",
- "http://www.snowplowanalytics.com/account/profile")
- self.assertTrue(r.known)
- self.assertEqual(r.medium, 'internal')
- self.assertIsNone(r.search_term)
- self.assertIsNone(r.referer)
-
- def test_no_host(self):
- r = Referer("http:some/path")
- self.assertFalse(r.known)
- self.assertIsNone(r.uri.hostname)
- self.assertEqual(r.medium, 'unknown')
- self.assertIsNone(r.search_term)
- self.assertIsNone(r.referer)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/vendor/snowplow/referer-parser/python/setup.py b/vendor/snowplow/referer-parser/python/setup.py
deleted file mode 100644
index f54ab4361..000000000
--- a/vendor/snowplow/referer-parser/python/setup.py
+++ /dev/null
@@ -1,15 +0,0 @@
-import os
-from setuptools import setup, find_packages
-
-setup_pth = os.path.dirname(__file__)
-readme_pth = os.path.join(setup_pth, 'README.md')
-
-setup(
- name='referer-parser',
- version="0.3.1",
- long_description=open(readme_pth).read(),
- packages=find_packages(),
- include_package_data=True,
- package_data={'referer_parser': ['data/referers.json']},
- zip_safe=False,
-)
diff --git a/vendor/snowplow/referer-parser/python/tox.ini b/vendor/snowplow/referer-parser/python/tox.ini
deleted file mode 100644
index edc3ae3d5..000000000
--- a/vendor/snowplow/referer-parser/python/tox.ini
+++ /dev/null
@@ -1,13 +0,0 @@
-# Tox (http://tox.testrun.org/) is a tool for running tests
-# in multiple virtualenvs. This configuration file will run the
-# test suite on all supported python versions. To use it, "pip install tox"
-# and then run "tox" from this directory.
-
-[tox]
-#envlist = py27, py33, pypy, jython
-envlist = py27, py33
-
-[testenv]
-commands = nosetests referer_parser.test
-deps =
- nose
diff --git a/vendor/snowplow/referer-parser/resources/referer-tests.json b/vendor/snowplow/referer-parser/resources/referer-tests.json
deleted file mode 100644
index 4233d966b..000000000
--- a/vendor/snowplow/referer-parser/resources/referer-tests.json
+++ /dev/null
@@ -1,250 +0,0 @@
-[
- {
- "spec": "Google Images search",
- "uri": "http://www.google.fr/imgres?q=Ogham+the+celtic+oracle&hl=fr&safe=off&client=firefox-a&hs=ZDu&sa=X&rls=org.mozilla:fr-FR:unofficial&tbm=isch&prmd=imvnsa&tbnid=HUVaj-o88ZRdYM:&imgrefurl=http://www.psychicbazaar.com/oracles/101-ogham-the-celtic-oracle-set.html&docid=DY5_pPFMliYUQM&imgurl=http://mdm.pbzstatic.com/oracles/ogham-the-celtic-oracle-set/montage.png&w=734&h=250&ei=GPdWUIePCOqK0AWp3oCQBA&zoom=1&iact=hc&vpx=129&vpy=276&dur=827&hovh=131&hovw=385&tx=204&ty=71&sig=104115776612919232039&page=1&tbnh=69&tbnw=202&start=0&ndsp=26&ved=1t:429,r:13,s:0,i:114&biw=1272&bih=826",
- "medium": "search",
- "source": "Google Images",
- "term": "Ogham the celtic oracle",
- "known": true
- },
- {
- "spec": "Yahoo! Images search",
- "uri": "http://it.images.search.yahoo.com/images/view;_ylt=A0PDodgQmGBQpn4AWQgdDQx.;_ylu=X3oDMTBlMTQ4cGxyBHNlYwNzcgRzbGsDaW1n?back=http%3A%2F%2Fit.images.search.yahoo.com%2Fsearch%2Fimages%3Fp%3DEarth%2BMagic%2BOracle%2BCards%26fr%3Dmcafee%26fr2%3Dpiv-web%26tab%3Dorganic%26ri%3D5&w=1064&h=1551&imgurl=mdm.pbzstatic.com%2Foracles%2Fearth-magic-oracle-cards%2Fcard-1.png&rurl=http%3A%2F%2Fwww.psychicbazaar.com%2Foracles%2F143-earth-magic-oracle-cards.html&size=2.8+KB&name=Earth+Magic+Oracle+Cards+-+Psychic+Bazaar&p=Earth+Magic+Oracle+Cards&oid=f0a5ad5c4211efe1c07515f56cf5a78e&fr2=piv-web&fr=mcafee&tt=Earth%2BMagic%2BOracle%2BCards%2B-%2BPsychic%2BBazaar&b=0&ni=90&no=5&ts=&tab=organic&sigr=126n355ib&sigb=13hbudmkc&sigi=11ta8f0gd&.crumb=IZBOU1c0UHU",
- "medium": "search",
- "source": "Yahoo! Images",
- "term": "Earth Magic Oracle Cards",
- "known": true
- },
- {
- "spec": "Powered by Google",
- "uri": "http://isearch.avg.com/pages/images.aspx?q=tarot+card+change&sap=dsp&lang=en&mid=209215200c4147d1a9d6d1565005540b-b0d4f81a8999f5981f04537c5ec8468fd5234593&cid=%7B50F9298B-C111-4C7E-9740-363BF0015949%7D&v=12.1.0.21&ds=AVG&d=7%2F23%2F2012+10%3A31%3A08+PM&pr=fr&sba=06oENya4ZG1YS6vOLJwpLiFdjG91ICt2YE59W2p5ENc2c4w8KvJb5xbvjkj3ceMjnyTSpZq-e6pj7GQUylIQtuK4psJU60wZuI-8PbjX-OqtdX3eIcxbMoxg3qnIasP0ww2fuID1B-p2qJln8vBHxWztkpxeixjZPSppHnrb9fEcx62a9DOR0pZ-V-Kjhd-85bIL0QG5qi1OuA4M1eOP4i_NzJQVRXPQDmXb-CpIcruc2h5FE92Tc8QMUtNiTEWBbX-QiCoXlgbHLpJo5Jlq-zcOisOHNWU2RSHYJnK7IUe_SH6iQ.%2CYT0zO2s9MTA7aD1mNjZmZDBjMjVmZDAxMGU4&snd=hdr&tc=test1",
- "medium": "search",
- "source": "Google",
- "term": "tarot card change",
- "known": true
- },
- {
- "spec": "Google search #1",
- "uri": "http://www.google.com/search",
- "medium": "search",
- "source": "Google",
- "term": null,
- "known": true
- },
- {
- "spec": "Google search #2",
- "uri": "http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari",
- "medium": "search",
- "source": "Google",
- "term": "gateway oracle cards denise linn",
- "known": true
- },
- {
- "spec": "Yahoo! search",
- "uri": "http://es.search.yahoo.com/search;_ylt=A7x9QbwbZXxQ9EMAPCKT.Qt.?p=BIEDERMEIER+FORTUNE+TELLING+CARDS&ei=utf-8&type=685749&fr=chr-greentree_gc&xargs=0&pstart=1&b=11",
- "medium": "search",
- "source": "Yahoo!",
- "term": "BIEDERMEIER FORTUNE TELLING CARDS",
- "known": true
- },
- {
- "spec": "PriceRunner search",
- "uri": "http://www.pricerunner.co.uk/search?displayNoHitsMessage=1&q=wild+wisdom+of+the+faery+oracle",
- "medium": "search",
- "source": "PriceRunner",
- "term": "wild wisdom of the faery oracle",
- "known": true
- },
- {
- "spec": "Bing Images search",
- "uri": "http://www.bing.com/images/search?q=psychic+oracle+cards&view=detail&id=D268EDDEA8D3BF20AF887E62AF41E8518FE96F08",
- "medium": "search",
- "source": "Bing Images",
- "term": "psychic oracle cards",
- "known": true
- },
- {
- "spec": "IXquick search",
- "uri": "https://s3-us3.ixquick.com/do/search",
- "medium": "search",
- "source": "IXquick",
- "term": null,
- "known": true
- },
- {
- "spec": "AOL search",
- "uri": "http://aolsearch.aol.co.uk/aol/search?s_chn=hp&enabled_terms=&s_it=aoluk-homePage50&q=pendulums",
- "medium": "search",
- "source": "AOL",
- "term": "pendulums",
- "known": true
- },
- {
- "spec": "AOL search.com",
- "uri": "http://www.aolsearch.com/search?s_pt=hp&s_gl=NL&query=voorbeeld+cv+competenties&invocationType=tb50hpcnnbie7-nl-nl",
- "medium": "search",
- "source": "AOL",
- "term": "voorbeeld cv competenties",
- "known": true
- },
- {
- "spec": "Ask search",
- "uri": "http://uk.search-results.com/web?qsrc=1&o=1921&l=dis&q=pendulums&dm=ctry&atb=sysid%3D406%3Aappid%3D113%3Auid%3D8f40f651e7b608b5%3Auc%3D1346336505%3Aqu%3Dpendulums%3Asrc%3Dcrt%3Ao%3D1921&locale=en_GB",
- "medium": "search",
- "source": "Ask",
- "term": "pendulums",
- "known": true
- },
- {
- "spec": "Mail.ru search",
- "uri": "http://go.mail.ru/search?q=Gothic%20Tarot%20Cards&where=any&num=10&rch=e&sf=20",
- "medium": "search",
- "source": "Mail.ru",
- "term": "Gothic Tarot Cards",
- "known": true
- },
- {
- "spec": "Yandex search",
- "uri": "http://images.yandex.ru/yandsearch?text=Blue%20Angel%20Oracle%20Blue%20Angel%20Oracle&noreask=1&pos=16&rpt=simage&lr=45&img_url=http%3A%2F%2Fmdm.pbzstatic.com%2Foracles%2Fblue-angel-oracle%2Fbox-small.png",
- "medium": "search",
- "source": "Yandex Images",
- "term": "Blue Angel Oracle Blue Angel Oracle",
- "known": true
- },
- {
- "spec": "Ask toolbar search",
- "uri": "http://search.tb.ask.com/search/GGmain.jhtml?cb=AYY&pg=GGmain&p2=%5EAYY%5Exdm071%5EYYA%5Eid&n=77fdaa55&qid=c2678d9147654034bb8b16daa7bfb48c&ss=sub&st=hp&ptb=F9FC6C22-EAE6-4D1E-8126-A70119B6E02F&si=flvrunner&tpr=hst&searchfor=CARA+MEMASAK+CUMI+CUMI&ots=1219016089614",
- "medium": "search",
- "source": "Ask Toolbar",
- "term": "CARA MEMASAK CUMI CUMI",
- "known": true
- },
- {
- "spec": "Ask toolbar search #2",
- "uri": "http://search.tb.ask.com/search/GGmain.jhtml?&st=hp&p2=%5EZU%5Exdm458%5EYYA%5Eus&n=77fda1bd&ptb=F0B68CA5-4791-4376-BFCC-5F0100329FB6&si=CMKg9-nX07oCFSjZQgodcikACQ&tpr=hpsbsug&searchfor=test",
- "medium": "search",
- "source": "Ask Toolbar",
- "term": "test",
- "known": true
- },
- {
- "spec": "Voila search",
- "uri": "http://search.ke.voila.fr/?module=voila&bhv=web_fr&kw=test",
- "medium": "search",
- "source": "Voila",
- "term": "test",
- "known": true
- },
- {
- "spec": "Dale search",
- "uri": "http://www.dalesearch.com/?q=+lego.nl+%2Fclub&s=web&as=0&rlz=0&babsrc=HP_ss",
- "medium": "search",
- "source": "Dalesearch",
- "term": " lego.nl /club",
- "known": true
- },
- {
- "spec": "Twitter redirect",
- "uri": "http://t.co/chrgFZDb",
- "medium": "social",
- "source": "Twitter",
- "term": null,
- "known": true
- },
- {
- "spec": "Facebook social",
- "uri": "http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.psychicbazaar.com&h=yAQHZtXxS&s=1",
- "medium": "social",
- "source": "Facebook",
- "term": null,
- "known": true
- },
- {
- "spec": "Facebook mobile",
- "uri": "http://m.facebook.com/l.php?u=http%3A%2F%2Fwww.psychicbazaar.com%2Fblog%2F2012%2F09%2Fpsychic-bazaar-reviews-tarot-foundations-31-days-to-read-tarot-with-confidence%2F&h=kAQGXKbf9&s=1",
- "medium": "social",
- "source": "Facebook",
- "term": null,
- "known": true
- },
- {
- "spec": "Odnoklassniki",
- "uri": "http://www.odnoklassniki.ru/dk?cmd=logExternal&st._aid=Conversations_Openlink&st.name=externalLinkRedirect&st.link=http%3A%2F%2Fwww.psychicbazaar.com%2Foracles%2F187-blue-angel-oracle.html",
- "medium": "social",
- "source": "Odnoklassniki",
- "term": null,
- "known": true
- },
- {
- "spec": "Tumblr social #1",
- "uri": "http://www.tumblr.com/dashboard",
- "medium": "social",
- "source": "Tumblr",
- "term": null,
- "known": true
- },
- {
- "spec": "Tumblr w subdomain",
- "uri": "http://psychicbazaar.tumblr.com/",
- "medium": "social",
- "source": "Tumblr",
- "term": null,
- "known": true
- },
- {
- "spec": "Yahoo! Mail",
- "uri": "http://36ohk6dgmcd1n-c.c.yom.mail.yahoo.net/om/api/1.0/openmail.app.invoke/36ohk6dgmcd1n/11/1.0.35/us/en-US/view.html/0",
- "medium": "email",
- "source": "Yahoo! Mail",
- "term": null,
- "known": true
- },
- {
- "spec": "Outlook.com mail",
- "uri": "http://co106w.col106.mail.live.com/default.aspx?rru=inbox",
- "medium": "email",
- "source": "Outlook.com",
- "term": null,
- "known": true
- },
- {
- "spec": "Orange Webmail",
- "uri": "http://webmail1m.orange.fr/webmail/fr_FR/read.html?FOLDER=SF_INBOX&IDMSG=8594&check=&SORTBY=31",
- "medium": "email",
- "source": "Orange Webmail",
- "term": null,
- "known": true
- },
- {
- "spec": "Internal HTTP",
- "uri": "http://www.snowplowanalytics.com/about/team",
- "medium": "internal",
- "source": null,
- "term": null,
- "known": false
- },
- {
- "spec": "Internal HTTPS",
- "uri": "https://www.snowplowanalytics.com/account/profile",
- "medium": "internal",
- "source": null,
- "term": null,
- "known": false
- },
- {
- "spec": "Internal subdomain HTTP",
- "uri": "http://www.subdomain1.snowplowanalytics.com/account/profile",
- "medium": "internal",
- "source": null,
- "term": null,
- "known": false
- },
- {
- "spec": "Internal subdomain HTTPS",
- "uri": "http://www.subdomain2.snowplowanalytics.com/account/profile",
- "medium": "internal",
- "source": null,
- "term": null,
- "known": false
- }
-]
diff --git a/vendor/snowplow/referer-parser/resources/referers.yml b/vendor/snowplow/referer-parser/resources/referers.yml
deleted file mode 100644
index e1ecf54f7..000000000
--- a/vendor/snowplow/referer-parser/resources/referers.yml
+++ /dev/null
@@ -1,3621 +0,0 @@
-# #######################################################################################################
-#
-# ALL SUPPORTED REFERERS
-#
-# Broken down into:
-#
-# 1. Medium-unknown providers
-# 2. Email providers
-# 3. Social providers
-# 4. Search providers
-
-
-# #######################################################################################################
-#
-# MEDIUM-UNKNOWN PROVIDERS
-#
-# We know the source, but not the medium.
-# This section is useful for reducing false positives in the other sections
-
-unknown:
-
- Google:
- domains:
- - support.google.com
- - developers.google.com
- - maps.google.com
- - accounts.google.com
- - drive.google.com
- - sites.google.com
- - groups.google.com
- - groups.google.co.uk
- - news.google.co.uk
-
- Yahoo!:
- domains:
- - finance.yahoo.com
- - news.yahoo.com
- - eurosport.yahoo.com
- - sports.yahoo.com
- - astrology.yahoo.com
- - travel.yahoo.com
- - answers.yahoo.com
- - screen.yahoo.com
- - weather.yahoo.com
- - messenger.yahoo.com
- - games.yahoo.com
- - shopping.yahoo.net
- - movies.yahoo.com
- - cars.yahoo.com
- - lifestyle.yahoo.com
- - omg.yahoo.com
- - match.yahoo.net
-
- Taboola:
- domains:
- - trc.taboola.com
- - api.taboola.com
-
- Outbrain:
- domains:
- - paid.outbrain.com
-
-
-# #######################################################################################################
-#
-# EMAIL PROVIDERS
-
-email:
-
- 126 Mail:
- domains:
- - mail.126.com
-
- 163 Mail:
- domains:
- - mail.163.com
-
- AOL Mail:
- domains:
- - mail.aol.com
-
- Bigpond:
- domains:
- - webmail.bigpond.com
- - webmail2.bigpond.com
-
- Daum Mail:
- domains:
- - mail2.daum.net
-
- Gmail:
- domains:
- - mail.google.com
-
- Naver Mail:
- domains:
- - mail.naver.com
-
- Optus Zoo:
- domains:
- - webmail.optuszoo.com.au
-
- Orange Webmail:
- domains:
- - orange.fr/webmail
-
- Outlook.com:
- domains:
- - mail.live.com
-
- QQ Mail:
- domains:
- - mail.qq.com
-
- Seznam Mail:
- domains:
- - email.seznam.cz
-
- Yahoo! Mail:
- domains:
- - mail.yahoo.net
- - mail.yahoo.com
- - mail.yahoo.co.uk
- - mail.yahoo.co.jp
-
- Mynet Mail:
- domains:
- - mail.mynet.com
-
-
-# #######################################################################################################
-#
-# SOCIAL PROVIDERS
-
-social:
-
- Facebook:
- domains:
- - facebook.com
- - fb.me
- - m.facebook.com
- - l.facebook.com
- - lm.facebook.com
-
- Qzone:
- domains:
- - qzone.qq.com
-
- Habbo:
- domains:
- - habbo.com
-
- Twitter:
- domains:
- - twitter.com
- - t.co
-
- Instagram:
- domains:
- - instagram.com
-
- Youtube:
- domains:
- - youtube.com
- - youtu.be
-
- Vimeo:
- domains:
- - vimeo.com
-
- Renren:
- domains:
- - renren.com
-
- Windows Live Spaces:
- domains:
- - login.live.com
-
- LinkedIn:
- domains:
- - linkedin.com
- - lnkd.in
-
- Bebo:
- domains:
- - bebo.com
-
- Vkontakte:
- domains:
- - vk.com
- - vkontakte.ru
-
- Tagged:
- domains:
- - login.tagged.com
-
- Orkut:
- domains:
- - orkut.com
-
- Myspace:
- domains:
- - myspace.com
-
- Friendster:
- domains:
- - friendster.com
-
- Badoo:
- domains:
- - badoo.com
-
- hi5:
- domains:
- - hi5.com
-
- Netlog:
- domains:
- - netlog.com
-
- Flixster:
- domains:
- - flixster.com
-
- MyLife:
- domains:
- - mylife.ru
-
- Paper.li:
- domains:
- - paper.li
-
- Classmates:
- domains:
- - classmates.com
-
- GitHub:
- domains:
- - github.com
-
- Google+:
- domains:
- - url.google.com
- - plus.google.com
-
- Douban:
- domains:
- - douban.com
-
- Odnoklassniki:
- domains:
- - odnoklassniki.ru
-
- Viadeo:
- domains:
- - viadeo.com
-
- Flickr:
- domains:
- - flickr.com
-
- WeeWorld:
- domains:
- - weeworld.com
-
- Last.fm:
- domains:
- - lastfm.ru
-
- MyHeritage:
- domains:
- - myheritage.com
-
- Xanga:
- domains:
- - xanga.com
-
- Mixi:
- domains:
- - mixi.jp
-
- Cyworld:
- domains:
- - global.cyworld.com
-
- Gaia Online:
- domains:
- - gaiaonline.com
-
- Skyrock:
- domains:
- - skyrock.com
-
- BlackPlanet:
- domains:
- - blackplanet.com
-
- myYearbook:
- domains:
- - myyearbook.com
-
- Fotolog:
- domains:
- - fotolog.com
-
- Friends Reunited:
- domains:
- - friendsreunited.com
-
- LiveJournal:
- domains:
- - livejournal.ru
-
- StudiVZ:
- domains:
- - studivz.net
-
- StackOverflow:
- domains:
- - stackoverflow.com
-
- Sonico.com:
- domains:
- - sonico.com
-
- Pinterest:
- domains:
- - pinterest.com
-
- Plaxo:
- domains:
- - plaxo.com
-
- Geni:
- domains:
- - geni.com
-
- Tuenti:
- domains:
- - tuenti.com
-
- XING:
- domains:
- - xing.com
-
- Taringa!:
- domains:
- - taringa.net
-
- Tumblr:
- domains:
- - tumblr.com
-
- Nasza-klasa.pl:
- domains:
- - nk.pl
-
- StumbleUpon:
- domains:
- - stumbleupon.com
-
- SourceForge:
- domains:
- - sourceforge.net
-
- Hyves:
- domains:
- - hyves.nl
-
- WAYN:
- domains:
- - wayn.com
-
- Buzznet:
- domains:
- - wayn.com
-
- Multiply:
- domains:
- - multiply.com
-
- Foursquare:
- domains:
- - foursquare.com
-
- vKruguDruzei.ru:
- domains:
- - vkrugudruzei.ru
-
- Mail.ru:
- domains:
- - my.mail.ru
-
- MoiKrug.ru:
- domains:
- - moikrug.ru
-
- Reddit:
- domains:
- - reddit.com
-
- Hacker News:
- domains:
- - news.ycombinator.com
-
- Identi.ca:
- domains:
- - identi.ca
-
- Weibo:
- domains:
- - weibo.com
- - t.cn
-
- Delicious:
- domains:
- - delicious.com
-
- Pocket:
- domains:
- - getpocket.com
-
- ITU Sozluk:
- domains:
- - itusozluk.com
-
- Instela:
- domains:
- - instela.com
-
- Eksi Sozluk:
- domains:
- - Sozluk.com
- - sourtimes.org
-
- Uludag Sozluk:
- domains:
- - uludagsozluk.com
- - ulusozluk.com
-
- Inci Sozluk:
- domains:
- - inci.sozlukspot.com
- - incisozluk.com
- - incisozluk.cc
-
- Hocam.com:
- domains:
- - hocam.com
-
- Donanimhaber:
- domains:
- - donanimhaber.com
-
- Disqus:
- domains:
- - redirect.disqus.com
- - disq.us
- - disqus.com
-
- Quora:
- domains:
- - quora.com
-
-# #######################################################################################################
-#
-# SEARCH PROVIDERS
-
-search:
-
- 1.cz:
- parameters:
- - q
- domains:
- - 1.cz
-
- # 123people TODO
-
- 1und1:
- parameters:
- - su
- domains:
- - search.1und1.de
-
- 360.cn:
- parameters:
- - q
- domains:
- - so.360.cn
- - www.so.com
-
- Abacho:
- parameters:
- - q
- domains:
- - www.abacho.de
- - www.abacho.com
- - www.abacho.co.uk
- - www.se.abacho.com
- - www.tr.abacho.com
- - www.abacho.at
- - www.abacho.fr
- - www.abacho.es
- - www.abacho.ch
- - www.abacho.it
-
- ABCsøk:
- parameters:
- - q
- domains:
- - abcsolk.no
- - verden.abcsok.no
-
- Acoon:
- parameters:
- - begriff
- domains:
- - www.acoon.de
-
- Alexa:
- parameters:
- - q
- domains:
- - alexa.com
- - search.toolbars.alexa.com
-
- Alice Adsl:
- parameters:
- - q
- domains:
- - rechercher.aliceadsl.fr
-
- AllTheWeb:
- parameters:
- - q
- domains:
- - www.alltheweb.com
-
- all.by:
- parameters:
- - query
- domains:
- - all.by
-
- Altavista:
- parameters:
- - q
- domains:
- - www.altavista.com
- - search.altavista.com
- - listings.altavista.com
- - altavista.de
- - altavista.fr
- - be-nl.altavista.com
- - be-fr.altavista.com
-
- Amazon:
- parameters:
- - keywords
- domains:
- - amazon.com
- - www.amazon.com
-
- AOL:
- parameters:
- - q
- - query
- domains:
- - search.aol.com
- - search.aol.it
- - aolsearch.aol.com
- - aolsearch.com
- - www.aolrecherche.aol.fr
- - www.aolrecherches.aol.fr
- - www.aolimages.aol.fr
- - aim.search.aol.com
- - www.recherche.aol.fr
- - find.web.aol.com
- - recherche.aol.ca
- - aolsearch.aol.co.uk
- - search.aol.co.uk
- - aolrecherche.aol.fr
- - sucheaol.aol.de
- - suche.aol.de
- - suche.aolsvc.de
- - aolbusqueda.aol.com.mx
- - alicesuche.aol.de
- - alicesuchet.aol.de
- - suchet2.aol.de
- - search.hp.my.aol.com.au
- - search.hp.my.aol.de
- - search.hp.my.aol.it
- - search-intl.netscape.com
-
- Apollo Latvia:
- parameters:
- - q
- domains:
- - apollo.lv/portal/search/
-
- APOLL07:
- parameters:
- - query
- domains:
- - apollo7.de
-
- Apontador:
- parameters:
- - q
- domains:
- - apontador.com.br
- - www.apontador.com.br
-
- Aport:
- parameters:
- - r
- domains:
- - sm.aport.ru
-
- arama:
- parameters:
- - q
- domains:
- - arama.com
-
- Arcor:
- parameters:
- - Keywords
- domains:
- - www.arcor.de
-
- Arianna:
- parameters:
- - query
- domains:
- - arianna.libero.it
- - www.arianna.com
-
- Ask:
- parameters:
- - q
- domains:
- - ask.com
- - www.ask.com
- - web.ask.com
- - int.ask.com
- - mws.ask.com
- - uk.ask.com
- - images.ask.com
- - ask.reference.com
- - www.askkids.com
- - iwon.ask.com
- - www.ask.co.uk
- - www.qbyrd.com
- - search-results.com
- - uk.search-results.com
- - www.search-results.com
- - int.search-results.com
-
- Ask Toolbar:
- parameters:
- - searchfor
- domains:
- - search.tb.ask.com
-
- Atlas:
- parameters:
- - q
- domains:
- - searchatlas.centrum.cz
-
- Austronaut:
- parameters:
- - q
- domains:
- - www2.austronaut.at
- - www1.astronaut.at
-
- Babylon:
- parameters:
- - q
- domains:
- - search.babylon.com
- - searchassist.babylon.com
-
- Baidu:
- parameters:
- - wd
- - word
- - kw
- - k
- domains:
- - www.baidu.com
- - www1.baidu.com
- - zhidao.baidu.com
- - tieba.baidu.com
- - news.baidu.com
- - web.gougou.com
-
- Biglobe:
- parameters:
- - q
- domains:
- - cgi.search.biglobe.ne.jp
-
- Bing:
- parameters:
- - q
- - Q
- domains:
- - bing.com
- - www.bing.com
- - msnbc.msn.com
- - dizionario.it.msn.com
- - cc.bingj.com
- - m.bing.com
-
- Bing Images:
- parameters:
- - q
- - Q
- domains:
- - bing.com/images/search
- - www.bing.com/images/search
-
- blekko:
- parameters:
- - q
- domains:
- - blekko.com
-
- Blogdigger:
- parameters:
- - q
- domains:
- - www.blogdigger.com
-
- Blogpulse:
- parameters:
- - query
- domains:
- - www.blogpulse.com
-
- Bluewin:
- parameters:
- - searchTerm
- domains:
- - search.bluewin.ch
-
- canoe.ca:
- parameters:
- - q
- domains:
- - web.canoe.ca
-
- Centrum:
- parameters:
- - q
- domains:
- - serach.centrum.cz
- - morfeo.centrum.cz
-
- Certified-Toolbar:
- parameters:
- - q
- domains:
- - search.certified-toolbar.com
-
- Charter:
- parameters:
- - q
- domains:
- - www.charter.net
-
- Clix:
- parameters:
- - question
- domains:
- - pesquisa.clix.pt
-
- Comcast:
- parameters:
- - q
- domains:
- - search.comcast.net
-
- Conduit:
- parameters:
- - q
- domains:
- - search.conduit.com
-
- Comcast:
- parameters:
- - q
- domains:
- - serach.comcast.net
-
- Crawler:
- parameters:
- - q
- domains:
- - www.crawler.com
-
- Compuserve:
- parameters:
- - query
- domains:
- - websearch.cs.com
-
- Cuil:
- parameters:
- - q
- domains:
- - www.cuil.com
-
- Daemon search:
- parameters:
- - q
- domains:
- - daemon-search.com
- - my.daemon-search.com
-
- Dalesearch:
- parameters:
- - q
- domains:
- - www.dalesearch.com
-
- DasOertliche:
- parameters:
- - kw
- domains:
- - www.dasoertliche.de
-
- DasTelefonbuch:
- parameters:
- - kw
- domains:
- - www1.dastelefonbuch.de
-
- Daum:
- parameters:
- - q
- domains:
- - search.daum.net
-
- Delfi latvia:
- parameters:
- - q
- domains:
- - smart.delfi.lv
-
- Delfi:
- parameters:
- - q
- domains:
- - otsing.delfi.ee
-
- Digg:
- parameters:
- - s
- domains:
- - digg.com
-
- dmoz:
- parameters:
- - q
- domains:
- - dmoz.org
- - editors.dmoz.org
-
- DuckDuckGo:
- parameters:
- - q
- domains:
- - duckduckgo.com
-
- earthlink:
- parameters:
- - q
- domains:
- - search.earthlink.net
-
- Ecosia:
- parameters:
- - q
- domains:
- - ecosia.org
-
- Eniro:
- parameters:
- - q
- - search_word
- domains:
- - www.eniro.se
-
- Eurip:
- parameters:
- - q
- domains:
- - www.eurip.com
-
- Euroseek:
- parameters:
- - string
- domains:
- - www.euroseek.com
-
- Everyclick:
- parameters:
- - keyword
- domains:
- - www.everyclick.com
-
- Excite:
- parameters:
- - q
- - search
- domains:
- - search.excite.it
- - search.excite.fr
- - search.excite.de
- - search.excite.co.uk
- - serach.excite.es
- - search.excite.nl
- - msxml.excite.com
- - www.excite.co.jp
-
- Exalead:
- parameters:
- - q
- domains:
- - www.exalead.fr
- - www.exalead.com
-
- eo:
- parameters:
- - x_query
- domains:
- - eo.st
-
- Fast Browser Search:
- parameters:
- - q
- domains:
- - www.fastbrowsersearch.com
-
- Francite:
- parameters:
- - name
- domains:
- - recherche.francite.com
-
- Findwide:
- parameters:
- - k
- domains:
- - search.findwide.com
-
- Fireball:
- parameters:
- - q
- domains:
- - www.fireball.de
-
- Firstfind:
- parameters:
- - qry
- domains:
- - www.firstsfind.com
-
- Fixsuche:
- parameters:
- - q
- domains:
- - www.fixsuche.de
-
- Flix:
- parameters:
- - keyword
- domains:
- - www.flix.de
-
- Forestle:
- parameters:
- - q
- domains:
- - forestle.org
- - www.forestle.org
- - forestle.mobi
-
- Free:
- parameters:
- - q
- domains:
- - search.free.fr
- - search1-2.free.fr
- - search1-1.free.fr
-
- Freecause:
- parameters:
- - p
- domains:
- - search.freecause.com
-
- Freenet:
- parameters:
- - query
- - Keywords
- domains:
- - suche.freenet.de
-
- Freshweather:
- parameters:
- - q
- domains:
- - www.fresh-weather.com
-
- FriendFeed:
- parameters:
- - q
- domains:
- - friendfeed.com
-
- GAIS:
- parameters:
- - q
- domains:
- - gais.cs.ccu.edu.tw
-
- Geona:
- parameters:
- - q
- domains:
- - geona.net
-
- Genieo:
- parameters:
- - q
- domains:
- - search.genieo.com
-
- Gigablast:
- parameters:
- - q
- domains:
- - www.gigablast.com
- - dir.gigablast.com
-
- Globososo:
- parameters:
- - q
- domains:
- - searches.globososo.com
- - search.globososo.com
-
- GMX:
- parameters:
- - su
- domains:
- - suche.gmx.net
-
- Gnadenmeer:
- parameters:
- - keyword
- domains:
- - www.gnadenmeer.de
-
- Gomeo:
- parameters:
- - Keywords
- domains:
- - www.gomeo.com
-
- goo:
- parameters:
- - MT
- domains:
- - search.goo.ne.jp
- - ocnsearch.goo.ne.jp
-
- Google:
- parameters:
- - q
- - query # For www.cnn.com (powered by Google)
- - Keywords # For gooofullsearch.com (powered by Google)
- domains:
- - www.google.com
- - www.google.ac
- - www.google.ad
- - www.google.com.af
- - www.google.com.ag
- - www.google.com.ai
- - www.google.am
- - www.google.it.ao
- - www.google.com.ar
- - www.google.as
- - www.google.at
- - www.google.com.au
- - www.google.az
- - www.google.ba
- - www.google.com.bd
- - www.google.be
- - www.google.bf
- - www.google.bg
- - www.google.com.bh
- - www.google.bi
- - www.google.bj
- - www.google.com.bn
- - www.google.com.bo
- - www.google.com.br
- - www.google.bs
- - www.google.co.bw
- - www.google.com.by
- - www.google.by
- - www.google.com.bz
- - www.google.ca
- - www.google.com.kh
- - www.google.cc
- - www.google.cd
- - www.google.cf
- - www.google.cat
- - www.google.cg
- - www.google.ch
- - www.google.ci
- - www.google.co.ck
- - www.google.cl
- - www.google.cm
- - www.google.cn
- - www.google.com.co
- - www.google.co.cr
- - www.google.com.cu
- - www.google.cv
- - www.google.com.cy
- - www.google.cz
- - www.google.de
- - www.google.dj
- - www.google.dk
- - www.google.dm
- - www.google.com.do
- - www.google.dz
- - www.google.com.ec
- - www.google.ee
- - www.google.com.eg
- - www.google.es
- - www.google.com.et
- - www.google.fi
- - www.google.com.fj
- - www.google.fm
- - www.google.fr
- - www.google.ga
- - www.google.gd
- - www.google.ge
- - www.google.gf
- - www.google.gg
- - www.google.com.gh
- - www.google.com.gi
- - www.google.gl
- - www.google.gm
- - www.google.gp
- - www.google.gr
- - www.google.com.gt
- - www.google.gy
- - www.google.com.hk
- - www.google.hn
- - www.google.hr
- - www.google.ht
- - www.google.hu
- - www.google.co.id
- - www.google.iq
- - www.google.ie
- - www.google.co.il
- - www.google.im
- - www.google.co.in
- - www.google.io
- - www.google.is
- - www.google.it
- - www.google.je
- - www.google.com.jm
- - www.google.jo
- - www.google.co.jp
- - www.google.co.ke
- - www.google.com.kh
- - www.google.ki
- - www.google.kg
- - www.google.co.kr
- - www.google.com.kw
- - www.google.kz
- - www.google.la
- - www.google.com.lb
- - www.google.com.lc
- - www.google.li
- - www.google.lk
- - www.google.co.ls
- - www.google.lt
- - www.google.lu
- - www.google.lv
- - www.google.com.ly
- - www.google.co.ma
- - www.google.md
- - www.google.me
- - www.google.mg
- - www.google.mk
- - www.google.ml
- - www.google.mn
- - www.google.ms
- - www.google.com.mt
- - www.google.mu
- - www.google.mv
- - www.google.mw
- - www.google.com.mx
- - www.google.com.my
- - www.google.co.mz
- - www.google.com.na
- - www.google.ne
- - www.google.com.nf
- - www.google.com.ng
- - www.google.com.ni
- - www.google.nl
- - www.google.no
- - www.google.com.np
- - www.google.nr
- - www.google.nu
- - www.google.co.nz
- - www.google.com.om
- - www.google.com.pa
- - www.google.com.pe
- - www.google.com.ph
- - www.google.com.pk
- - www.google.pl
- - www.google.pn
- - www.google.com.pr
- - www.google.ps
- - www.google.pt
- - www.google.com.py
- - www.google.com.qa
- - www.google.ro
- - www.google.rs
- - www.google.ru
- - www.google.rw
- - www.google.com.sa
- - www.google.com.sb
- - www.google.sc
- - www.google.se
- - www.google.com.sg
- - www.google.sh
- - www.google.si
- - www.google.sk
- - www.google.com.sl
- - www.google.sn
- - www.google.sm
- - www.google.so
- - www.google.st
- - www.google.com.sv
- - www.google.td
- - www.google.tg
- - www.google.co.th
- - www.google.com.tj
- - www.google.tk
- - www.google.tl
- - www.google.tm
- - www.google.to
- - www.google.com.tn
- - www.google.com.tr
- - www.google.tt
- - www.google.com.tw
- - www.google.co.tz
- - www.google.com.ua
- - www.google.co.ug
- - www.google.ae
- - www.google.co.uk
- - www.google.us
- - www.google.com.uy
- - www.google.co.uz
- - www.google.com.vc
- - www.google.co.ve
- - www.google.vg
- - www.google.co.vi
- - www.google.com.vn
- - www.google.vu
- - www.google.ws
- - www.google.co.za
- - www.google.co.zm
- - www.google.co.zw
- - google.com
- - google.ac
- - google.ad
- - google.com.af
- - google.com.ag
- - google.com.ai
- - google.am
- - google.it.ao
- - google.com.ar
- - google.as
- - google.at
- - google.com.au
- - google.az
- - google.ba
- - google.com.bd
- - google.be
- - google.bf
- - google.bg
- - google.com.bh
- - google.bi
- - google.bj
- - google.com.bn
- - google.com.bo
- - google.com.br
- - google.bs
- - google.co.bw
- - google.com.by
- - google.by
- - google.com.bz
- - google.ca
- - google.com.kh
- - google.cc
- - google.cd
- - google.cf
- - google.cat
- - google.cg
- - google.ch
- - google.ci
- - google.co.ck
- - google.cl
- - google.cm
- - google.cn
- - google.com.co
- - google.co.cr
- - google.com.cu
- - google.cv
- - google.com.cy
- - google.cz
- - google.de
- - google.dj
- - google.dk
- - google.dm
- - google.com.do
- - google.dz
- - google.com.ec
- - google.ee
- - google.com.eg
- - google.es
- - google.com.et
- - google.fi
- - google.com.fj
- - google.fm
- - google.fr
- - google.ga
- - google.gd
- - google.ge
- - google.gf
- - google.gg
- - google.com.gh
- - google.com.gi
- - google.gl
- - google.gm
- - google.gp
- - google.gr
- - google.com.gt
- - google.gy
- - google.com.hk
- - google.hn
- - google.hr
- - google.ht
- - google.hu
- - google.co.id
- - google.iq
- - google.ie
- - google.co.il
- - google.im
- - google.co.in
- - google.io
- - google.is
- - google.it
- - google.je
- - google.com.jm
- - google.jo
- - google.co.jp
- - google.co.ke
- - google.com.kh
- - google.ki
- - google.kg
- - google.co.kr
- - google.com.kw
- - google.kz
- - google.la
- - google.com.lb
- - google.com.lc
- - google.li
- - google.lk
- - google.co.ls
- - google.lt
- - google.lu
- - google.lv
- - google.com.ly
- - google.co.ma
- - google.md
- - google.me
- - google.mg
- - google.mk
- - google.ml
- - google.mn
- - google.ms
- - google.com.mt
- - google.mu
- - google.mv
- - google.mw
- - google.com.mx
- - google.com.my
- - google.co.mz
- - google.com.na
- - google.ne
- - google.com.nf
- - google.com.ng
- - google.com.ni
- - google.nl
- - google.no
- - google.com.np
- - google.nr
- - google.nu
- - google.co.nz
- - google.com.om
- - google.com.pa
- - google.com.pe
- - google.com.ph
- - google.com.pk
- - google.pl
- - google.pn
- - google.com.pr
- - google.ps
- - google.pt
- - google.com.py
- - google.com.qa
- - google.ro
- - google.rs
- - google.ru
- - google.rw
- - google.com.sa
- - google.com.sb
- - google.sc
- - google.se
- - google.com.sg
- - google.sh
- - google.si
- - google.sk
- - google.com.sl
- - google.sn
- - google.sm
- - google.so
- - google.st
- - google.com.sv
- - google.td
- - google.tg
- - google.co.th
- - google.com.tj
- - google.tk
- - google.tl
- - google.tm
- - google.to
- - google.com.tn
- - google.com.tr
- - google.tt
- - google.com.tw
- - google.co.tz
- - google.com.ua
- - google.co.ug
- - google.ae
- - google.co.uk
- - google.us
- - google.com.uy
- - google.co.uz
- - google.com.vc
- - google.co.ve
- - google.vg
- - google.co.vi
- - google.com.vn
- - google.vu
- - google.ws
- - google.co.za
- - google.co.zm
- - google.co.zw
- # powered by Google
- - search.avg.com
- - isearch.avg.com
- - www.cnn.com
- - darkoogle.com
- - search.darkoogle.com
- - search.foxtab.com
- - www.gooofullsearch.com
- - search.hiyo.com
- - search.incredimail.com
- - search1.incredimail.com
- - search2.incredimail.com
- - search3.incredimail.com
- - search4.incredimail.com
- - search.incredibar.com
- - search.sweetim.com
- - www.fastweb.it
- - search.juno.com
- - find.tdc.dk
- - searchresults.verizon.com
- - search.walla.co.il
- - search.alot.com
- # Google Earch
- - www.googleearth.de
- - www.googleearth.fr
- # Google Cache
- - webcache.googleusercontent.com
- # Google SSL
- - encrypted.google.com
- # Syndicated search
- - googlesyndicatedsearch.com
-
- Google Blogsearch:
- parameters:
- - q
- domains:
- - blogsearch.google.ac
- - blogsearch.google.ad
- - blogsearch.google.ae
- - blogsearch.google.am
- - blogsearch.google.as
- - blogsearch.google.at
- - blogsearch.google.az
- - blogsearch.google.ba
- - blogsearch.google.be
- - blogsearch.google.bf
- - blogsearch.google.bg
- - blogsearch.google.bi
- - blogsearch.google.bj
- - blogsearch.google.bs
- - blogsearch.google.by
- - blogsearch.google.ca
- - blogsearch.google.cat
- - blogsearch.google.cc
- - blogsearch.google.cd
- - blogsearch.google.cf
- - blogsearch.google.cg
- - blogsearch.google.ch
- - blogsearch.google.ci
- - blogsearch.google.cl
- - blogsearch.google.cm
- - blogsearch.google.cn
- - blogsearch.google.co.bw
- - blogsearch.google.co.ck
- - blogsearch.google.co.cr
- - blogsearch.google.co.id
- - blogsearch.google.co.il
- - blogsearch.google.co.in
- - blogsearch.google.co.jp
- - blogsearch.google.co.ke
- - blogsearch.google.co.kr
- - blogsearch.google.co.ls
- - blogsearch.google.co.ma
- - blogsearch.google.co.mz
- - blogsearch.google.co.nz
- - blogsearch.google.co.th
- - blogsearch.google.co.tz
- - blogsearch.google.co.ug
- - blogsearch.google.co.uk
- - blogsearch.google.co.uz
- - blogsearch.google.co.ve
- - blogsearch.google.co.vi
- - blogsearch.google.co.za
- - blogsearch.google.co.zm
- - blogsearch.google.co.zw
- - blogsearch.google.com
- - blogsearch.google.com.af
- - blogsearch.google.com.ag
- - blogsearch.google.com.ai
- - blogsearch.google.com.ar
- - blogsearch.google.com.au
- - blogsearch.google.com.bd
- - blogsearch.google.com.bh
- - blogsearch.google.com.bn
- - blogsearch.google.com.bo
- - blogsearch.google.com.br
- - blogsearch.google.com.by
- - blogsearch.google.com.bz
- - blogsearch.google.com.co
- - blogsearch.google.com.cu
- - blogsearch.google.com.cy
- - blogsearch.google.com.do
- - blogsearch.google.com.ec
- - blogsearch.google.com.eg
- - blogsearch.google.com.et
- - blogsearch.google.com.fj
- - blogsearch.google.com.gh
- - blogsearch.google.com.gi
- - blogsearch.google.com.gt
- - blogsearch.google.com.hk
- - blogsearch.google.com.jm
- - blogsearch.google.com.kh
- - blogsearch.google.com.kh
- - blogsearch.google.com.kw
- - blogsearch.google.com.lb
- - blogsearch.google.com.lc
- - blogsearch.google.com.ly
- - blogsearch.google.com.mt
- - blogsearch.google.com.mx
- - blogsearch.google.com.my
- - blogsearch.google.com.na
- - blogsearch.google.com.nf
- - blogsearch.google.com.ng
- - blogsearch.google.com.ni
- - blogsearch.google.com.np
- - blogsearch.google.com.om
- - blogsearch.google.com.pa
- - blogsearch.google.com.pe
- - blogsearch.google.com.ph
- - blogsearch.google.com.pk
- - blogsearch.google.com.pr
- - blogsearch.google.com.py
- - blogsearch.google.com.qa
- - blogsearch.google.com.sa
- - blogsearch.google.com.sb
- - blogsearch.google.com.sg
- - blogsearch.google.com.sl
- - blogsearch.google.com.sv
- - blogsearch.google.com.tj
- - blogsearch.google.com.tn
- - blogsearch.google.com.tr
- - blogsearch.google.com.tw
- - blogsearch.google.com.ua
- - blogsearch.google.com.uy
- - blogsearch.google.com.vc
- - blogsearch.google.com.vn
- - blogsearch.google.cv
- - blogsearch.google.cz
- - blogsearch.google.de
- - blogsearch.google.dj
- - blogsearch.google.dk
- - blogsearch.google.dm
- - blogsearch.google.dz
- - blogsearch.google.ee
- - blogsearch.google.es
- - blogsearch.google.fi
- - blogsearch.google.fm
- - blogsearch.google.fr
- - blogsearch.google.ga
- - blogsearch.google.gd
- - blogsearch.google.ge
- - blogsearch.google.gf
- - blogsearch.google.gg
- - blogsearch.google.gl
- - blogsearch.google.gm
- - blogsearch.google.gp
- - blogsearch.google.gr
- - blogsearch.google.gy
- - blogsearch.google.hn
- - blogsearch.google.hr
- - blogsearch.google.ht
- - blogsearch.google.hu
- - blogsearch.google.ie
- - blogsearch.google.im
- - blogsearch.google.io
- - blogsearch.google.iq
- - blogsearch.google.is
- - blogsearch.google.it
- - blogsearch.google.it.ao
- - blogsearch.google.je
- - blogsearch.google.jo
- - blogsearch.google.kg
- - blogsearch.google.ki
- - blogsearch.google.kz
- - blogsearch.google.la
- - blogsearch.google.li
- - blogsearch.google.lk
- - blogsearch.google.lt
- - blogsearch.google.lu
- - blogsearch.google.lv
- - blogsearch.google.md
- - blogsearch.google.me
- - blogsearch.google.mg
- - blogsearch.google.mk
- - blogsearch.google.ml
- - blogsearch.google.mn
- - blogsearch.google.ms
- - blogsearch.google.mu
- - blogsearch.google.mv
- - blogsearch.google.mw
- - blogsearch.google.ne
- - blogsearch.google.nl
- - blogsearch.google.no
- - blogsearch.google.nr
- - blogsearch.google.nu
- - blogsearch.google.pl
- - blogsearch.google.pn
- - blogsearch.google.ps
- - blogsearch.google.pt
- - blogsearch.google.ro
- - blogsearch.google.rs
- - blogsearch.google.ru
- - blogsearch.google.rw
- - blogsearch.google.sc
- - blogsearch.google.se
- - blogsearch.google.sh
- - blogsearch.google.si
- - blogsearch.google.sk
- - blogsearch.google.sm
- - blogsearch.google.sn
- - blogsearch.google.so
- - blogsearch.google.st
- - blogsearch.google.td
- - blogsearch.google.tg
- - blogsearch.google.tk
- - blogsearch.google.tl
- - blogsearch.google.tm
- - blogsearch.google.to
- - blogsearch.google.tt
- - blogsearch.google.us
- - blogsearch.google.vg
- - blogsearch.google.vu
- - blogsearch.google.ws
-
- Google Images:
- parameters:
- - q
- domains:
- - google.ac/imgres
- - google.ad/imgres
- - google.ae/imgres
- - google.am/imgres
- - google.as/imgres
- - google.at/imgres
- - google.az/imgres
- - google.ba/imgres
- - google.be/imgres
- - google.bf/imgres
- - google.bg/imgres
- - google.bi/imgres
- - google.bj/imgres
- - google.bs/imgres
- - google.by/imgres
- - google.ca/imgres
- - google.cat/imgres
- - google.cc/imgres
- - google.cd/imgres
- - google.cf/imgres
- - google.cg/imgres
- - google.ch/imgres
- - google.ci/imgres
- - google.cl/imgres
- - google.cm/imgres
- - google.cn/imgres
- - google.co.bw/imgres
- - google.co.ck/imgres
- - google.co.cr/imgres
- - google.co.id/imgres
- - google.co.il/imgres
- - google.co.in/imgres
- - google.co.jp/imgres
- - google.co.ke/imgres
- - google.co.kr/imgres
- - google.co.ls/imgres
- - google.co.ma/imgres
- - google.co.mz/imgres
- - google.co.nz/imgres
- - google.co.th/imgres
- - google.co.tz/imgres
- - google.co.ug/imgres
- - google.co.uk/imgres
- - google.co.uz/imgres
- - google.co.ve/imgres
- - google.co.vi/imgres
- - google.co.za/imgres
- - google.co.zm/imgres
- - google.co.zw/imgres
- - google.com/imgres
- - google.com.af/imgres
- - google.com.ag/imgres
- - google.com.ai/imgres
- - google.com.ar/imgres
- - google.com.au/imgres
- - google.com.bd/imgres
- - google.com.bh/imgres
- - google.com.bn/imgres
- - google.com.bo/imgres
- - google.com.br/imgres
- - google.com.by/imgres
- - google.com.bz/imgres
- - google.com.co/imgres
- - google.com.cu/imgres
- - google.com.cy/imgres
- - google.com.do/imgres
- - google.com.ec/imgres
- - google.com.eg/imgres
- - google.com.et/imgres
- - google.com.fj/imgres
- - google.com.gh/imgres
- - google.com.gi/imgres
- - google.com.gt/imgres
- - google.com.hk/imgres
- - google.com.jm/imgres
- - google.com.kh/imgres
- - google.com.kw/imgres
- - google.com.lb/imgres
- - google.com.lc/imgres
- - google.com.ly/imgres
- - google.com.mt/imgres
- - google.com.mx/imgres
- - google.com.my/imgres
- - google.com.na/imgres
- - google.com.nf/imgres
- - google.com.ng/imgres
- - google.com.ni/imgres
- - google.com.np/imgres
- - google.com.om/imgres
- - google.com.pa/imgres
- - google.com.pe/imgres
- - google.com.ph/imgres
- - google.com.pk/imgres
- - google.com.pr/imgres
- - google.com.py/imgres
- - google.com.qa/imgres
- - google.com.sa/imgres
- - google.com.sb/imgres
- - google.com.sg/imgres
- - google.com.sl/imgres
- - google.com.sv/imgres
- - google.com.tj/imgres
- - google.com.tn/imgres
- - google.com.tr/imgres
- - google.com.tw/imgres
- - google.com.ua/imgres
- - google.com.uy/imgres
- - google.com.vc/imgres
- - google.com.vn/imgres
- - google.cv/imgres
- - google.cz/imgres
- - google.de/imgres
- - google.dj/imgres
- - google.dk/imgres
- - google.dm/imgres
- - google.dz/imgres
- - google.ee/imgres
- - google.es/imgres
- - google.fi/imgres
- - google.fm/imgres
- - google.fr/imgres
- - google.ga/imgres
- - google.gd/imgres
- - google.ge/imgres
- - google.gf/imgres
- - google.gg/imgres
- - google.gl/imgres
- - google.gm/imgres
- - google.gp/imgres
- - google.gr/imgres
- - google.gy/imgres
- - google.hn/imgres
- - google.hr/imgres
- - google.ht/imgres
- - google.hu/imgres
- - google.ie/imgres
- - google.im/imgres
- - google.io/imgres
- - google.iq/imgres
- - google.is/imgres
- - google.it/imgres
- - google.it.ao/imgres
- - google.je/imgres
- - google.jo/imgres
- - google.kg/imgres
- - google.ki/imgres
- - google.kz/imgres
- - google.la/imgres
- - google.li/imgres
- - google.lk/imgres
- - google.lt/imgres
- - google.lu/imgres
- - google.lv/imgres
- - google.md/imgres
- - google.me/imgres
- - google.mg/imgres
- - google.mk/imgres
- - google.ml/imgres
- - google.mn/imgres
- - google.ms/imgres
- - google.mu/imgres
- - google.mv/imgres
- - google.mw/imgres
- - google.ne/imgres
- - google.nl/imgres
- - google.no/imgres
- - google.nr/imgres
- - google.nu/imgres
- - google.pl/imgres
- - google.pn/imgres
- - google.ps/imgres
- - google.pt/imgres
- - google.ro/imgres
- - google.rs/imgres
- - google.ru/imgres
- - google.rw/imgres
- - google.sc/imgres
- - google.se/imgres
- - google.sh/imgres
- - google.si/imgres
- - google.sk/imgres
- - google.sm/imgres
- - google.sn/imgres
- - google.so/imgres
- - google.st/imgres
- - google.td/imgres
- - google.tg/imgres
- - google.tk/imgres
- - google.tl/imgres
- - google.tm/imgres
- - google.to/imgres
- - google.tt/imgres
- - google.us/imgres
- - google.vg/imgres
- - google.vu/imgres
- - images.google.ws
- - images.google.ac
- - images.google.ad
- - images.google.ae
- - images.google.am
- - images.google.as
- - images.google.at
- - images.google.az
- - images.google.ba
- - images.google.be
- - images.google.bf
- - images.google.bg
- - images.google.bi
- - images.google.bj
- - images.google.bs
- - images.google.by
- - images.google.ca
- - images.google.cat
- - images.google.cc
- - images.google.cd
- - images.google.cf
- - images.google.cg
- - images.google.ch
- - images.google.ci
- - images.google.cl
- - images.google.cm
- - images.google.cn
- - images.google.co.bw
- - images.google.co.ck
- - images.google.co.cr
- - images.google.co.id
- - images.google.co.il
- - images.google.co.in
- - images.google.co.jp
- - images.google.co.ke
- - images.google.co.kr
- - images.google.co.ls
- - images.google.co.ma
- - images.google.co.mz
- - images.google.co.nz
- - images.google.co.th
- - images.google.co.tz
- - images.google.co.ug
- - images.google.co.uk
- - images.google.co.uz
- - images.google.co.ve
- - images.google.co.vi
- - images.google.co.za
- - images.google.co.zm
- - images.google.co.zw
- - images.google.com
- - images.google.com.af
- - images.google.com.ag
- - images.google.com.ai
- - images.google.com.ar
- - images.google.com.au
- - images.google.com.bd
- - images.google.com.bh
- - images.google.com.bn
- - images.google.com.bo
- - images.google.com.br
- - images.google.com.by
- - images.google.com.bz
- - images.google.com.co
- - images.google.com.cu
- - images.google.com.cy
- - images.google.com.do
- - images.google.com.ec
- - images.google.com.eg
- - images.google.com.et
- - images.google.com.fj
- - images.google.com.gh
- - images.google.com.gi
- - images.google.com.gt
- - images.google.com.hk
- - images.google.com.jm
- - images.google.com.kh
- - images.google.com.kh
- - images.google.com.kw
- - images.google.com.lb
- - images.google.com.lc
- - images.google.com.ly
- - images.google.com.mt
- - images.google.com.mx
- - images.google.com.my
- - images.google.com.na
- - images.google.com.nf
- - images.google.com.ng
- - images.google.com.ni
- - images.google.com.np
- - images.google.com.om
- - images.google.com.pa
- - images.google.com.pe
- - images.google.com.ph
- - images.google.com.pk
- - images.google.com.pr
- - images.google.com.py
- - images.google.com.qa
- - images.google.com.sa
- - images.google.com.sb
- - images.google.com.sg
- - images.google.com.sl
- - images.google.com.sv
- - images.google.com.tj
- - images.google.com.tn
- - images.google.com.tr
- - images.google.com.tw
- - images.google.com.ua
- - images.google.com.uy
- - images.google.com.vc
- - images.google.com.vn
- - images.google.cv
- - images.google.cz
- - images.google.de
- - images.google.dj
- - images.google.dk
- - images.google.dm
- - images.google.dz
- - images.google.ee
- - images.google.es
- - images.google.fi
- - images.google.fm
- - images.google.fr
- - images.google.ga
- - images.google.gd
- - images.google.ge
- - images.google.gf
- - images.google.gg
- - images.google.gl
- - images.google.gm
- - images.google.gp
- - images.google.gr
- - images.google.gy
- - images.google.hn
- - images.google.hr
- - images.google.ht
- - images.google.hu
- - images.google.ie
- - images.google.im
- - images.google.io
- - images.google.iq
- - images.google.is
- - images.google.it
- - images.google.it.ao
- - images.google.je
- - images.google.jo
- - images.google.kg
- - images.google.ki
- - images.google.kz
- - images.google.la
- - images.google.li
- - images.google.lk
- - images.google.lt
- - images.google.lu
- - images.google.lv
- - images.google.md
- - images.google.me
- - images.google.mg
- - images.google.mk
- - images.google.ml
- - images.google.mn
- - images.google.ms
- - images.google.mu
- - images.google.mv
- - images.google.mw
- - images.google.ne
- - images.google.nl
- - images.google.no
- - images.google.nr
- - images.google.nu
- - images.google.pl
- - images.google.pn
- - images.google.ps
- - images.google.pt
- - images.google.ro
- - images.google.rs
- - images.google.ru
- - images.google.rw
- - images.google.sc
- - images.google.se
- - images.google.sh
- - images.google.si
- - images.google.sk
- - images.google.sm
- - images.google.sn
- - images.google.so
- - images.google.st
- - images.google.td
- - images.google.tg
- - images.google.tk
- - images.google.tl
- - images.google.tm
- - images.google.to
- - images.google.tt
- - images.google.us
- - images.google.vg
- - images.google.vu
- - images.google.ws
-
- Google News:
- parameters:
- - q
- domains:
- - news.google.ac
- - news.google.ad
- - news.google.ae
- - news.google.am
- - news.google.as
- - news.google.at
- - news.google.az
- - news.google.ba
- - news.google.be
- - news.google.bf
- - news.google.bg
- - news.google.bi
- - news.google.bj
- - news.google.bs
- - news.google.by
- - news.google.ca
- - news.google.cat
- - news.google.cc
- - news.google.cd
- - news.google.cf
- - news.google.cg
- - news.google.ch
- - news.google.ci
- - news.google.cl
- - news.google.cm
- - news.google.cn
- - news.google.co.bw
- - news.google.co.ck
- - news.google.co.cr
- - news.google.co.id
- - news.google.co.il
- - news.google.co.in
- - news.google.co.jp
- - news.google.co.ke
- - news.google.co.kr
- - news.google.co.ls
- - news.google.co.ma
- - news.google.co.mz
- - news.google.co.nz
- - news.google.co.th
- - news.google.co.tz
- - news.google.co.ug
- - news.google.co.uk
- - news.google.co.uz
- - news.google.co.ve
- - news.google.co.vi
- - news.google.co.za
- - news.google.co.zm
- - news.google.co.zw
- - news.google.com
- - news.google.com.af
- - news.google.com.ag
- - news.google.com.ai
- - news.google.com.ar
- - news.google.com.au
- - news.google.com.bd
- - news.google.com.bh
- - news.google.com.bn
- - news.google.com.bo
- - news.google.com.br
- - news.google.com.by
- - news.google.com.bz
- - news.google.com.co
- - news.google.com.cu
- - news.google.com.cy
- - news.google.com.do
- - news.google.com.ec
- - news.google.com.eg
- - news.google.com.et
- - news.google.com.fj
- - news.google.com.gh
- - news.google.com.gi
- - news.google.com.gt
- - news.google.com.hk
- - news.google.com.jm
- - news.google.com.kh
- - news.google.com.kh
- - news.google.com.kw
- - news.google.com.lb
- - news.google.com.lc
- - news.google.com.ly
- - news.google.com.mt
- - news.google.com.mx
- - news.google.com.my
- - news.google.com.na
- - news.google.com.nf
- - news.google.com.ng
- - news.google.com.ni
- - news.google.com.np
- - news.google.com.om
- - news.google.com.pa
- - news.google.com.pe
- - news.google.com.ph
- - news.google.com.pk
- - news.google.com.pr
- - news.google.com.py
- - news.google.com.qa
- - news.google.com.sa
- - news.google.com.sb
- - news.google.com.sg
- - news.google.com.sl
- - news.google.com.sv
- - news.google.com.tj
- - news.google.com.tn
- - news.google.com.tr
- - news.google.com.tw
- - news.google.com.ua
- - news.google.com.uy
- - news.google.com.vc
- - news.google.com.vn
- - news.google.cv
- - news.google.cz
- - news.google.de
- - news.google.dj
- - news.google.dk
- - news.google.dm
- - news.google.dz
- - news.google.ee
- - news.google.es
- - news.google.fi
- - news.google.fm
- - news.google.fr
- - news.google.ga
- - news.google.gd
- - news.google.ge
- - news.google.gf
- - news.google.gg
- - news.google.gl
- - news.google.gm
- - news.google.gp
- - news.google.gr
- - news.google.gy
- - news.google.hn
- - news.google.hr
- - news.google.ht
- - news.google.hu
- - news.google.ie
- - news.google.im
- - news.google.io
- - news.google.iq
- - news.google.is
- - news.google.it
- - news.google.it.ao
- - news.google.je
- - news.google.jo
- - news.google.kg
- - news.google.ki
- - news.google.kz
- - news.google.la
- - news.google.li
- - news.google.lk
- - news.google.lt
- - news.google.lu
- - news.google.lv
- - news.google.md
- - news.google.me
- - news.google.mg
- - news.google.mk
- - news.google.ml
- - news.google.mn
- - news.google.ms
- - news.google.mu
- - news.google.mv
- - news.google.mw
- - news.google.ne
- - news.google.nl
- - news.google.no
- - news.google.nr
- - news.google.nu
- - news.google.pl
- - news.google.pn
- - news.google.ps
- - news.google.pt
- - news.google.ro
- - news.google.rs
- - news.google.ru
- - news.google.rw
- - news.google.sc
- - news.google.se
- - news.google.sh
- - news.google.si
- - news.google.sk
- - news.google.sm
- - news.google.sn
- - news.google.so
- - news.google.st
- - news.google.td
- - news.google.tg
- - news.google.tk
- - news.google.tl
- - news.google.tm
- - news.google.to
- - news.google.tt
- - news.google.us
- - news.google.vg
- - news.google.vu
- - news.google.ws
-
- Google Product Search:
- parameters:
- - q
- domains:
- - google.ac/products
- - google.ad/products
- - google.ae/products
- - google.am/products
- - google.as/products
- - google.at/products
- - google.az/products
- - google.ba/products
- - google.be/products
- - google.bf/products
- - google.bg/products
- - google.bi/products
- - google.bj/products
- - google.bs/products
- - google.by/products
- - google.ca/products
- - google.cat/products
- - google.cc/products
- - google.cd/products
- - google.cf/products
- - google.cg/products
- - google.ch/products
- - google.ci/products
- - google.cl/products
- - google.cm/products
- - google.cn/products
- - google.co.bw/products
- - google.co.ck/products
- - google.co.cr/products
- - google.co.id/products
- - google.co.il/products
- - google.co.in/products
- - google.co.jp/products
- - google.co.ke/products
- - google.co.kr/products
- - google.co.ls/products
- - google.co.ma/products
- - google.co.mz/products
- - google.co.nz/products
- - google.co.th/products
- - google.co.tz/products
- - google.co.ug/products
- - google.co.uk/products
- - google.co.uz/products
- - google.co.ve/products
- - google.co.vi/products
- - google.co.za/products
- - google.co.zm/products
- - google.co.zw/products
- - google.com/products
- - google.com.af/products
- - google.com.ag/products
- - google.com.ai/products
- - google.com.ar/products
- - google.com.au/products
- - google.com.bd/products
- - google.com.bh/products
- - google.com.bn/products
- - google.com.bo/products
- - google.com.br/products
- - google.com.by/products
- - google.com.bz/products
- - google.com.co/products
- - google.com.cu/products
- - google.com.cy/products
- - google.com.do/products
- - google.com.ec/products
- - google.com.eg/products
- - google.com.et/products
- - google.com.fj/products
- - google.com.gh/products
- - google.com.gi/products
- - google.com.gt/products
- - google.com.hk/products
- - google.com.jm/products
- - google.com.kh/products
- - google.com.kh/products
- - google.com.kw/products
- - google.com.lb/products
- - google.com.lc/products
- - google.com.ly/products
- - google.com.mt/products
- - google.com.mx/products
- - google.com.my/products
- - google.com.na/products
- - google.com.nf/products
- - google.com.ng/products
- - google.com.ni/products
- - google.com.np/products
- - google.com.om/products
- - google.com.pa/products
- - google.com.pe/products
- - google.com.ph/products
- - google.com.pk/products
- - google.com.pr/products
- - google.com.py/products
- - google.com.qa/products
- - google.com.sa/products
- - google.com.sb/products
- - google.com.sg/products
- - google.com.sl/products
- - google.com.sv/products
- - google.com.tj/products
- - google.com.tn/products
- - google.com.tr/products
- - google.com.tw/products
- - google.com.ua/products
- - google.com.uy/products
- - google.com.vc/products
- - google.com.vn/products
- - google.cv/products
- - google.cz/products
- - google.de/products
- - google.dj/products
- - google.dk/products
- - google.dm/products
- - google.dz/products
- - google.ee/products
- - google.es/products
- - google.fi/products
- - google.fm/products
- - google.fr/products
- - google.ga/products
- - google.gd/products
- - google.ge/products
- - google.gf/products
- - google.gg/products
- - google.gl/products
- - google.gm/products
- - google.gp/products
- - google.gr/products
- - google.gy/products
- - google.hn/products
- - google.hr/products
- - google.ht/products
- - google.hu/products
- - google.ie/products
- - google.im/products
- - google.io/products
- - google.iq/products
- - google.is/products
- - google.it/products
- - google.it.ao/products
- - google.je/products
- - google.jo/products
- - google.kg/products
- - google.ki/products
- - google.kz/products
- - google.la/products
- - google.li/products
- - google.lk/products
- - google.lt/products
- - google.lu/products
- - google.lv/products
- - google.md/products
- - google.me/products
- - google.mg/products
- - google.mk/products
- - google.ml/products
- - google.mn/products
- - google.ms/products
- - google.mu/products
- - google.mv/products
- - google.mw/products
- - google.ne/products
- - google.nl/products
- - google.no/products
- - google.nr/products
- - google.nu/products
- - google.pl/products
- - google.pn/products
- - google.ps/products
- - google.pt/products
- - google.ro/products
- - google.rs/products
- - google.ru/products
- - google.rw/products
- - google.sc/products
- - google.se/products
- - google.sh/products
- - google.si/products
- - google.sk/products
- - google.sm/products
- - google.sn/products
- - google.so/products
- - google.st/products
- - google.td/products
- - google.tg/products
- - google.tk/products
- - google.tl/products
- - google.tm/products
- - google.to/products
- - google.tt/products
- - google.us/products
- - google.vg/products
- - google.vu/products
- - google.ws/products
- - www.google.ac/products
- - www.google.ad/products
- - www.google.ae/products
- - www.google.am/products
- - www.google.as/products
- - www.google.at/products
- - www.google.az/products
- - www.google.ba/products
- - www.google.be/products
- - www.google.bf/products
- - www.google.bg/products
- - www.google.bi/products
- - www.google.bj/products
- - www.google.bs/products
- - www.google.by/products
- - www.google.ca/products
- - www.google.cat/products
- - www.google.cc/products
- - www.google.cd/products
- - www.google.cf/products
- - www.google.cg/products
- - www.google.ch/products
- - www.google.ci/products
- - www.google.cl/products
- - www.google.cm/products
- - www.google.cn/products
- - www.google.co.bw/products
- - www.google.co.ck/products
- - www.google.co.cr/products
- - www.google.co.id/products
- - www.google.co.il/products
- - www.google.co.in/products
- - www.google.co.jp/products
- - www.google.co.ke/products
- - www.google.co.kr/products
- - www.google.co.ls/products
- - www.google.co.ma/products
- - www.google.co.mz/products
- - www.google.co.nz/products
- - www.google.co.th/products
- - www.google.co.tz/products
- - www.google.co.ug/products
- - www.google.co.uk/products
- - www.google.co.uz/products
- - www.google.co.ve/products
- - www.google.co.vi/products
- - www.google.co.za/products
- - www.google.co.zm/products
- - www.google.co.zw/products
- - www.google.com/products
- - www.google.com.af/products
- - www.google.com.ag/products
- - www.google.com.ai/products
- - www.google.com.ar/products
- - www.google.com.au/products
- - www.google.com.bd/products
- - www.google.com.bh/products
- - www.google.com.bn/products
- - www.google.com.bo/products
- - www.google.com.br/products
- - www.google.com.by/products
- - www.google.com.bz/products
- - www.google.com.co/products
- - www.google.com.cu/products
- - www.google.com.cy/products
- - www.google.com.do/products
- - www.google.com.ec/products
- - www.google.com.eg/products
- - www.google.com.et/products
- - www.google.com.fj/products
- - www.google.com.gh/products
- - www.google.com.gi/products
- - www.google.com.gt/products
- - www.google.com.hk/products
- - www.google.com.jm/products
- - www.google.com.kh/products
- - www.google.com.kh/products
- - www.google.com.kw/products
- - www.google.com.lb/products
- - www.google.com.lc/products
- - www.google.com.ly/products
- - www.google.com.mt/products
- - www.google.com.mx/products
- - www.google.com.my/products
- - www.google.com.na/products
- - www.google.com.nf/products
- - www.google.com.ng/products
- - www.google.com.ni/products
- - www.google.com.np/products
- - www.google.com.om/products
- - www.google.com.pa/products
- - www.google.com.pe/products
- - www.google.com.ph/products
- - www.google.com.pk/products
- - www.google.com.pr/products
- - www.google.com.py/products
- - www.google.com.qa/products
- - www.google.com.sa/products
- - www.google.com.sb/products
- - www.google.com.sg/products
- - www.google.com.sl/products
- - www.google.com.sv/products
- - www.google.com.tj/products
- - www.google.com.tn/products
- - www.google.com.tr/products
- - www.google.com.tw/products
- - www.google.com.ua/products
- - www.google.com.uy/products
- - www.google.com.vc/products
- - www.google.com.vn/products
- - www.google.cv/products
- - www.google.cz/products
- - www.google.de/products
- - www.google.dj/products
- - www.google.dk/products
- - www.google.dm/products
- - www.google.dz/products
- - www.google.ee/products
- - www.google.es/products
- - www.google.fi/products
- - www.google.fm/products
- - www.google.fr/products
- - www.google.ga/products
- - www.google.gd/products
- - www.google.ge/products
- - www.google.gf/products
- - www.google.gg/products
- - www.google.gl/products
- - www.google.gm/products
- - www.google.gp/products
- - www.google.gr/products
- - www.google.gy/products
- - www.google.hn/products
- - www.google.hr/products
- - www.google.ht/products
- - www.google.hu/products
- - www.google.ie/products
- - www.google.im/products
- - www.google.io/products
- - www.google.iq/products
- - www.google.is/products
- - www.google.it/products
- - www.google.it.ao/products
- - www.google.je/products
- - www.google.jo/products
- - www.google.kg/products
- - www.google.ki/products
- - www.google.kz/products
- - www.google.la/products
- - www.google.li/products
- - www.google.lk/products
- - www.google.lt/products
- - www.google.lu/products
- - www.google.lv/products
- - www.google.md/products
- - www.google.me/products
- - www.google.mg/products
- - www.google.mk/products
- - www.google.ml/products
- - www.google.mn/products
- - www.google.ms/products
- - www.google.mu/products
- - www.google.mv/products
- - www.google.mw/products
- - www.google.ne/products
- - www.google.nl/products
- - www.google.no/products
- - www.google.nr/products
- - www.google.nu/products
- - www.google.pl/products
- - www.google.pn/products
- - www.google.ps/products
- - www.google.pt/products
- - www.google.ro/products
- - www.google.rs/products
- - www.google.ru/products
- - www.google.rw/products
- - www.google.sc/products
- - www.google.se/products
- - www.google.sh/products
- - www.google.si/products
- - www.google.sk/products
- - www.google.sm/products
- - www.google.sn/products
- - www.google.so/products
- - www.google.st/products
- - www.google.td/products
- - www.google.tg/products
- - www.google.tk/products
- - www.google.tl/products
- - www.google.tm/products
- - www.google.to/products
- - www.google.tt/products
- - www.google.us/products
- - www.google.vg/products
- - www.google.vu/products
- - www.google.ws/products
-
- Google Video:
- parameters:
- - q
- domains:
- - video.google.com
-
- Goyellow.de:
- parameters:
- - MDN
- domains:
- - www.goyellow.de
-
- Gule Sider:
- parameters:
- - q
- domains:
- - www.gulesider.no
-
- HighBeam:
- parameters:
- - q
- domains:
- - www.highbeam.com
-
- Hit-Parade:
- parameters:
- - p7
- domains:
- - req.-hit-parade.com
- - class.hit-parade.com
- - www.hit-parade.com
-
- Holmes:
- parameters:
- - q
- domains:
- - holmes.ge
-
- Hooseek.com:
- parameters:
- - recherche
- domains:
- - www.hooseek.com
-
- Hotbot:
- parameters:
- - query
- domains:
- - www.hotbot.com
-
- Icerockeet:
- parameters:
- - q
- domains:
- - blogs.icerocket.com
-
- ICQ:
- parameters:
- - q
- domains:
- - www.icq.com
- - search.icq.com
-
- Ilse:
- parameters:
- - search_for
- domains:
- - www.ilse.nl
-
- InfoSpace:
- parameters:
- - q
- - s
- domains:
- - infospace.com
- - dogpile.com
- - www.dogpile.com
- - metacrawler.com
- - webfetch.com
- - webcrawler.com
- - search.kiwee.com
- # powered by InfoSpace
- - isearch.babylon.com
- - start.facemoods.com
- - search.magnetic.com
- - search.searchcompletion.com
- - clusty.com
-
- Interia:
- parameters:
- - q
- domains:
- - www.google.interia.pl
-
- I-play:
- parameters:
- - q
- domains:
- - start.iplay.com
-
- IXquick:
- parameters:
- - query
- domains:
- - ixquick.com
- - www.eu.ixquick.com
- - ixquick.de
- - www.ixquick.de
- - us.ixquick.com
- - s1.us.ixquick.com
- - s2.us.ixquick.com
- - s3.us.ixquick.com
- - s4.us.ixquick.com
- - s5.us.ixquick.com
- - eu.ixquick.com
- - s8-eu.ixquick.com
- - s1-eu.ixquick.de
-
- Jyxo:
- parameters:
- - q
- domains:
- - jyxo.1188.cz
-
- Jungle Spider:
- parameters:
- - q
- domains:
- - www.jungle-spider.de
-
- Jungle Key:
- parameters:
- - query
- domains:
- - junglekey.com
- - junglekey.fr
-
- Kataweb:
- parameters:
- - q
- domains:
- - www.kataweb.it
-
- Kvasir:
- parameters:
- - q
- domains:
- - www.kvasir.no
-
- Latne:
- parameters:
- - q
- domains:
- - www.latne.lv
-
- La Toile Du Quebec Via Google:
- parameters:
- - q
- domains:
- - www.toile.com
- - web.toile.com
-
- Looksmart:
- parameters:
- - key
- domains:
- - www.looksmart.com
-
- Lo.st:
- parameters:
- - x_query
- domains:
- - lo.st
-
- Lycos:
- parameters:
- - query
- domains:
- - search.lycos.com
- - www.lycos.com
- - lycos.com
-
- maailm:
- parameters:
- - tekst
- domains:
- - www.maailm.com
-
- Mail.ru:
- parameters:
- - q
- domains:
- - go.mail.ru
-
- Mamma:
- parameters:
- - query
- domains:
- - www.mamma.com
- - mamma75.mamma.com
-
- Marktplaats:
- parameters:
- - query
- domains:
- - www.marktplaats.nl
-
- Maxwebsearch:
- parameters:
- - query
- domains:
- - maxwebsearch.com
-
- Meta:
- parameters:
- - q
- domains:
- - meta.ua
-
- MetaCrawler.de:
- parameters:
- - qry
- domains:
- - s1.metacrawler.de
- - s2.metacrawler.de
- - s3.metacrawler.de
-
- Metager:
- parameters:
- - eingabe
- domains:
- - meta.rrzn.uni-hannover.de
- - www.metager.de
-
- Metager2:
- parameters:
- - q
- domains:
- - metager2.de
-
- Meinestadt:
- parameters:
- - words
- domains:
- - www.meinestadt.de
-
- Mister Wong:
- parameters:
- - Keywords
- domains:
- - www.mister-wong.com
- - www.mister-wong.de
-
- Monstercrawler:
- parameters:
- - qry
- domains:
- - www.monstercrawler.com
-
- Mozbot:
- parameters:
- - q
- domains:
- - www.mozbot.fr
- - www.mozbot.co.uk
- - www.mozbot.com
-
- El Mundo:
- parameters:
- - q
- domains:
- - ariadna.elmundo.es
-
- MySearch:
- parameters:
- - searchfor
- - searchFor
- domains:
- - www.mysearch.com
- - ms114.mysearch.com
- - ms146.mysearch.com
- - kf.mysearch.myway.com
- - ki.mysearch.myway.com
- - search.myway.com
- - search.mywebsearch.com
-
- Najdi:
- parameters:
- - q
- domains:
- - www.najdi.si
-
- Nate:
- parameters:
- - q
- domains:
- - search.nate.com
-
- Naver:
- parameters:
- - query
- domains:
- - search.naver.com
-
- Naver Images:
- parameters:
- - query
- domains:
- - image.search.naver.com
- - imagesearch.naver.com
-
- Needtofind:
- parameters:
- - searchfor
- domains:
- - ko.search.need2find.com
-
- Neti:
- parameters:
- - query
- domains:
- - www.neti.ee
-
- Nifty:
- parameters:
- - q
- domains:
- - search.nifty.com
-
- Nigma:
- parameters:
- - s
- domains:
- - nigma.ru
-
- Onet:
- parameters:
- - qt
- domains:
- - szukaj.onet.pl
-
- Online.no:
- parameters:
- - q
- domains:
- - online.no
-
- Opplysningen 1881:
- parameters:
- - Query
- domains:
- - www.1881.no
-
- Orange:
- parameters:
- - q
- domains:
- - busca.orange.es
- - search.orange.co.uk
-
- Paperball:
- parameters:
- - q
- domains:
- - www.paperball.de
-
- PeoplePC:
- parameters:
- - q
- domains:
- - search.peoplepc.com
-
- Picsearch:
- parameters:
- - q
- domains:
- - www.picsearch.com
-
- Plazoo:
- parameters:
- - q
- domains:
- - www.plazoo.com
-
- Poisk.ru:
- parameters:
- - q
- domains:
- - www.plazoo.com
-
- PriceRunner:
- parameters:
- - q
- domains:
- - www.pricerunner.co.uk
-
- qip:
- parameters:
- - query
- domains:
- - search.qip.ru
-
- Qualigo:
- parameters:
- - q
- domains:
- - www.qualigo.at
- - www.qualigo.ch
- - www.qualigo.de
- - www.qualigo.nl
-
- Rakuten:
- parameters:
- - qt
- domains:
- - websearch.rakuten.co.jp
-
- Rambler:
- parameters:
- - query
- - words
- domains:
- - nova.rambler.ru
-
- RPMFind:
- parameters:
- - query
- domains:
- - rpmfind.net
- - fr2.rpmfind.net
-
- Road Runner Search:
- parameters:
- - q
- domains:
- - search.rr.com
-
- Sapo:
- parameters:
- - q
- domains:
- - pesquisa.sapo.pt
-
- # Add Scour.com
-
- Search.com:
- parameters:
- - q
- domains:
- - www.search.com
-
- Search.ch:
- parameters:
- - q
- domains:
- - www.search.ch
-
- Searchalot:
- parameters:
- - q
- domains:
- - searchalot.com
-
- SearchCanvas:
- parameters:
- - q
- domains:
- - www.searchcanvas.com
-
- Searchy:
- parameters:
- - q
- domains:
- - www.searchy.co.uk
-
- # Add setooz.com
-
- Seznam:
- parameters:
- - q
- domains:
- - search.seznam.cz
-
- Sharelook:
- parameters:
- - keyword
- domains:
- - www.sharelook.fr
-
- Skynet:
- parameters:
- - q
- domains:
- - www.skynet.be
-
- Sogou:
- parameters:
- - query
- domains:
- - www.sougou.com
-
- Softonic:
- parameters:
- - q
- domains:
- - search.softonic.com
-
- soso.com:
- parameters:
- - w
- domains:
- - www.soso.com
-
- Snapdo:
- parameters:
- - q
- domains:
- - search.snapdo.com
-
- Startpagina:
- parameters:
- - q
- domains:
- - startgoogle.startpagina.nl
-
- Startsiden:
- parameters:
- - q
- domains:
- - www.startsiden.no
-
- suche.info:
- parameters:
- - q
- domains:
- - suche.info
-
- Suchmaschine.com:
- parameters:
- - suchstr
- domains:
- - www.suchmaschine.com
-
- Suchnase:
- parameters:
- - q
- domains:
- - www.suchnase.de
-
- TalkTalk:
- parameters:
- - query
- domains:
- - www.talktalk.co.uk
-
- Technorati:
- parameters:
- - q
- domains:
- - technorati.com
-
- Teoma:
- parameters:
- - q
- domains:
- - www.teoma.com
-
- Terra:
- parameters:
- - query
- domains:
- - buscador.terra.es
- - buscador.terra.cl
- - buscador.terra.com.br
-
- Tiscali:
- parameters:
- - q
- - key
- domains:
- - search.tiscali.it
- - search-dyn.tiscali.it
- - hledani.tiscali.cz
-
- Tixuma:
- parameters:
- - sc
- domains:
- - www.tixuma.de
-
- T-Online:
- parameters:
- - q
- domains:
- - suche.t-online.de
- - brisbane.t-online.de
- - navigationshilfe.t-online.de
-
- Toolbarhome:
- parameters:
- - q
- domains:
- - www.toolbarhome.com
- - vshare.toolbarhome.com
-
- Trouvez.com:
- parameters:
- - query
- domains:
- - www.trouvez.com
-
- TrovaRapido:
- parameters:
- - q
- domains:
- - www.trovarapido.com
-
- Trusted-Search:
- parameters:
- - w
- domains:
- - www.trusted--search.com
-
- Twingly:
- parameters:
- - q
- domains:
- - www.twingly.com
-
- uol.com.br:
- parameters:
- - q
- domains:
- - busca.uol.com.br
-
- URL.ORGanizier:
- parameters:
- - q
- domains:
- - www.url.org
-
- Vinden:
- parameters:
- - q
- domains:
- - www.vinden.nl
-
- Vindex:
- parameters:
- - search_for
- domains:
- - www.vindex.nl
- - search.vindex.nl
-
- Virgilio:
- parameters:
- - qs
- domains:
- - ricerca.virgilio.it
- - ricercaimmagini.virgilio.it
- - ricercavideo.virgilio.it
- - ricercanews.virgilio.it
- - mobile.virgilio.it
-
- Voila:
- parameters:
- - rdata
- - kw
- domains:
- - search.ke.voila.fr
- - www.lemoteur.fr
-
- Volny:
- parameters:
- - search
- domains:
- - web.volny.cz
-
- Walhello :
- parameters:
- - key
- domains:
- - www.walhello.info
- - www.walhello.com
- - www.walhello.de
- - www.walhello.nl
-
- Web.de:
- parameters:
- - su
- domains:
- - suche.web.de
-
- Web.nl:
- parameters:
- - zoekwoord
- domains:
- - www.web.nl
-
- Weborama:
- parameters:
- - QUERY
- domains:
- - www.weborama.com
-
- WebSearch:
- parameters:
- - qkw
- - q
- domains:
- - www.websearch.com
-
- Winamp:
- parameters:
- - q
- domains:
- - search.winamp.com
-
- Witch:
- parameters:
- - search
- domains:
- - www.witch.de
-
- Wirtualna Polska:
- parameters:
- - szukaj
- domains:
- - szukaj.wp.pl
-
- WWW:
- parameters:
- - query
- domains:
- - search.www.ee
-
- X-recherche:
- parameters:
- - MOTS
- domains:
- - www.x-recherche.com
-
- Yahoo!:
- parameters:
- - p
- - q
- domains:
- - search.yahoo.com
- - yahoo.com
- - ar.search.yahoo.com
- - ar.yahoo.com
- - au.search.yahoo.com
- - au.yahoo.com
- - br.search.yahoo.com
- - br.yahoo.com
- - cade.searchde.yahoo.com
- - cade.yahoo.com
- - chinese.searchinese.yahoo.com
- - chinese.yahoo.com
- - cn.search.yahoo.com
- - cn.yahoo.com
- - de.search.yahoo.com
- - de.yahoo.com
- - dk.search.yahoo.com
- - dk.yahoo.com
- - es.search.yahoo.com
- - es.yahoo.com
- - espanol.searchpanol.yahoo.com
- - espanol.searchpanol.yahoo.com
- - espanol.yahoo.com
- - espanol.yahoo.com
- - fr.search.yahoo.com
- - fr.yahoo.com
- - ie.search.yahoo.com
- - ie.yahoo.com
- - it.search.yahoo.com
- - it.yahoo.com
- - kr.search.yahoo.com
- - kr.yahoo.com
- - mx.search.yahoo.com
- - mx.yahoo.com
- - no.search.yahoo.com
- - no.yahoo.com
- - nz.search.yahoo.com
- - nz.yahoo.com
- - one.cn.yahoo.com
- - one.searchn.yahoo.com
- - qc.search.yahoo.com
- - qc.search.yahoo.com
- - qc.search.yahoo.com
- - qc.yahoo.com
- - qc.yahoo.com
- - se.search.yahoo.com
- - se.search.yahoo.com
- - se.yahoo.com
- - search.searcharch.yahoo.com
- - search.yahoo.com
- - uk.search.yahoo.com
- - uk.yahoo.com
- - www.yahoo.co.jp
- - search.yahoo.co.jp
- # powered by Yahoo
- - www.cercato.it
- - search.offerbox.com
- - ys.mirostart.com
-
- Yahoo! Images:
- parameters:
- - p
- - q
- domains:
- - image.yahoo.cn
- - images.search.yahoo.com
-
- Yam:
- parameters:
- - k
- domains:
- - search.yam.com
-
- Yandex:
- parameters:
- - text
- domains:
- - yandex.ru
- - yandex.ua
- - yandex.com
- - yandex.by
- - www.yandex.ru
- - www.yandex.ua
- - www.yandex.com
- - www.yandex.by
-
- Yandex Images:
- parameters:
- - text
- domains:
- - images.yandex.ru
- - images.yandex.ua
- - images.yandex.com
-
- Yasni:
- parameters:
- - query
- domains:
- - www.yasni.de
- - www.yasni.com
- - www.yasni.co.uk
- - www.yasni.ch
- - www.yasni.at
-
- Yatedo:
- parameters:
- - q
- domains:
- - www.yatedo.com
- - www.yatedo.fr
-
- # Add Yellowmap:
-
- Yippy:
- parameters:
- - q
- - query
- domains:
- - search.yippy.com
-
- YouGoo:
- parameters:
- - q
- domains:
- - www.yougoo.fr
-
- Zapmeta:
- parameters:
- - q
- - query
- domains:
- - www.zapmeta.com
- - www.zapmeta.nl
- - www.zapmeta.de
- - uk.zapmeta.com
-
- Zoek:
- parameters:
- - q
- domains:
- - www3.zoek.nl
-
- Zhongsou:
- parameters:
- - w
- domains:
- - p.zhongsou.com
-
- Zoeken:
- parameters:
- - q
- domains:
- - www.zoeken.nl
-
- Zoohoo:
- parameters:
- - q
- domains:
- - zoohoo.cz
diff --git a/vendor/snowplow/referer-parser/ruby/.gitignore b/vendor/snowplow/referer-parser/ruby/.gitignore
deleted file mode 100644
index d87d4be66..000000000
--- a/vendor/snowplow/referer-parser/ruby/.gitignore
+++ /dev/null
@@ -1,17 +0,0 @@
-*.gem
-*.rbc
-.bundle
-.config
-.yardoc
-Gemfile.lock
-InstalledFiles
-_yardoc
-coverage
-doc/
-lib/bundler/man
-pkg
-rdoc
-spec/reports
-test/tmp
-test/version_tmp
-tmp
diff --git a/vendor/snowplow/referer-parser/ruby/Gemfile b/vendor/snowplow/referer-parser/ruby/Gemfile
deleted file mode 100644
index 2173ad8d2..000000000
--- a/vendor/snowplow/referer-parser/ruby/Gemfile
+++ /dev/null
@@ -1,4 +0,0 @@
-source 'https://rubygems.org'
-
-# Specify your gem's dependencies in attlib.gemspec
-gemspec
diff --git a/vendor/snowplow/referer-parser/ruby/LICENSE-2.0.txt b/vendor/snowplow/referer-parser/ruby/LICENSE-2.0.txt
deleted file mode 100644
index 7a4a3ea24..000000000
--- a/vendor/snowplow/referer-parser/ruby/LICENSE-2.0.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/ruby/README.md b/vendor/snowplow/referer-parser/ruby/README.md
deleted file mode 100644
index 1b17d5413..000000000
--- a/vendor/snowplow/referer-parser/ruby/README.md
+++ /dev/null
@@ -1,98 +0,0 @@
-# referer-parser Ruby library
-
-This is the Ruby implementation of [referer-parser] [referer-parser], the library for extracting search marketing data from referer _(sic)_ URLs.
-
-The implementation uses the shared 'database' of known referers found in [`referers.yml`] [referers-yml].
-
-## Installation
-
-Add this line to your application's Gemfile:
-
- gem 'referer-parser'
-
-And then execute:
-
- $ bundle
-
-Or install it yourself as:
-
- $ gem install referer-parser
-
-## Usage
-
-### To include referer-parser:
-
-```ruby
-require 'referer-parser'
-```
-
-### To create a parser
-
-Parsers are created by default with the set of included referers but they can also be loaded from another file(s) either during or after instantiation
-
-Creating and modifying the parser:
-
-```ruby
-# Default parser
-parser = RefererParser::Parser.new
-
-# Custom parser with local file
-parser = RefererParser::Parser.new('/path/to/other/referers.yml')
-
-# From a URI
-parser = RefererParser::Parser.new('http://example.com/path/to/other/referers.yml')
-
-# Default referers, then merge in a set of custom internal domains
-parser = RefererParser::Parser.new
-parser.update('/path/to/internal.yml')
-
-# Default referers, then add your own internal domain inline instead of from a file
-parser = RefererParser::Parser.new
-parser.add_referer('internal', 'SnowPlow', 'snowplowanalytics.com')
-
-# Clear all of the existing referers
-parser.clear!
-```
-
-### Using a parser
-
-The parser returns a hash of matching data if it can be found including search terms, medium, and nicely-formatted source name.
-If there is no match, :known will be false.
-
-```ruby
-parser = RefererParser::Parser.new
-parser.parse('http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari')
- # => {
- :known=>true,
- :uri=>"http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari",
- :source=>"Google",
- :medium=>"search",
- :term=>"gateway oracle cards denise linn"
- }
-```
-
-## Contributing
-
-1. Fork it
-2. Create your feature branch (`git checkout -b my-new-feature`)
-3. Commit your changes (`git commit -am 'Add some feature'`)
-4. Push to the branch (`git push origin my-new-feature`)
-5. Create new Pull Request
-
-## Copyright and license
-
-The referer-parser Ruby library is copyright 2014 Inside Systems, Inc.
-
-Licensed under the [Apache License, Version 2.0] [license] (the "License");
-you may not use this software except in compliance with the License.
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-[referer-parser]: https://github.com/snowplow/referer-parser
-[referers-yml]: https://github.com/snowplow/referer-parser/blob/master/referers.yml
-
-[license]: http://www.apache.org/licenses/LICENSE-2.0
diff --git a/vendor/snowplow/referer-parser/ruby/Rakefile b/vendor/snowplow/referer-parser/ruby/Rakefile
deleted file mode 100644
index 33853e536..000000000
--- a/vendor/snowplow/referer-parser/ruby/Rakefile
+++ /dev/null
@@ -1,10 +0,0 @@
-require "bundler/gem_tasks"
-
-require 'rspec/core'
-require 'rspec/core/rake_task'
-
-RSpec::Core::RakeTask.new(:spec) do |spec|
- spec.pattern = FileList['spec/**/*_spec.rb']
-end
-
-task :default => :spec
diff --git a/vendor/snowplow/referer-parser/ruby/data/referers.json b/vendor/snowplow/referer-parser/ruby/data/referers.json
deleted file mode 100644
index 460975ef2..000000000
--- a/vendor/snowplow/referer-parser/ruby/data/referers.json
+++ /dev/null
@@ -1,4090 +0,0 @@
-{
- "unknown": {
- "Outbrain": {
- "domains": [
- "paid.outbrain.com"
- ]
- },
- "Google": {
- "domains": [
- "support.google.com",
- "developers.google.com",
- "maps.google.com",
- "accounts.google.com",
- "drive.google.com",
- "sites.google.com",
- "groups.google.com",
- "groups.google.co.uk",
- "news.google.co.uk"
- ]
- },
- "Taboola": {
- "domains": [
- "trc.taboola.com",
- "api.taboola.com"
- ]
- },
- "Yahoo!": {
- "domains": [
- "finance.yahoo.com",
- "news.yahoo.com",
- "eurosport.yahoo.com",
- "sports.yahoo.com",
- "astrology.yahoo.com",
- "travel.yahoo.com",
- "answers.yahoo.com",
- "screen.yahoo.com",
- "weather.yahoo.com",
- "messenger.yahoo.com",
- "games.yahoo.com",
- "shopping.yahoo.net",
- "movies.yahoo.com",
- "cars.yahoo.com",
- "lifestyle.yahoo.com",
- "omg.yahoo.com",
- "match.yahoo.net"
- ]
- }
- },
- "search": {
- "TalkTalk": {
- "domains": [
- "www.talktalk.co.uk"
- ],
- "parameters": [
- "query"
- ]
- },
- "1.cz": {
- "domains": [
- "1.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Softonic": {
- "domains": [
- "search.softonic.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "GAIS": {
- "domains": [
- "gais.cs.ccu.edu.tw"
- ],
- "parameters": [
- "q"
- ]
- },
- "Freecause": {
- "domains": [
- "search.freecause.com"
- ],
- "parameters": [
- "p"
- ]
- },
- "360.cn": {
- "domains": [
- "so.360.cn",
- "www.so.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "RPMFind": {
- "domains": [
- "rpmfind.net",
- "fr2.rpmfind.net"
- ],
- "parameters": [
- "query"
- ]
- },
- "Comcast": {
- "domains": [
- "serach.comcast.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Voila": {
- "domains": [
- "search.ke.voila.fr",
- "www.lemoteur.fr"
- ],
- "parameters": [
- "rdata",
- "kw"
- ]
- },
- "Nifty": {
- "domains": [
- "search.nifty.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Atlas": {
- "domains": [
- "searchatlas.centrum.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Lo.st": {
- "domains": [
- "lo.st"
- ],
- "parameters": [
- "x_query"
- ]
- },
- "DasTelefonbuch": {
- "domains": [
- "www1.dastelefonbuch.de"
- ],
- "parameters": [
- "kw"
- ]
- },
- "Fireball": {
- "domains": [
- "www.fireball.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "1und1": {
- "domains": [
- "search.1und1.de"
- ],
- "parameters": [
- "su"
- ]
- },
- "Virgilio": {
- "domains": [
- "ricerca.virgilio.it",
- "ricercaimmagini.virgilio.it",
- "ricercavideo.virgilio.it",
- "ricercanews.virgilio.it",
- "mobile.virgilio.it"
- ],
- "parameters": [
- "qs"
- ]
- },
- "Web.nl": {
- "domains": [
- "www.web.nl"
- ],
- "parameters": [
- "zoekwoord"
- ]
- },
- "Plazoo": {
- "domains": [
- "www.plazoo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Goyellow.de": {
- "domains": [
- "www.goyellow.de"
- ],
- "parameters": [
- "MDN"
- ]
- },
- "AOL": {
- "domains": [
- "search.aol.com",
- "search.aol.it",
- "aolsearch.aol.com",
- "aolsearch.com",
- "www.aolrecherche.aol.fr",
- "www.aolrecherches.aol.fr",
- "www.aolimages.aol.fr",
- "aim.search.aol.com",
- "www.recherche.aol.fr",
- "find.web.aol.com",
- "recherche.aol.ca",
- "aolsearch.aol.co.uk",
- "search.aol.co.uk",
- "aolrecherche.aol.fr",
- "sucheaol.aol.de",
- "suche.aol.de",
- "suche.aolsvc.de",
- "aolbusqueda.aol.com.mx",
- "alicesuche.aol.de",
- "alicesuchet.aol.de",
- "suchet2.aol.de",
- "search.hp.my.aol.com.au",
- "search.hp.my.aol.de",
- "search.hp.my.aol.it",
- "search-intl.netscape.com"
- ],
- "parameters": [
- "q",
- "query"
- ]
- },
- "Acoon": {
- "domains": [
- "www.acoon.de"
- ],
- "parameters": [
- "begriff"
- ]
- },
- "Free": {
- "domains": [
- "search.free.fr",
- "search1-2.free.fr",
- "search1-1.free.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "Apollo Latvia": {
- "domains": [
- "apollo.lv/portal/search/"
- ],
- "parameters": [
- "q"
- ]
- },
- "HighBeam": {
- "domains": [
- "www.highbeam.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "I-play": {
- "domains": [
- "start.iplay.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "FriendFeed": {
- "domains": [
- "friendfeed.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yasni": {
- "domains": [
- "www.yasni.de",
- "www.yasni.com",
- "www.yasni.co.uk",
- "www.yasni.ch",
- "www.yasni.at"
- ],
- "parameters": [
- "query"
- ]
- },
- "Gigablast": {
- "domains": [
- "www.gigablast.com",
- "dir.gigablast.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "arama": {
- "domains": [
- "arama.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Fixsuche": {
- "domains": [
- "www.fixsuche.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Apontador": {
- "domains": [
- "apontador.com.br",
- "www.apontador.com.br"
- ],
- "parameters": [
- "q"
- ]
- },
- "Search.com": {
- "domains": [
- "www.search.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Monstercrawler": {
- "domains": [
- "www.monstercrawler.com"
- ],
- "parameters": [
- "qry"
- ]
- },
- "Google Images": {
- "domains": [
- "google.ac/imgres",
- "google.ad/imgres",
- "google.ae/imgres",
- "google.am/imgres",
- "google.as/imgres",
- "google.at/imgres",
- "google.az/imgres",
- "google.ba/imgres",
- "google.be/imgres",
- "google.bf/imgres",
- "google.bg/imgres",
- "google.bi/imgres",
- "google.bj/imgres",
- "google.bs/imgres",
- "google.by/imgres",
- "google.ca/imgres",
- "google.cat/imgres",
- "google.cc/imgres",
- "google.cd/imgres",
- "google.cf/imgres",
- "google.cg/imgres",
- "google.ch/imgres",
- "google.ci/imgres",
- "google.cl/imgres",
- "google.cm/imgres",
- "google.cn/imgres",
- "google.co.bw/imgres",
- "google.co.ck/imgres",
- "google.co.cr/imgres",
- "google.co.id/imgres",
- "google.co.il/imgres",
- "google.co.in/imgres",
- "google.co.jp/imgres",
- "google.co.ke/imgres",
- "google.co.kr/imgres",
- "google.co.ls/imgres",
- "google.co.ma/imgres",
- "google.co.mz/imgres",
- "google.co.nz/imgres",
- "google.co.th/imgres",
- "google.co.tz/imgres",
- "google.co.ug/imgres",
- "google.co.uk/imgres",
- "google.co.uz/imgres",
- "google.co.ve/imgres",
- "google.co.vi/imgres",
- "google.co.za/imgres",
- "google.co.zm/imgres",
- "google.co.zw/imgres",
- "google.com/imgres",
- "google.com.af/imgres",
- "google.com.ag/imgres",
- "google.com.ai/imgres",
- "google.com.ar/imgres",
- "google.com.au/imgres",
- "google.com.bd/imgres",
- "google.com.bh/imgres",
- "google.com.bn/imgres",
- "google.com.bo/imgres",
- "google.com.br/imgres",
- "google.com.by/imgres",
- "google.com.bz/imgres",
- "google.com.co/imgres",
- "google.com.cu/imgres",
- "google.com.cy/imgres",
- "google.com.do/imgres",
- "google.com.ec/imgres",
- "google.com.eg/imgres",
- "google.com.et/imgres",
- "google.com.fj/imgres",
- "google.com.gh/imgres",
- "google.com.gi/imgres",
- "google.com.gt/imgres",
- "google.com.hk/imgres",
- "google.com.jm/imgres",
- "google.com.kh/imgres",
- "google.com.kw/imgres",
- "google.com.lb/imgres",
- "google.com.lc/imgres",
- "google.com.ly/imgres",
- "google.com.mt/imgres",
- "google.com.mx/imgres",
- "google.com.my/imgres",
- "google.com.na/imgres",
- "google.com.nf/imgres",
- "google.com.ng/imgres",
- "google.com.ni/imgres",
- "google.com.np/imgres",
- "google.com.om/imgres",
- "google.com.pa/imgres",
- "google.com.pe/imgres",
- "google.com.ph/imgres",
- "google.com.pk/imgres",
- "google.com.pr/imgres",
- "google.com.py/imgres",
- "google.com.qa/imgres",
- "google.com.sa/imgres",
- "google.com.sb/imgres",
- "google.com.sg/imgres",
- "google.com.sl/imgres",
- "google.com.sv/imgres",
- "google.com.tj/imgres",
- "google.com.tn/imgres",
- "google.com.tr/imgres",
- "google.com.tw/imgres",
- "google.com.ua/imgres",
- "google.com.uy/imgres",
- "google.com.vc/imgres",
- "google.com.vn/imgres",
- "google.cv/imgres",
- "google.cz/imgres",
- "google.de/imgres",
- "google.dj/imgres",
- "google.dk/imgres",
- "google.dm/imgres",
- "google.dz/imgres",
- "google.ee/imgres",
- "google.es/imgres",
- "google.fi/imgres",
- "google.fm/imgres",
- "google.fr/imgres",
- "google.ga/imgres",
- "google.gd/imgres",
- "google.ge/imgres",
- "google.gf/imgres",
- "google.gg/imgres",
- "google.gl/imgres",
- "google.gm/imgres",
- "google.gp/imgres",
- "google.gr/imgres",
- "google.gy/imgres",
- "google.hn/imgres",
- "google.hr/imgres",
- "google.ht/imgres",
- "google.hu/imgres",
- "google.ie/imgres",
- "google.im/imgres",
- "google.io/imgres",
- "google.iq/imgres",
- "google.is/imgres",
- "google.it/imgres",
- "google.it.ao/imgres",
- "google.je/imgres",
- "google.jo/imgres",
- "google.kg/imgres",
- "google.ki/imgres",
- "google.kz/imgres",
- "google.la/imgres",
- "google.li/imgres",
- "google.lk/imgres",
- "google.lt/imgres",
- "google.lu/imgres",
- "google.lv/imgres",
- "google.md/imgres",
- "google.me/imgres",
- "google.mg/imgres",
- "google.mk/imgres",
- "google.ml/imgres",
- "google.mn/imgres",
- "google.ms/imgres",
- "google.mu/imgres",
- "google.mv/imgres",
- "google.mw/imgres",
- "google.ne/imgres",
- "google.nl/imgres",
- "google.no/imgres",
- "google.nr/imgres",
- "google.nu/imgres",
- "google.pl/imgres",
- "google.pn/imgres",
- "google.ps/imgres",
- "google.pt/imgres",
- "google.ro/imgres",
- "google.rs/imgres",
- "google.ru/imgres",
- "google.rw/imgres",
- "google.sc/imgres",
- "google.se/imgres",
- "google.sh/imgres",
- "google.si/imgres",
- "google.sk/imgres",
- "google.sm/imgres",
- "google.sn/imgres",
- "google.so/imgres",
- "google.st/imgres",
- "google.td/imgres",
- "google.tg/imgres",
- "google.tk/imgres",
- "google.tl/imgres",
- "google.tm/imgres",
- "google.to/imgres",
- "google.tt/imgres",
- "google.us/imgres",
- "google.vg/imgres",
- "google.vu/imgres",
- "images.google.ws",
- "images.google.ac",
- "images.google.ad",
- "images.google.ae",
- "images.google.am",
- "images.google.as",
- "images.google.at",
- "images.google.az",
- "images.google.ba",
- "images.google.be",
- "images.google.bf",
- "images.google.bg",
- "images.google.bi",
- "images.google.bj",
- "images.google.bs",
- "images.google.by",
- "images.google.ca",
- "images.google.cat",
- "images.google.cc",
- "images.google.cd",
- "images.google.cf",
- "images.google.cg",
- "images.google.ch",
- "images.google.ci",
- "images.google.cl",
- "images.google.cm",
- "images.google.cn",
- "images.google.co.bw",
- "images.google.co.ck",
- "images.google.co.cr",
- "images.google.co.id",
- "images.google.co.il",
- "images.google.co.in",
- "images.google.co.jp",
- "images.google.co.ke",
- "images.google.co.kr",
- "images.google.co.ls",
- "images.google.co.ma",
- "images.google.co.mz",
- "images.google.co.nz",
- "images.google.co.th",
- "images.google.co.tz",
- "images.google.co.ug",
- "images.google.co.uk",
- "images.google.co.uz",
- "images.google.co.ve",
- "images.google.co.vi",
- "images.google.co.za",
- "images.google.co.zm",
- "images.google.co.zw",
- "images.google.com",
- "images.google.com.af",
- "images.google.com.ag",
- "images.google.com.ai",
- "images.google.com.ar",
- "images.google.com.au",
- "images.google.com.bd",
- "images.google.com.bh",
- "images.google.com.bn",
- "images.google.com.bo",
- "images.google.com.br",
- "images.google.com.by",
- "images.google.com.bz",
- "images.google.com.co",
- "images.google.com.cu",
- "images.google.com.cy",
- "images.google.com.do",
- "images.google.com.ec",
- "images.google.com.eg",
- "images.google.com.et",
- "images.google.com.fj",
- "images.google.com.gh",
- "images.google.com.gi",
- "images.google.com.gt",
- "images.google.com.hk",
- "images.google.com.jm",
- "images.google.com.kh",
- "images.google.com.kh",
- "images.google.com.kw",
- "images.google.com.lb",
- "images.google.com.lc",
- "images.google.com.ly",
- "images.google.com.mt",
- "images.google.com.mx",
- "images.google.com.my",
- "images.google.com.na",
- "images.google.com.nf",
- "images.google.com.ng",
- "images.google.com.ni",
- "images.google.com.np",
- "images.google.com.om",
- "images.google.com.pa",
- "images.google.com.pe",
- "images.google.com.ph",
- "images.google.com.pk",
- "images.google.com.pr",
- "images.google.com.py",
- "images.google.com.qa",
- "images.google.com.sa",
- "images.google.com.sb",
- "images.google.com.sg",
- "images.google.com.sl",
- "images.google.com.sv",
- "images.google.com.tj",
- "images.google.com.tn",
- "images.google.com.tr",
- "images.google.com.tw",
- "images.google.com.ua",
- "images.google.com.uy",
- "images.google.com.vc",
- "images.google.com.vn",
- "images.google.cv",
- "images.google.cz",
- "images.google.de",
- "images.google.dj",
- "images.google.dk",
- "images.google.dm",
- "images.google.dz",
- "images.google.ee",
- "images.google.es",
- "images.google.fi",
- "images.google.fm",
- "images.google.fr",
- "images.google.ga",
- "images.google.gd",
- "images.google.ge",
- "images.google.gf",
- "images.google.gg",
- "images.google.gl",
- "images.google.gm",
- "images.google.gp",
- "images.google.gr",
- "images.google.gy",
- "images.google.hn",
- "images.google.hr",
- "images.google.ht",
- "images.google.hu",
- "images.google.ie",
- "images.google.im",
- "images.google.io",
- "images.google.iq",
- "images.google.is",
- "images.google.it",
- "images.google.it.ao",
- "images.google.je",
- "images.google.jo",
- "images.google.kg",
- "images.google.ki",
- "images.google.kz",
- "images.google.la",
- "images.google.li",
- "images.google.lk",
- "images.google.lt",
- "images.google.lu",
- "images.google.lv",
- "images.google.md",
- "images.google.me",
- "images.google.mg",
- "images.google.mk",
- "images.google.ml",
- "images.google.mn",
- "images.google.ms",
- "images.google.mu",
- "images.google.mv",
- "images.google.mw",
- "images.google.ne",
- "images.google.nl",
- "images.google.no",
- "images.google.nr",
- "images.google.nu",
- "images.google.pl",
- "images.google.pn",
- "images.google.ps",
- "images.google.pt",
- "images.google.ro",
- "images.google.rs",
- "images.google.ru",
- "images.google.rw",
- "images.google.sc",
- "images.google.se",
- "images.google.sh",
- "images.google.si",
- "images.google.sk",
- "images.google.sm",
- "images.google.sn",
- "images.google.so",
- "images.google.st",
- "images.google.td",
- "images.google.tg",
- "images.google.tk",
- "images.google.tl",
- "images.google.tm",
- "images.google.to",
- "images.google.tt",
- "images.google.us",
- "images.google.vg",
- "images.google.vu",
- "images.google.ws"
- ],
- "parameters": [
- "q"
- ]
- },
- "ABCs\u00f8k": {
- "domains": [
- "abcsolk.no",
- "verden.abcsok.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Google Product Search": {
- "domains": [
- "google.ac/products",
- "google.ad/products",
- "google.ae/products",
- "google.am/products",
- "google.as/products",
- "google.at/products",
- "google.az/products",
- "google.ba/products",
- "google.be/products",
- "google.bf/products",
- "google.bg/products",
- "google.bi/products",
- "google.bj/products",
- "google.bs/products",
- "google.by/products",
- "google.ca/products",
- "google.cat/products",
- "google.cc/products",
- "google.cd/products",
- "google.cf/products",
- "google.cg/products",
- "google.ch/products",
- "google.ci/products",
- "google.cl/products",
- "google.cm/products",
- "google.cn/products",
- "google.co.bw/products",
- "google.co.ck/products",
- "google.co.cr/products",
- "google.co.id/products",
- "google.co.il/products",
- "google.co.in/products",
- "google.co.jp/products",
- "google.co.ke/products",
- "google.co.kr/products",
- "google.co.ls/products",
- "google.co.ma/products",
- "google.co.mz/products",
- "google.co.nz/products",
- "google.co.th/products",
- "google.co.tz/products",
- "google.co.ug/products",
- "google.co.uk/products",
- "google.co.uz/products",
- "google.co.ve/products",
- "google.co.vi/products",
- "google.co.za/products",
- "google.co.zm/products",
- "google.co.zw/products",
- "google.com/products",
- "google.com.af/products",
- "google.com.ag/products",
- "google.com.ai/products",
- "google.com.ar/products",
- "google.com.au/products",
- "google.com.bd/products",
- "google.com.bh/products",
- "google.com.bn/products",
- "google.com.bo/products",
- "google.com.br/products",
- "google.com.by/products",
- "google.com.bz/products",
- "google.com.co/products",
- "google.com.cu/products",
- "google.com.cy/products",
- "google.com.do/products",
- "google.com.ec/products",
- "google.com.eg/products",
- "google.com.et/products",
- "google.com.fj/products",
- "google.com.gh/products",
- "google.com.gi/products",
- "google.com.gt/products",
- "google.com.hk/products",
- "google.com.jm/products",
- "google.com.kh/products",
- "google.com.kh/products",
- "google.com.kw/products",
- "google.com.lb/products",
- "google.com.lc/products",
- "google.com.ly/products",
- "google.com.mt/products",
- "google.com.mx/products",
- "google.com.my/products",
- "google.com.na/products",
- "google.com.nf/products",
- "google.com.ng/products",
- "google.com.ni/products",
- "google.com.np/products",
- "google.com.om/products",
- "google.com.pa/products",
- "google.com.pe/products",
- "google.com.ph/products",
- "google.com.pk/products",
- "google.com.pr/products",
- "google.com.py/products",
- "google.com.qa/products",
- "google.com.sa/products",
- "google.com.sb/products",
- "google.com.sg/products",
- "google.com.sl/products",
- "google.com.sv/products",
- "google.com.tj/products",
- "google.com.tn/products",
- "google.com.tr/products",
- "google.com.tw/products",
- "google.com.ua/products",
- "google.com.uy/products",
- "google.com.vc/products",
- "google.com.vn/products",
- "google.cv/products",
- "google.cz/products",
- "google.de/products",
- "google.dj/products",
- "google.dk/products",
- "google.dm/products",
- "google.dz/products",
- "google.ee/products",
- "google.es/products",
- "google.fi/products",
- "google.fm/products",
- "google.fr/products",
- "google.ga/products",
- "google.gd/products",
- "google.ge/products",
- "google.gf/products",
- "google.gg/products",
- "google.gl/products",
- "google.gm/products",
- "google.gp/products",
- "google.gr/products",
- "google.gy/products",
- "google.hn/products",
- "google.hr/products",
- "google.ht/products",
- "google.hu/products",
- "google.ie/products",
- "google.im/products",
- "google.io/products",
- "google.iq/products",
- "google.is/products",
- "google.it/products",
- "google.it.ao/products",
- "google.je/products",
- "google.jo/products",
- "google.kg/products",
- "google.ki/products",
- "google.kz/products",
- "google.la/products",
- "google.li/products",
- "google.lk/products",
- "google.lt/products",
- "google.lu/products",
- "google.lv/products",
- "google.md/products",
- "google.me/products",
- "google.mg/products",
- "google.mk/products",
- "google.ml/products",
- "google.mn/products",
- "google.ms/products",
- "google.mu/products",
- "google.mv/products",
- "google.mw/products",
- "google.ne/products",
- "google.nl/products",
- "google.no/products",
- "google.nr/products",
- "google.nu/products",
- "google.pl/products",
- "google.pn/products",
- "google.ps/products",
- "google.pt/products",
- "google.ro/products",
- "google.rs/products",
- "google.ru/products",
- "google.rw/products",
- "google.sc/products",
- "google.se/products",
- "google.sh/products",
- "google.si/products",
- "google.sk/products",
- "google.sm/products",
- "google.sn/products",
- "google.so/products",
- "google.st/products",
- "google.td/products",
- "google.tg/products",
- "google.tk/products",
- "google.tl/products",
- "google.tm/products",
- "google.to/products",
- "google.tt/products",
- "google.us/products",
- "google.vg/products",
- "google.vu/products",
- "google.ws/products",
- "www.google.ac/products",
- "www.google.ad/products",
- "www.google.ae/products",
- "www.google.am/products",
- "www.google.as/products",
- "www.google.at/products",
- "www.google.az/products",
- "www.google.ba/products",
- "www.google.be/products",
- "www.google.bf/products",
- "www.google.bg/products",
- "www.google.bi/products",
- "www.google.bj/products",
- "www.google.bs/products",
- "www.google.by/products",
- "www.google.ca/products",
- "www.google.cat/products",
- "www.google.cc/products",
- "www.google.cd/products",
- "www.google.cf/products",
- "www.google.cg/products",
- "www.google.ch/products",
- "www.google.ci/products",
- "www.google.cl/products",
- "www.google.cm/products",
- "www.google.cn/products",
- "www.google.co.bw/products",
- "www.google.co.ck/products",
- "www.google.co.cr/products",
- "www.google.co.id/products",
- "www.google.co.il/products",
- "www.google.co.in/products",
- "www.google.co.jp/products",
- "www.google.co.ke/products",
- "www.google.co.kr/products",
- "www.google.co.ls/products",
- "www.google.co.ma/products",
- "www.google.co.mz/products",
- "www.google.co.nz/products",
- "www.google.co.th/products",
- "www.google.co.tz/products",
- "www.google.co.ug/products",
- "www.google.co.uk/products",
- "www.google.co.uz/products",
- "www.google.co.ve/products",
- "www.google.co.vi/products",
- "www.google.co.za/products",
- "www.google.co.zm/products",
- "www.google.co.zw/products",
- "www.google.com/products",
- "www.google.com.af/products",
- "www.google.com.ag/products",
- "www.google.com.ai/products",
- "www.google.com.ar/products",
- "www.google.com.au/products",
- "www.google.com.bd/products",
- "www.google.com.bh/products",
- "www.google.com.bn/products",
- "www.google.com.bo/products",
- "www.google.com.br/products",
- "www.google.com.by/products",
- "www.google.com.bz/products",
- "www.google.com.co/products",
- "www.google.com.cu/products",
- "www.google.com.cy/products",
- "www.google.com.do/products",
- "www.google.com.ec/products",
- "www.google.com.eg/products",
- "www.google.com.et/products",
- "www.google.com.fj/products",
- "www.google.com.gh/products",
- "www.google.com.gi/products",
- "www.google.com.gt/products",
- "www.google.com.hk/products",
- "www.google.com.jm/products",
- "www.google.com.kh/products",
- "www.google.com.kh/products",
- "www.google.com.kw/products",
- "www.google.com.lb/products",
- "www.google.com.lc/products",
- "www.google.com.ly/products",
- "www.google.com.mt/products",
- "www.google.com.mx/products",
- "www.google.com.my/products",
- "www.google.com.na/products",
- "www.google.com.nf/products",
- "www.google.com.ng/products",
- "www.google.com.ni/products",
- "www.google.com.np/products",
- "www.google.com.om/products",
- "www.google.com.pa/products",
- "www.google.com.pe/products",
- "www.google.com.ph/products",
- "www.google.com.pk/products",
- "www.google.com.pr/products",
- "www.google.com.py/products",
- "www.google.com.qa/products",
- "www.google.com.sa/products",
- "www.google.com.sb/products",
- "www.google.com.sg/products",
- "www.google.com.sl/products",
- "www.google.com.sv/products",
- "www.google.com.tj/products",
- "www.google.com.tn/products",
- "www.google.com.tr/products",
- "www.google.com.tw/products",
- "www.google.com.ua/products",
- "www.google.com.uy/products",
- "www.google.com.vc/products",
- "www.google.com.vn/products",
- "www.google.cv/products",
- "www.google.cz/products",
- "www.google.de/products",
- "www.google.dj/products",
- "www.google.dk/products",
- "www.google.dm/products",
- "www.google.dz/products",
- "www.google.ee/products",
- "www.google.es/products",
- "www.google.fi/products",
- "www.google.fm/products",
- "www.google.fr/products",
- "www.google.ga/products",
- "www.google.gd/products",
- "www.google.ge/products",
- "www.google.gf/products",
- "www.google.gg/products",
- "www.google.gl/products",
- "www.google.gm/products",
- "www.google.gp/products",
- "www.google.gr/products",
- "www.google.gy/products",
- "www.google.hn/products",
- "www.google.hr/products",
- "www.google.ht/products",
- "www.google.hu/products",
- "www.google.ie/products",
- "www.google.im/products",
- "www.google.io/products",
- "www.google.iq/products",
- "www.google.is/products",
- "www.google.it/products",
- "www.google.it.ao/products",
- "www.google.je/products",
- "www.google.jo/products",
- "www.google.kg/products",
- "www.google.ki/products",
- "www.google.kz/products",
- "www.google.la/products",
- "www.google.li/products",
- "www.google.lk/products",
- "www.google.lt/products",
- "www.google.lu/products",
- "www.google.lv/products",
- "www.google.md/products",
- "www.google.me/products",
- "www.google.mg/products",
- "www.google.mk/products",
- "www.google.ml/products",
- "www.google.mn/products",
- "www.google.ms/products",
- "www.google.mu/products",
- "www.google.mv/products",
- "www.google.mw/products",
- "www.google.ne/products",
- "www.google.nl/products",
- "www.google.no/products",
- "www.google.nr/products",
- "www.google.nu/products",
- "www.google.pl/products",
- "www.google.pn/products",
- "www.google.ps/products",
- "www.google.pt/products",
- "www.google.ro/products",
- "www.google.rs/products",
- "www.google.ru/products",
- "www.google.rw/products",
- "www.google.sc/products",
- "www.google.se/products",
- "www.google.sh/products",
- "www.google.si/products",
- "www.google.sk/products",
- "www.google.sm/products",
- "www.google.sn/products",
- "www.google.so/products",
- "www.google.st/products",
- "www.google.td/products",
- "www.google.tg/products",
- "www.google.tk/products",
- "www.google.tl/products",
- "www.google.tm/products",
- "www.google.to/products",
- "www.google.tt/products",
- "www.google.us/products",
- "www.google.vg/products",
- "www.google.vu/products",
- "www.google.ws/products"
- ],
- "parameters": [
- "q"
- ]
- },
- "DasOertliche": {
- "domains": [
- "www.dasoertliche.de"
- ],
- "parameters": [
- "kw"
- ]
- },
- "InfoSpace": {
- "domains": [
- "infospace.com",
- "dogpile.com",
- "www.dogpile.com",
- "metacrawler.com",
- "webfetch.com",
- "webcrawler.com",
- "search.kiwee.com",
- "isearch.babylon.com",
- "start.facemoods.com",
- "search.magnetic.com",
- "search.searchcompletion.com",
- "clusty.com"
- ],
- "parameters": [
- "q",
- "s"
- ]
- },
- "Weborama": {
- "domains": [
- "www.weborama.com"
- ],
- "parameters": [
- "QUERY"
- ]
- },
- "Bluewin": {
- "domains": [
- "search.bluewin.ch"
- ],
- "parameters": [
- "searchTerm"
- ]
- },
- "Neti": {
- "domains": [
- "www.neti.ee"
- ],
- "parameters": [
- "query"
- ]
- },
- "Winamp": {
- "domains": [
- "search.winamp.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Nigma": {
- "domains": [
- "nigma.ru"
- ],
- "parameters": [
- "s"
- ]
- },
- "Yahoo! Images": {
- "domains": [
- "image.yahoo.cn",
- "images.search.yahoo.com"
- ],
- "parameters": [
- "p",
- "q"
- ]
- },
- "Exalead": {
- "domains": [
- "www.exalead.fr",
- "www.exalead.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Teoma": {
- "domains": [
- "www.teoma.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Needtofind": {
- "domains": [
- "ko.search.need2find.com"
- ],
- "parameters": [
- "searchfor"
- ]
- },
- "Looksmart": {
- "domains": [
- "www.looksmart.com"
- ],
- "parameters": [
- "key"
- ]
- },
- "Wirtualna Polska": {
- "domains": [
- "szukaj.wp.pl"
- ],
- "parameters": [
- "szukaj"
- ]
- },
- "Toolbarhome": {
- "domains": [
- "www.toolbarhome.com",
- "vshare.toolbarhome.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Searchalot": {
- "domains": [
- "searchalot.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yandex": {
- "domains": [
- "yandex.ru",
- "yandex.ua",
- "yandex.com",
- "yandex.by",
- "www.yandex.ru",
- "www.yandex.ua",
- "www.yandex.com",
- "www.yandex.by"
- ],
- "parameters": [
- "text"
- ]
- },
- "canoe.ca": {
- "domains": [
- "web.canoe.ca"
- ],
- "parameters": [
- "q"
- ]
- },
- "Compuserve": {
- "domains": [
- "websearch.cs.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Blogdigger": {
- "domains": [
- "www.blogdigger.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Startpagina": {
- "domains": [
- "startgoogle.startpagina.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "eo": {
- "domains": [
- "eo.st"
- ],
- "parameters": [
- "x_query"
- ]
- },
- "Zhongsou": {
- "domains": [
- "p.zhongsou.com"
- ],
- "parameters": [
- "w"
- ]
- },
- "La Toile Du Quebec Via Google": {
- "domains": [
- "www.toile.com",
- "web.toile.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Paperball": {
- "domains": [
- "www.paperball.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Jungle Spider": {
- "domains": [
- "www.jungle-spider.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "PeoplePC": {
- "domains": [
- "search.peoplepc.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "MetaCrawler.de": {
- "domains": [
- "s1.metacrawler.de",
- "s2.metacrawler.de",
- "s3.metacrawler.de"
- ],
- "parameters": [
- "qry"
- ]
- },
- "Orange": {
- "domains": [
- "busca.orange.es",
- "search.orange.co.uk"
- ],
- "parameters": [
- "q"
- ]
- },
- "Gule Sider": {
- "domains": [
- "www.gulesider.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Francite": {
- "domains": [
- "recherche.francite.com"
- ],
- "parameters": [
- "name"
- ]
- },
- "Ask Toolbar": {
- "domains": [
- "search.tb.ask.com"
- ],
- "parameters": [
- "searchfor"
- ]
- },
- "Trusted-Search": {
- "domains": [
- "www.trusted--search.com"
- ],
- "parameters": [
- "w"
- ]
- },
- "goo": {
- "domains": [
- "search.goo.ne.jp",
- "ocnsearch.goo.ne.jp"
- ],
- "parameters": [
- "MT"
- ]
- },
- "Fast Browser Search": {
- "domains": [
- "www.fastbrowsersearch.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Blogpulse": {
- "domains": [
- "www.blogpulse.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Volny": {
- "domains": [
- "web.volny.cz"
- ],
- "parameters": [
- "search"
- ]
- },
- "Icerockeet": {
- "domains": [
- "blogs.icerocket.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Terra": {
- "domains": [
- "buscador.terra.es",
- "buscador.terra.cl",
- "buscador.terra.com.br"
- ],
- "parameters": [
- "query"
- ]
- },
- "Amazon": {
- "domains": [
- "amazon.com",
- "www.amazon.com"
- ],
- "parameters": [
- "keywords"
- ]
- },
- "Onet": {
- "domains": [
- "szukaj.onet.pl"
- ],
- "parameters": [
- "qt"
- ]
- },
- "Digg": {
- "domains": [
- "digg.com"
- ],
- "parameters": [
- "s"
- ]
- },
- "Abacho": {
- "domains": [
- "www.abacho.de",
- "www.abacho.com",
- "www.abacho.co.uk",
- "www.se.abacho.com",
- "www.tr.abacho.com",
- "www.abacho.at",
- "www.abacho.fr",
- "www.abacho.es",
- "www.abacho.ch",
- "www.abacho.it"
- ],
- "parameters": [
- "q"
- ]
- },
- "maailm": {
- "domains": [
- "www.maailm.com"
- ],
- "parameters": [
- "tekst"
- ]
- },
- "Flix": {
- "domains": [
- "www.flix.de"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Suchnase": {
- "domains": [
- "www.suchnase.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Freenet": {
- "domains": [
- "suche.freenet.de"
- ],
- "parameters": [
- "query",
- "Keywords"
- ]
- },
- "Poisk.ru": {
- "domains": [
- "www.plazoo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Sharelook": {
- "domains": [
- "www.sharelook.fr"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Najdi": {
- "domains": [
- "www.najdi.si"
- ],
- "parameters": [
- "q"
- ]
- },
- "Picsearch": {
- "domains": [
- "www.picsearch.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Mail.ru": {
- "domains": [
- "go.mail.ru"
- ],
- "parameters": [
- "q"
- ]
- },
- "Alexa": {
- "domains": [
- "alexa.com",
- "search.toolbars.alexa.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Metager": {
- "domains": [
- "meta.rrzn.uni-hannover.de",
- "www.metager.de"
- ],
- "parameters": [
- "eingabe"
- ]
- },
- "Technorati": {
- "domains": [
- "technorati.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Globososo": {
- "domains": [
- "searches.globososo.com",
- "search.globososo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "WWW": {
- "domains": [
- "search.www.ee"
- ],
- "parameters": [
- "query"
- ]
- },
- "Trouvez.com": {
- "domains": [
- "www.trouvez.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "IXquick": {
- "domains": [
- "ixquick.com",
- "www.eu.ixquick.com",
- "ixquick.de",
- "www.ixquick.de",
- "us.ixquick.com",
- "s1.us.ixquick.com",
- "s2.us.ixquick.com",
- "s3.us.ixquick.com",
- "s4.us.ixquick.com",
- "s5.us.ixquick.com",
- "eu.ixquick.com",
- "s8-eu.ixquick.com",
- "s1-eu.ixquick.de"
- ],
- "parameters": [
- "query"
- ]
- },
- "Naver Images": {
- "domains": [
- "image.search.naver.com",
- "imagesearch.naver.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Zapmeta": {
- "domains": [
- "www.zapmeta.com",
- "www.zapmeta.nl",
- "www.zapmeta.de",
- "uk.zapmeta.com"
- ],
- "parameters": [
- "q",
- "query"
- ]
- },
- "Yippy": {
- "domains": [
- "search.yippy.com"
- ],
- "parameters": [
- "q",
- "query"
- ]
- },
- "Gomeo": {
- "domains": [
- "www.gomeo.com"
- ],
- "parameters": [
- "Keywords"
- ]
- },
- "Walhello": {
- "domains": [
- "www.walhello.info",
- "www.walhello.com",
- "www.walhello.de",
- "www.walhello.nl"
- ],
- "parameters": [
- "key"
- ]
- },
- "Meta": {
- "domains": [
- "meta.ua"
- ],
- "parameters": [
- "q"
- ]
- },
- "Skynet": {
- "domains": [
- "www.skynet.be"
- ],
- "parameters": [
- "q"
- ]
- },
- "Searchy": {
- "domains": [
- "www.searchy.co.uk"
- ],
- "parameters": [
- "q"
- ]
- },
- "Findwide": {
- "domains": [
- "search.findwide.com"
- ],
- "parameters": [
- "k"
- ]
- },
- "WebSearch": {
- "domains": [
- "www.websearch.com"
- ],
- "parameters": [
- "qkw",
- "q"
- ]
- },
- "Rambler": {
- "domains": [
- "nova.rambler.ru"
- ],
- "parameters": [
- "query",
- "words"
- ]
- },
- "Latne": {
- "domains": [
- "www.latne.lv"
- ],
- "parameters": [
- "q"
- ]
- },
- "MySearch": {
- "domains": [
- "www.mysearch.com",
- "ms114.mysearch.com",
- "ms146.mysearch.com",
- "kf.mysearch.myway.com",
- "ki.mysearch.myway.com",
- "search.myway.com",
- "search.mywebsearch.com"
- ],
- "parameters": [
- "searchfor",
- "searchFor"
- ]
- },
- "Cuil": {
- "domains": [
- "www.cuil.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Tixuma": {
- "domains": [
- "www.tixuma.de"
- ],
- "parameters": [
- "sc"
- ]
- },
- "Sapo": {
- "domains": [
- "pesquisa.sapo.pt"
- ],
- "parameters": [
- "q"
- ]
- },
- "Gnadenmeer": {
- "domains": [
- "www.gnadenmeer.de"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Arcor": {
- "domains": [
- "www.arcor.de"
- ],
- "parameters": [
- "Keywords"
- ]
- },
- "Naver": {
- "domains": [
- "search.naver.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Zoeken": {
- "domains": [
- "www.zoeken.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Startsiden": {
- "domains": [
- "www.startsiden.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yam": {
- "domains": [
- "search.yam.com"
- ],
- "parameters": [
- "k"
- ]
- },
- "Eniro": {
- "domains": [
- "www.eniro.se"
- ],
- "parameters": [
- "q",
- "search_word"
- ]
- },
- "APOLL07": {
- "domains": [
- "apollo7.de"
- ],
- "parameters": [
- "query"
- ]
- },
- "Biglobe": {
- "domains": [
- "cgi.search.biglobe.ne.jp"
- ],
- "parameters": [
- "q"
- ]
- },
- "Mozbot": {
- "domains": [
- "www.mozbot.fr",
- "www.mozbot.co.uk",
- "www.mozbot.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "ICQ": {
- "domains": [
- "www.icq.com",
- "search.icq.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Baidu": {
- "domains": [
- "www.baidu.com",
- "www1.baidu.com",
- "zhidao.baidu.com",
- "tieba.baidu.com",
- "news.baidu.com",
- "web.gougou.com"
- ],
- "parameters": [
- "wd",
- "word",
- "kw",
- "k"
- ]
- },
- "Conduit": {
- "domains": [
- "search.conduit.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Vindex": {
- "domains": [
- "www.vindex.nl",
- "search.vindex.nl"
- ],
- "parameters": [
- "search_for"
- ]
- },
- "Babylon": {
- "domains": [
- "search.babylon.com",
- "searchassist.babylon.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "TrovaRapido": {
- "domains": [
- "www.trovarapido.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Suchmaschine.com": {
- "domains": [
- "www.suchmaschine.com"
- ],
- "parameters": [
- "suchstr"
- ]
- },
- "Lycos": {
- "domains": [
- "search.lycos.com",
- "www.lycos.com",
- "lycos.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Vinden": {
- "domains": [
- "www.vinden.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Altavista": {
- "domains": [
- "www.altavista.com",
- "search.altavista.com",
- "listings.altavista.com",
- "altavista.de",
- "altavista.fr",
- "be-nl.altavista.com",
- "be-fr.altavista.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "dmoz": {
- "domains": [
- "dmoz.org",
- "editors.dmoz.org"
- ],
- "parameters": [
- "q"
- ]
- },
- "Ecosia": {
- "domains": [
- "ecosia.org"
- ],
- "parameters": [
- "q"
- ]
- },
- "Maxwebsearch": {
- "domains": [
- "maxwebsearch.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Euroseek": {
- "domains": [
- "www.euroseek.com"
- ],
- "parameters": [
- "string"
- ]
- },
- "Bing": {
- "domains": [
- "bing.com",
- "www.bing.com",
- "msnbc.msn.com",
- "dizionario.it.msn.com",
- "cc.bingj.com",
- "m.bing.com"
- ],
- "parameters": [
- "q",
- "Q"
- ]
- },
- "X-recherche": {
- "domains": [
- "www.x-recherche.com"
- ],
- "parameters": [
- "MOTS"
- ]
- },
- "Yandex Images": {
- "domains": [
- "images.yandex.ru",
- "images.yandex.ua",
- "images.yandex.com"
- ],
- "parameters": [
- "text"
- ]
- },
- "GMX": {
- "domains": [
- "suche.gmx.net"
- ],
- "parameters": [
- "su"
- ]
- },
- "Daemon search": {
- "domains": [
- "daemon-search.com",
- "my.daemon-search.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Jungle Key": {
- "domains": [
- "junglekey.com",
- "junglekey.fr"
- ],
- "parameters": [
- "query"
- ]
- },
- "Firstfind": {
- "domains": [
- "www.firstsfind.com"
- ],
- "parameters": [
- "qry"
- ]
- },
- "Crawler": {
- "domains": [
- "www.crawler.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Holmes": {
- "domains": [
- "holmes.ge"
- ],
- "parameters": [
- "q"
- ]
- },
- "Charter": {
- "domains": [
- "www.charter.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Ilse": {
- "domains": [
- "www.ilse.nl"
- ],
- "parameters": [
- "search_for"
- ]
- },
- "earthlink": {
- "domains": [
- "search.earthlink.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Qualigo": {
- "domains": [
- "www.qualigo.at",
- "www.qualigo.ch",
- "www.qualigo.de",
- "www.qualigo.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "El Mundo": {
- "domains": [
- "ariadna.elmundo.es"
- ],
- "parameters": [
- "q"
- ]
- },
- "Metager2": {
- "domains": [
- "metager2.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "Forestle": {
- "domains": [
- "forestle.org",
- "www.forestle.org",
- "forestle.mobi"
- ],
- "parameters": [
- "q"
- ]
- },
- "Search.ch": {
- "domains": [
- "www.search.ch"
- ],
- "parameters": [
- "q"
- ]
- },
- "Meinestadt": {
- "domains": [
- "www.meinestadt.de"
- ],
- "parameters": [
- "words"
- ]
- },
- "Freshweather": {
- "domains": [
- "www.fresh-weather.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "AllTheWeb": {
- "domains": [
- "www.alltheweb.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Snapdo": {
- "domains": [
- "search.snapdo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Zoek": {
- "domains": [
- "www3.zoek.nl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Daum": {
- "domains": [
- "search.daum.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Marktplaats": {
- "domains": [
- "www.marktplaats.nl"
- ],
- "parameters": [
- "query"
- ]
- },
- "suche.info": {
- "domains": [
- "suche.info"
- ],
- "parameters": [
- "q"
- ]
- },
- "Google News": {
- "domains": [
- "news.google.ac",
- "news.google.ad",
- "news.google.ae",
- "news.google.am",
- "news.google.as",
- "news.google.at",
- "news.google.az",
- "news.google.ba",
- "news.google.be",
- "news.google.bf",
- "news.google.bg",
- "news.google.bi",
- "news.google.bj",
- "news.google.bs",
- "news.google.by",
- "news.google.ca",
- "news.google.cat",
- "news.google.cc",
- "news.google.cd",
- "news.google.cf",
- "news.google.cg",
- "news.google.ch",
- "news.google.ci",
- "news.google.cl",
- "news.google.cm",
- "news.google.cn",
- "news.google.co.bw",
- "news.google.co.ck",
- "news.google.co.cr",
- "news.google.co.id",
- "news.google.co.il",
- "news.google.co.in",
- "news.google.co.jp",
- "news.google.co.ke",
- "news.google.co.kr",
- "news.google.co.ls",
- "news.google.co.ma",
- "news.google.co.mz",
- "news.google.co.nz",
- "news.google.co.th",
- "news.google.co.tz",
- "news.google.co.ug",
- "news.google.co.uk",
- "news.google.co.uz",
- "news.google.co.ve",
- "news.google.co.vi",
- "news.google.co.za",
- "news.google.co.zm",
- "news.google.co.zw",
- "news.google.com",
- "news.google.com.af",
- "news.google.com.ag",
- "news.google.com.ai",
- "news.google.com.ar",
- "news.google.com.au",
- "news.google.com.bd",
- "news.google.com.bh",
- "news.google.com.bn",
- "news.google.com.bo",
- "news.google.com.br",
- "news.google.com.by",
- "news.google.com.bz",
- "news.google.com.co",
- "news.google.com.cu",
- "news.google.com.cy",
- "news.google.com.do",
- "news.google.com.ec",
- "news.google.com.eg",
- "news.google.com.et",
- "news.google.com.fj",
- "news.google.com.gh",
- "news.google.com.gi",
- "news.google.com.gt",
- "news.google.com.hk",
- "news.google.com.jm",
- "news.google.com.kh",
- "news.google.com.kh",
- "news.google.com.kw",
- "news.google.com.lb",
- "news.google.com.lc",
- "news.google.com.ly",
- "news.google.com.mt",
- "news.google.com.mx",
- "news.google.com.my",
- "news.google.com.na",
- "news.google.com.nf",
- "news.google.com.ng",
- "news.google.com.ni",
- "news.google.com.np",
- "news.google.com.om",
- "news.google.com.pa",
- "news.google.com.pe",
- "news.google.com.ph",
- "news.google.com.pk",
- "news.google.com.pr",
- "news.google.com.py",
- "news.google.com.qa",
- "news.google.com.sa",
- "news.google.com.sb",
- "news.google.com.sg",
- "news.google.com.sl",
- "news.google.com.sv",
- "news.google.com.tj",
- "news.google.com.tn",
- "news.google.com.tr",
- "news.google.com.tw",
- "news.google.com.ua",
- "news.google.com.uy",
- "news.google.com.vc",
- "news.google.com.vn",
- "news.google.cv",
- "news.google.cz",
- "news.google.de",
- "news.google.dj",
- "news.google.dk",
- "news.google.dm",
- "news.google.dz",
- "news.google.ee",
- "news.google.es",
- "news.google.fi",
- "news.google.fm",
- "news.google.fr",
- "news.google.ga",
- "news.google.gd",
- "news.google.ge",
- "news.google.gf",
- "news.google.gg",
- "news.google.gl",
- "news.google.gm",
- "news.google.gp",
- "news.google.gr",
- "news.google.gy",
- "news.google.hn",
- "news.google.hr",
- "news.google.ht",
- "news.google.hu",
- "news.google.ie",
- "news.google.im",
- "news.google.io",
- "news.google.iq",
- "news.google.is",
- "news.google.it",
- "news.google.it.ao",
- "news.google.je",
- "news.google.jo",
- "news.google.kg",
- "news.google.ki",
- "news.google.kz",
- "news.google.la",
- "news.google.li",
- "news.google.lk",
- "news.google.lt",
- "news.google.lu",
- "news.google.lv",
- "news.google.md",
- "news.google.me",
- "news.google.mg",
- "news.google.mk",
- "news.google.ml",
- "news.google.mn",
- "news.google.ms",
- "news.google.mu",
- "news.google.mv",
- "news.google.mw",
- "news.google.ne",
- "news.google.nl",
- "news.google.no",
- "news.google.nr",
- "news.google.nu",
- "news.google.pl",
- "news.google.pn",
- "news.google.ps",
- "news.google.pt",
- "news.google.ro",
- "news.google.rs",
- "news.google.ru",
- "news.google.rw",
- "news.google.sc",
- "news.google.se",
- "news.google.sh",
- "news.google.si",
- "news.google.sk",
- "news.google.sm",
- "news.google.sn",
- "news.google.so",
- "news.google.st",
- "news.google.td",
- "news.google.tg",
- "news.google.tk",
- "news.google.tl",
- "news.google.tm",
- "news.google.to",
- "news.google.tt",
- "news.google.us",
- "news.google.vg",
- "news.google.vu",
- "news.google.ws"
- ],
- "parameters": [
- "q"
- ]
- },
- "Zoohoo": {
- "domains": [
- "zoohoo.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Seznam": {
- "domains": [
- "search.seznam.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Online.no": {
- "domains": [
- "online.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Eurip": {
- "domains": [
- "www.eurip.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "all.by": {
- "domains": [
- "all.by"
- ],
- "parameters": [
- "query"
- ]
- },
- "Road Runner Search": {
- "domains": [
- "search.rr.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Opplysningen 1881": {
- "domains": [
- "www.1881.no"
- ],
- "parameters": [
- "Query"
- ]
- },
- "YouGoo": {
- "domains": [
- "www.yougoo.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "Bing Images": {
- "domains": [
- "bing.com/images/search",
- "www.bing.com/images/search"
- ],
- "parameters": [
- "q",
- "Q"
- ]
- },
- "Geona": {
- "domains": [
- "geona.net"
- ],
- "parameters": [
- "q"
- ]
- },
- "Nate": {
- "domains": [
- "search.nate.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "DuckDuckGo": {
- "domains": [
- "duckduckgo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Hotbot": {
- "domains": [
- "www.hotbot.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Kvasir": {
- "domains": [
- "www.kvasir.no"
- ],
- "parameters": [
- "q"
- ]
- },
- "Austronaut": {
- "domains": [
- "www2.austronaut.at",
- "www1.astronaut.at"
- ],
- "parameters": [
- "q"
- ]
- },
- "Excite": {
- "domains": [
- "search.excite.it",
- "search.excite.fr",
- "search.excite.de",
- "search.excite.co.uk",
- "serach.excite.es",
- "search.excite.nl",
- "msxml.excite.com",
- "www.excite.co.jp"
- ],
- "parameters": [
- "q",
- "search"
- ]
- },
- "qip": {
- "domains": [
- "search.qip.ru"
- ],
- "parameters": [
- "query"
- ]
- },
- "Certified-Toolbar": {
- "domains": [
- "search.certified-toolbar.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Yahoo!": {
- "domains": [
- "search.yahoo.com",
- "yahoo.com",
- "ar.search.yahoo.com",
- "ar.yahoo.com",
- "au.search.yahoo.com",
- "au.yahoo.com",
- "br.search.yahoo.com",
- "br.yahoo.com",
- "cade.searchde.yahoo.com",
- "cade.yahoo.com",
- "chinese.searchinese.yahoo.com",
- "chinese.yahoo.com",
- "cn.search.yahoo.com",
- "cn.yahoo.com",
- "de.search.yahoo.com",
- "de.yahoo.com",
- "dk.search.yahoo.com",
- "dk.yahoo.com",
- "es.search.yahoo.com",
- "es.yahoo.com",
- "espanol.searchpanol.yahoo.com",
- "espanol.searchpanol.yahoo.com",
- "espanol.yahoo.com",
- "espanol.yahoo.com",
- "fr.search.yahoo.com",
- "fr.yahoo.com",
- "ie.search.yahoo.com",
- "ie.yahoo.com",
- "it.search.yahoo.com",
- "it.yahoo.com",
- "kr.search.yahoo.com",
- "kr.yahoo.com",
- "mx.search.yahoo.com",
- "mx.yahoo.com",
- "no.search.yahoo.com",
- "no.yahoo.com",
- "nz.search.yahoo.com",
- "nz.yahoo.com",
- "one.cn.yahoo.com",
- "one.searchn.yahoo.com",
- "qc.search.yahoo.com",
- "qc.search.yahoo.com",
- "qc.search.yahoo.com",
- "qc.yahoo.com",
- "qc.yahoo.com",
- "se.search.yahoo.com",
- "se.search.yahoo.com",
- "se.yahoo.com",
- "search.searcharch.yahoo.com",
- "search.yahoo.com",
- "uk.search.yahoo.com",
- "uk.yahoo.com",
- "www.yahoo.co.jp",
- "search.yahoo.co.jp",
- "www.cercato.it",
- "search.offerbox.com",
- "ys.mirostart.com"
- ],
- "parameters": [
- "p",
- "q"
- ]
- },
- "URL.ORGanizier": {
- "domains": [
- "www.url.org"
- ],
- "parameters": [
- "q"
- ]
- },
- "Witch": {
- "domains": [
- "www.witch.de"
- ],
- "parameters": [
- "search"
- ]
- },
- "Mister Wong": {
- "domains": [
- "www.mister-wong.com",
- "www.mister-wong.de"
- ],
- "parameters": [
- "Keywords"
- ]
- },
- "Aport": {
- "domains": [
- "sm.aport.ru"
- ],
- "parameters": [
- "r"
- ]
- },
- "Web.de": {
- "domains": [
- "suche.web.de"
- ],
- "parameters": [
- "su"
- ]
- },
- "Ask": {
- "domains": [
- "ask.com",
- "www.ask.com",
- "web.ask.com",
- "int.ask.com",
- "mws.ask.com",
- "uk.ask.com",
- "images.ask.com",
- "ask.reference.com",
- "www.askkids.com",
- "iwon.ask.com",
- "www.ask.co.uk",
- "www.qbyrd.com",
- "search-results.com",
- "uk.search-results.com",
- "www.search-results.com",
- "int.search-results.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Centrum": {
- "domains": [
- "serach.centrum.cz",
- "morfeo.centrum.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Everyclick": {
- "domains": [
- "www.everyclick.com"
- ],
- "parameters": [
- "keyword"
- ]
- },
- "Google Video": {
- "domains": [
- "video.google.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Delfi": {
- "domains": [
- "otsing.delfi.ee"
- ],
- "parameters": [
- "q"
- ]
- },
- "blekko": {
- "domains": [
- "blekko.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Jyxo": {
- "domains": [
- "jyxo.1188.cz"
- ],
- "parameters": [
- "q"
- ]
- },
- "Kataweb": {
- "domains": [
- "www.kataweb.it"
- ],
- "parameters": [
- "q"
- ]
- },
- "uol.com.br": {
- "domains": [
- "busca.uol.com.br"
- ],
- "parameters": [
- "q"
- ]
- },
- "Arianna": {
- "domains": [
- "arianna.libero.it",
- "www.arianna.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Mamma": {
- "domains": [
- "www.mamma.com",
- "mamma75.mamma.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Yatedo": {
- "domains": [
- "www.yatedo.com",
- "www.yatedo.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "Twingly": {
- "domains": [
- "www.twingly.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Delfi latvia": {
- "domains": [
- "smart.delfi.lv"
- ],
- "parameters": [
- "q"
- ]
- },
- "PriceRunner": {
- "domains": [
- "www.pricerunner.co.uk"
- ],
- "parameters": [
- "q"
- ]
- },
- "Rakuten": {
- "domains": [
- "websearch.rakuten.co.jp"
- ],
- "parameters": [
- "qt"
- ]
- },
- "Google": {
- "domains": [
- "www.google.com",
- "www.google.ac",
- "www.google.ad",
- "www.google.com.af",
- "www.google.com.ag",
- "www.google.com.ai",
- "www.google.am",
- "www.google.it.ao",
- "www.google.com.ar",
- "www.google.as",
- "www.google.at",
- "www.google.com.au",
- "www.google.az",
- "www.google.ba",
- "www.google.com.bd",
- "www.google.be",
- "www.google.bf",
- "www.google.bg",
- "www.google.com.bh",
- "www.google.bi",
- "www.google.bj",
- "www.google.com.bn",
- "www.google.com.bo",
- "www.google.com.br",
- "www.google.bs",
- "www.google.co.bw",
- "www.google.com.by",
- "www.google.by",
- "www.google.com.bz",
- "www.google.ca",
- "www.google.com.kh",
- "www.google.cc",
- "www.google.cd",
- "www.google.cf",
- "www.google.cat",
- "www.google.cg",
- "www.google.ch",
- "www.google.ci",
- "www.google.co.ck",
- "www.google.cl",
- "www.google.cm",
- "www.google.cn",
- "www.google.com.co",
- "www.google.co.cr",
- "www.google.com.cu",
- "www.google.cv",
- "www.google.com.cy",
- "www.google.cz",
- "www.google.de",
- "www.google.dj",
- "www.google.dk",
- "www.google.dm",
- "www.google.com.do",
- "www.google.dz",
- "www.google.com.ec",
- "www.google.ee",
- "www.google.com.eg",
- "www.google.es",
- "www.google.com.et",
- "www.google.fi",
- "www.google.com.fj",
- "www.google.fm",
- "www.google.fr",
- "www.google.ga",
- "www.google.gd",
- "www.google.ge",
- "www.google.gf",
- "www.google.gg",
- "www.google.com.gh",
- "www.google.com.gi",
- "www.google.gl",
- "www.google.gm",
- "www.google.gp",
- "www.google.gr",
- "www.google.com.gt",
- "www.google.gy",
- "www.google.com.hk",
- "www.google.hn",
- "www.google.hr",
- "www.google.ht",
- "www.google.hu",
- "www.google.co.id",
- "www.google.iq",
- "www.google.ie",
- "www.google.co.il",
- "www.google.im",
- "www.google.co.in",
- "www.google.io",
- "www.google.is",
- "www.google.it",
- "www.google.je",
- "www.google.com.jm",
- "www.google.jo",
- "www.google.co.jp",
- "www.google.co.ke",
- "www.google.com.kh",
- "www.google.ki",
- "www.google.kg",
- "www.google.co.kr",
- "www.google.com.kw",
- "www.google.kz",
- "www.google.la",
- "www.google.com.lb",
- "www.google.com.lc",
- "www.google.li",
- "www.google.lk",
- "www.google.co.ls",
- "www.google.lt",
- "www.google.lu",
- "www.google.lv",
- "www.google.com.ly",
- "www.google.co.ma",
- "www.google.md",
- "www.google.me",
- "www.google.mg",
- "www.google.mk",
- "www.google.ml",
- "www.google.mn",
- "www.google.ms",
- "www.google.com.mt",
- "www.google.mu",
- "www.google.mv",
- "www.google.mw",
- "www.google.com.mx",
- "www.google.com.my",
- "www.google.co.mz",
- "www.google.com.na",
- "www.google.ne",
- "www.google.com.nf",
- "www.google.com.ng",
- "www.google.com.ni",
- "www.google.nl",
- "www.google.no",
- "www.google.com.np",
- "www.google.nr",
- "www.google.nu",
- "www.google.co.nz",
- "www.google.com.om",
- "www.google.com.pa",
- "www.google.com.pe",
- "www.google.com.ph",
- "www.google.com.pk",
- "www.google.pl",
- "www.google.pn",
- "www.google.com.pr",
- "www.google.ps",
- "www.google.pt",
- "www.google.com.py",
- "www.google.com.qa",
- "www.google.ro",
- "www.google.rs",
- "www.google.ru",
- "www.google.rw",
- "www.google.com.sa",
- "www.google.com.sb",
- "www.google.sc",
- "www.google.se",
- "www.google.com.sg",
- "www.google.sh",
- "www.google.si",
- "www.google.sk",
- "www.google.com.sl",
- "www.google.sn",
- "www.google.sm",
- "www.google.so",
- "www.google.st",
- "www.google.com.sv",
- "www.google.td",
- "www.google.tg",
- "www.google.co.th",
- "www.google.com.tj",
- "www.google.tk",
- "www.google.tl",
- "www.google.tm",
- "www.google.to",
- "www.google.com.tn",
- "www.google.com.tr",
- "www.google.tt",
- "www.google.com.tw",
- "www.google.co.tz",
- "www.google.com.ua",
- "www.google.co.ug",
- "www.google.ae",
- "www.google.co.uk",
- "www.google.us",
- "www.google.com.uy",
- "www.google.co.uz",
- "www.google.com.vc",
- "www.google.co.ve",
- "www.google.vg",
- "www.google.co.vi",
- "www.google.com.vn",
- "www.google.vu",
- "www.google.ws",
- "www.google.co.za",
- "www.google.co.zm",
- "www.google.co.zw",
- "google.com",
- "google.ac",
- "google.ad",
- "google.com.af",
- "google.com.ag",
- "google.com.ai",
- "google.am",
- "google.it.ao",
- "google.com.ar",
- "google.as",
- "google.at",
- "google.com.au",
- "google.az",
- "google.ba",
- "google.com.bd",
- "google.be",
- "google.bf",
- "google.bg",
- "google.com.bh",
- "google.bi",
- "google.bj",
- "google.com.bn",
- "google.com.bo",
- "google.com.br",
- "google.bs",
- "google.co.bw",
- "google.com.by",
- "google.by",
- "google.com.bz",
- "google.ca",
- "google.com.kh",
- "google.cc",
- "google.cd",
- "google.cf",
- "google.cat",
- "google.cg",
- "google.ch",
- "google.ci",
- "google.co.ck",
- "google.cl",
- "google.cm",
- "google.cn",
- "google.com.co",
- "google.co.cr",
- "google.com.cu",
- "google.cv",
- "google.com.cy",
- "google.cz",
- "google.de",
- "google.dj",
- "google.dk",
- "google.dm",
- "google.com.do",
- "google.dz",
- "google.com.ec",
- "google.ee",
- "google.com.eg",
- "google.es",
- "google.com.et",
- "google.fi",
- "google.com.fj",
- "google.fm",
- "google.fr",
- "google.ga",
- "google.gd",
- "google.ge",
- "google.gf",
- "google.gg",
- "google.com.gh",
- "google.com.gi",
- "google.gl",
- "google.gm",
- "google.gp",
- "google.gr",
- "google.com.gt",
- "google.gy",
- "google.com.hk",
- "google.hn",
- "google.hr",
- "google.ht",
- "google.hu",
- "google.co.id",
- "google.iq",
- "google.ie",
- "google.co.il",
- "google.im",
- "google.co.in",
- "google.io",
- "google.is",
- "google.it",
- "google.je",
- "google.com.jm",
- "google.jo",
- "google.co.jp",
- "google.co.ke",
- "google.com.kh",
- "google.ki",
- "google.kg",
- "google.co.kr",
- "google.com.kw",
- "google.kz",
- "google.la",
- "google.com.lb",
- "google.com.lc",
- "google.li",
- "google.lk",
- "google.co.ls",
- "google.lt",
- "google.lu",
- "google.lv",
- "google.com.ly",
- "google.co.ma",
- "google.md",
- "google.me",
- "google.mg",
- "google.mk",
- "google.ml",
- "google.mn",
- "google.ms",
- "google.com.mt",
- "google.mu",
- "google.mv",
- "google.mw",
- "google.com.mx",
- "google.com.my",
- "google.co.mz",
- "google.com.na",
- "google.ne",
- "google.com.nf",
- "google.com.ng",
- "google.com.ni",
- "google.nl",
- "google.no",
- "google.com.np",
- "google.nr",
- "google.nu",
- "google.co.nz",
- "google.com.om",
- "google.com.pa",
- "google.com.pe",
- "google.com.ph",
- "google.com.pk",
- "google.pl",
- "google.pn",
- "google.com.pr",
- "google.ps",
- "google.pt",
- "google.com.py",
- "google.com.qa",
- "google.ro",
- "google.rs",
- "google.ru",
- "google.rw",
- "google.com.sa",
- "google.com.sb",
- "google.sc",
- "google.se",
- "google.com.sg",
- "google.sh",
- "google.si",
- "google.sk",
- "google.com.sl",
- "google.sn",
- "google.sm",
- "google.so",
- "google.st",
- "google.com.sv",
- "google.td",
- "google.tg",
- "google.co.th",
- "google.com.tj",
- "google.tk",
- "google.tl",
- "google.tm",
- "google.to",
- "google.com.tn",
- "google.com.tr",
- "google.tt",
- "google.com.tw",
- "google.co.tz",
- "google.com.ua",
- "google.co.ug",
- "google.ae",
- "google.co.uk",
- "google.us",
- "google.com.uy",
- "google.co.uz",
- "google.com.vc",
- "google.co.ve",
- "google.vg",
- "google.co.vi",
- "google.com.vn",
- "google.vu",
- "google.ws",
- "google.co.za",
- "google.co.zm",
- "google.co.zw",
- "search.avg.com",
- "isearch.avg.com",
- "www.cnn.com",
- "darkoogle.com",
- "search.darkoogle.com",
- "search.foxtab.com",
- "www.gooofullsearch.com",
- "search.hiyo.com",
- "search.incredimail.com",
- "search1.incredimail.com",
- "search2.incredimail.com",
- "search3.incredimail.com",
- "search4.incredimail.com",
- "search.incredibar.com",
- "search.sweetim.com",
- "www.fastweb.it",
- "search.juno.com",
- "find.tdc.dk",
- "searchresults.verizon.com",
- "search.walla.co.il",
- "search.alot.com",
- "www.googleearth.de",
- "www.googleearth.fr",
- "webcache.googleusercontent.com",
- "encrypted.google.com",
- "googlesyndicatedsearch.com"
- ],
- "parameters": [
- "q",
- "query",
- "Keywords"
- ]
- },
- "Google Blogsearch": {
- "domains": [
- "blogsearch.google.ac",
- "blogsearch.google.ad",
- "blogsearch.google.ae",
- "blogsearch.google.am",
- "blogsearch.google.as",
- "blogsearch.google.at",
- "blogsearch.google.az",
- "blogsearch.google.ba",
- "blogsearch.google.be",
- "blogsearch.google.bf",
- "blogsearch.google.bg",
- "blogsearch.google.bi",
- "blogsearch.google.bj",
- "blogsearch.google.bs",
- "blogsearch.google.by",
- "blogsearch.google.ca",
- "blogsearch.google.cat",
- "blogsearch.google.cc",
- "blogsearch.google.cd",
- "blogsearch.google.cf",
- "blogsearch.google.cg",
- "blogsearch.google.ch",
- "blogsearch.google.ci",
- "blogsearch.google.cl",
- "blogsearch.google.cm",
- "blogsearch.google.cn",
- "blogsearch.google.co.bw",
- "blogsearch.google.co.ck",
- "blogsearch.google.co.cr",
- "blogsearch.google.co.id",
- "blogsearch.google.co.il",
- "blogsearch.google.co.in",
- "blogsearch.google.co.jp",
- "blogsearch.google.co.ke",
- "blogsearch.google.co.kr",
- "blogsearch.google.co.ls",
- "blogsearch.google.co.ma",
- "blogsearch.google.co.mz",
- "blogsearch.google.co.nz",
- "blogsearch.google.co.th",
- "blogsearch.google.co.tz",
- "blogsearch.google.co.ug",
- "blogsearch.google.co.uk",
- "blogsearch.google.co.uz",
- "blogsearch.google.co.ve",
- "blogsearch.google.co.vi",
- "blogsearch.google.co.za",
- "blogsearch.google.co.zm",
- "blogsearch.google.co.zw",
- "blogsearch.google.com",
- "blogsearch.google.com.af",
- "blogsearch.google.com.ag",
- "blogsearch.google.com.ai",
- "blogsearch.google.com.ar",
- "blogsearch.google.com.au",
- "blogsearch.google.com.bd",
- "blogsearch.google.com.bh",
- "blogsearch.google.com.bn",
- "blogsearch.google.com.bo",
- "blogsearch.google.com.br",
- "blogsearch.google.com.by",
- "blogsearch.google.com.bz",
- "blogsearch.google.com.co",
- "blogsearch.google.com.cu",
- "blogsearch.google.com.cy",
- "blogsearch.google.com.do",
- "blogsearch.google.com.ec",
- "blogsearch.google.com.eg",
- "blogsearch.google.com.et",
- "blogsearch.google.com.fj",
- "blogsearch.google.com.gh",
- "blogsearch.google.com.gi",
- "blogsearch.google.com.gt",
- "blogsearch.google.com.hk",
- "blogsearch.google.com.jm",
- "blogsearch.google.com.kh",
- "blogsearch.google.com.kh",
- "blogsearch.google.com.kw",
- "blogsearch.google.com.lb",
- "blogsearch.google.com.lc",
- "blogsearch.google.com.ly",
- "blogsearch.google.com.mt",
- "blogsearch.google.com.mx",
- "blogsearch.google.com.my",
- "blogsearch.google.com.na",
- "blogsearch.google.com.nf",
- "blogsearch.google.com.ng",
- "blogsearch.google.com.ni",
- "blogsearch.google.com.np",
- "blogsearch.google.com.om",
- "blogsearch.google.com.pa",
- "blogsearch.google.com.pe",
- "blogsearch.google.com.ph",
- "blogsearch.google.com.pk",
- "blogsearch.google.com.pr",
- "blogsearch.google.com.py",
- "blogsearch.google.com.qa",
- "blogsearch.google.com.sa",
- "blogsearch.google.com.sb",
- "blogsearch.google.com.sg",
- "blogsearch.google.com.sl",
- "blogsearch.google.com.sv",
- "blogsearch.google.com.tj",
- "blogsearch.google.com.tn",
- "blogsearch.google.com.tr",
- "blogsearch.google.com.tw",
- "blogsearch.google.com.ua",
- "blogsearch.google.com.uy",
- "blogsearch.google.com.vc",
- "blogsearch.google.com.vn",
- "blogsearch.google.cv",
- "blogsearch.google.cz",
- "blogsearch.google.de",
- "blogsearch.google.dj",
- "blogsearch.google.dk",
- "blogsearch.google.dm",
- "blogsearch.google.dz",
- "blogsearch.google.ee",
- "blogsearch.google.es",
- "blogsearch.google.fi",
- "blogsearch.google.fm",
- "blogsearch.google.fr",
- "blogsearch.google.ga",
- "blogsearch.google.gd",
- "blogsearch.google.ge",
- "blogsearch.google.gf",
- "blogsearch.google.gg",
- "blogsearch.google.gl",
- "blogsearch.google.gm",
- "blogsearch.google.gp",
- "blogsearch.google.gr",
- "blogsearch.google.gy",
- "blogsearch.google.hn",
- "blogsearch.google.hr",
- "blogsearch.google.ht",
- "blogsearch.google.hu",
- "blogsearch.google.ie",
- "blogsearch.google.im",
- "blogsearch.google.io",
- "blogsearch.google.iq",
- "blogsearch.google.is",
- "blogsearch.google.it",
- "blogsearch.google.it.ao",
- "blogsearch.google.je",
- "blogsearch.google.jo",
- "blogsearch.google.kg",
- "blogsearch.google.ki",
- "blogsearch.google.kz",
- "blogsearch.google.la",
- "blogsearch.google.li",
- "blogsearch.google.lk",
- "blogsearch.google.lt",
- "blogsearch.google.lu",
- "blogsearch.google.lv",
- "blogsearch.google.md",
- "blogsearch.google.me",
- "blogsearch.google.mg",
- "blogsearch.google.mk",
- "blogsearch.google.ml",
- "blogsearch.google.mn",
- "blogsearch.google.ms",
- "blogsearch.google.mu",
- "blogsearch.google.mv",
- "blogsearch.google.mw",
- "blogsearch.google.ne",
- "blogsearch.google.nl",
- "blogsearch.google.no",
- "blogsearch.google.nr",
- "blogsearch.google.nu",
- "blogsearch.google.pl",
- "blogsearch.google.pn",
- "blogsearch.google.ps",
- "blogsearch.google.pt",
- "blogsearch.google.ro",
- "blogsearch.google.rs",
- "blogsearch.google.ru",
- "blogsearch.google.rw",
- "blogsearch.google.sc",
- "blogsearch.google.se",
- "blogsearch.google.sh",
- "blogsearch.google.si",
- "blogsearch.google.sk",
- "blogsearch.google.sm",
- "blogsearch.google.sn",
- "blogsearch.google.so",
- "blogsearch.google.st",
- "blogsearch.google.td",
- "blogsearch.google.tg",
- "blogsearch.google.tk",
- "blogsearch.google.tl",
- "blogsearch.google.tm",
- "blogsearch.google.to",
- "blogsearch.google.tt",
- "blogsearch.google.us",
- "blogsearch.google.vg",
- "blogsearch.google.vu",
- "blogsearch.google.ws"
- ],
- "parameters": [
- "q"
- ]
- },
- "Hooseek.com": {
- "domains": [
- "www.hooseek.com"
- ],
- "parameters": [
- "recherche"
- ]
- },
- "Dalesearch": {
- "domains": [
- "www.dalesearch.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Alice Adsl": {
- "domains": [
- "rechercher.aliceadsl.fr"
- ],
- "parameters": [
- "q"
- ]
- },
- "T-Online": {
- "domains": [
- "suche.t-online.de",
- "brisbane.t-online.de",
- "navigationshilfe.t-online.de"
- ],
- "parameters": [
- "q"
- ]
- },
- "soso.com": {
- "domains": [
- "www.soso.com"
- ],
- "parameters": [
- "w"
- ]
- },
- "Sogou": {
- "domains": [
- "www.sougou.com"
- ],
- "parameters": [
- "query"
- ]
- },
- "Hit-Parade": {
- "domains": [
- "req.-hit-parade.com",
- "class.hit-parade.com",
- "www.hit-parade.com"
- ],
- "parameters": [
- "p7"
- ]
- },
- "SearchCanvas": {
- "domains": [
- "www.searchcanvas.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Interia": {
- "domains": [
- "www.google.interia.pl"
- ],
- "parameters": [
- "q"
- ]
- },
- "Genieo": {
- "domains": [
- "search.genieo.com"
- ],
- "parameters": [
- "q"
- ]
- },
- "Tiscali": {
- "domains": [
- "search.tiscali.it",
- "search-dyn.tiscali.it",
- "hledani.tiscali.cz"
- ],
- "parameters": [
- "q",
- "key"
- ]
- },
- "Clix": {
- "domains": [
- "pesquisa.clix.pt"
- ],
- "parameters": [
- "question"
- ]
- }
- },
- "email": {
- "Bigpond": {
- "domains": [
- "webmail.bigpond.com",
- "webmail2.bigpond.com"
- ]
- },
- "Naver Mail": {
- "domains": [
- "mail.naver.com"
- ]
- },
- "Optus Zoo": {
- "domains": [
- "webmail.optuszoo.com.au"
- ]
- },
- "Seznam Mail": {
- "domains": [
- "email.seznam.cz"
- ]
- },
- "126 Mail": {
- "domains": [
- "mail.126.com"
- ]
- },
- "Outlook.com": {
- "domains": [
- "mail.live.com"
- ]
- },
- "AOL Mail": {
- "domains": [
- "mail.aol.com"
- ]
- },
- "Daum Mail": {
- "domains": [
- "mail2.daum.net"
- ]
- },
- "Yahoo! Mail": {
- "domains": [
- "mail.yahoo.net",
- "mail.yahoo.com",
- "mail.yahoo.co.uk",
- "mail.yahoo.co.jp"
- ]
- },
- "163 Mail": {
- "domains": [
- "mail.163.com"
- ]
- },
- "Orange Webmail": {
- "domains": [
- "orange.fr/webmail"
- ]
- },
- "QQ Mail": {
- "domains": [
- "mail.qq.com"
- ]
- },
- "Mynet Mail": {
- "domains": [
- "mail.mynet.com"
- ]
- },
- "Gmail": {
- "domains": [
- "mail.google.com"
- ]
- }
- },
- "social": {
- "hi5": {
- "domains": [
- "hi5.com"
- ]
- },
- "Friendster": {
- "domains": [
- "friendster.com"
- ]
- },
- "Weibo": {
- "domains": [
- "weibo.com",
- "t.cn"
- ]
- },
- "Xanga": {
- "domains": [
- "xanga.com"
- ]
- },
- "Myspace": {
- "domains": [
- "myspace.com"
- ]
- },
- "Buzznet": {
- "domains": [
- "wayn.com"
- ]
- },
- "MyLife": {
- "domains": [
- "mylife.ru"
- ]
- },
- "Flickr": {
- "domains": [
- "flickr.com"
- ]
- },
- "Sonico.com": {
- "domains": [
- "sonico.com"
- ]
- },
- "Odnoklassniki": {
- "domains": [
- "odnoklassniki.ru"
- ]
- },
- "GitHub": {
- "domains": [
- "github.com"
- ]
- },
- "Classmates": {
- "domains": [
- "classmates.com"
- ]
- },
- "Friends Reunited": {
- "domains": [
- "friendsreunited.com"
- ]
- },
- "Renren": {
- "domains": [
- "renren.com"
- ]
- },
- "Quora": {
- "domains": [
- "quora.com"
- ]
- },
- "Gaia Online": {
- "domains": [
- "gaiaonline.com"
- ]
- },
- "Netlog": {
- "domains": [
- "netlog.com"
- ]
- },
- "Orkut": {
- "domains": [
- "orkut.com"
- ]
- },
- "MyHeritage": {
- "domains": [
- "myheritage.com"
- ]
- },
- "Multiply": {
- "domains": [
- "multiply.com"
- ]
- },
- "myYearbook": {
- "domains": [
- "myyearbook.com"
- ]
- },
- "WeeWorld": {
- "domains": [
- "weeworld.com"
- ]
- },
- "Vimeo": {
- "domains": [
- "vimeo.com"
- ]
- },
- "Eksi Sozluk": {
- "domains": [
- "Sozluk.com",
- "sourtimes.org"
- ]
- },
- "Geni": {
- "domains": [
- "geni.com"
- ]
- },
- "Uludag Sozluk": {
- "domains": [
- "uludagsozluk.com",
- "ulusozluk.com"
- ]
- },
- "SourceForge": {
- "domains": [
- "sourceforge.net"
- ]
- },
- "Plaxo": {
- "domains": [
- "plaxo.com"
- ]
- },
- "Taringa!": {
- "domains": [
- "taringa.net"
- ]
- },
- "Tagged": {
- "domains": [
- "login.tagged.com"
- ]
- },
- "XING": {
- "domains": [
- "xing.com"
- ]
- },
- "Instagram": {
- "domains": [
- "instagram.com"
- ]
- },
- "Vkontakte": {
- "domains": [
- "vk.com",
- "vkontakte.ru"
- ]
- },
- "Twitter": {
- "domains": [
- "twitter.com",
- "t.co"
- ]
- },
- "vKruguDruzei.ru": {
- "domains": [
- "vkrugudruzei.ru"
- ]
- },
- "Donanimhaber": {
- "domains": [
- "donanimhaber.com"
- ]
- },
- "WAYN": {
- "domains": [
- "wayn.com"
- ]
- },
- "Tuenti": {
- "domains": [
- "tuenti.com"
- ]
- },
- "Mail.ru": {
- "domains": [
- "my.mail.ru"
- ]
- },
- "Badoo": {
- "domains": [
- "badoo.com"
- ]
- },
- "Instela": {
- "domains": [
- "instela.com"
- ]
- },
- "Habbo": {
- "domains": [
- "habbo.com"
- ]
- },
- "Pinterest": {
- "domains": [
- "pinterest.com"
- ]
- },
- "LinkedIn": {
- "domains": [
- "linkedin.com",
- "lnkd.in"
- ]
- },
- "Foursquare": {
- "domains": [
- "foursquare.com"
- ]
- },
- "Flixster": {
- "domains": [
- "flixster.com"
- ]
- },
- "Windows Live Spaces": {
- "domains": [
- "login.live.com"
- ]
- },
- "BlackPlanet": {
- "domains": [
- "blackplanet.com"
- ]
- },
- "Cyworld": {
- "domains": [
- "global.cyworld.com"
- ]
- },
- "Pocket": {
- "domains": [
- "itusozluk.com"
- ],
- "ITU Sozluk": null
- },
- "Skyrock": {
- "domains": [
- "skyrock.com"
- ]
- },
- "Facebook": {
- "domains": [
- "facebook.com",
- "fb.me",
- "m.facebook.com",
- "l.facebook.com",
- "lm.facebook.com"
- ]
- },
- "Disqus": {
- "domains": [
- "redirect.disqus.com",
- "disq.us",
- "disqus.com"
- ]
- },
- "StudiVZ": {
- "domains": [
- "studivz.net"
- ]
- },
- "Fotolog": {
- "domains": [
- "fotolog.com"
- ]
- },
- "Google+": {
- "domains": [
- "url.google.com",
- "plus.google.com"
- ]
- },
- "Nasza-klasa.pl": {
- "domains": [
- "nk.pl"
- ]
- },
- "Qzone": {
- "domains": [
- "qzone.qq.com"
- ]
- },
- "Douban": {
- "domains": [
- "douban.com"
- ]
- },
- "Bebo": {
- "domains": [
- "bebo.com"
- ]
- },
- "Youtube": {
- "domains": [
- "youtube.com",
- "youtu.be"
- ]
- },
- "Reddit": {
- "domains": [
- "reddit.com"
- ]
- },
- "Identi.ca": {
- "domains": [
- "identi.ca"
- ]
- },
- "StackOverflow": {
- "domains": [
- "stackoverflow.com"
- ]
- },
- "Mixi": {
- "domains": [
- "mixi.jp"
- ]
- },
- "StumbleUpon": {
- "domains": [
- "stumbleupon.com"
- ]
- },
- "Inci Sozluk": {
- "domains": [
- "inci.sozlukspot.com",
- "incisozluk.com",
- "incisozluk.cc"
- ]
- },
- "Viadeo": {
- "domains": [
- "viadeo.com"
- ]
- },
- "Last.fm": {
- "domains": [
- "lastfm.ru"
- ]
- },
- "LiveJournal": {
- "domains": [
- "livejournal.ru"
- ]
- },
- "Tumblr": {
- "domains": [
- "tumblr.com"
- ]
- },
- "Hacker News": {
- "domains": [
- "news.ycombinator.com"
- ]
- },
- "Hocam.com": {
- "domains": [
- "hocam.com"
- ]
- },
- "Delicious": {
- "domains": [
- "delicious.com"
- ]
- },
- "Hyves": {
- "domains": [
- "hyves.nl"
- ]
- },
- "Paper.li": {
- "domains": [
- "paper.li"
- ]
- },
- "MoiKrug.ru": {
- "domains": [
- "moikrug.ru"
- ]
- }
- }
-}
\ No newline at end of file
diff --git a/vendor/snowplow/referer-parser/ruby/data/referers.yml b/vendor/snowplow/referer-parser/ruby/data/referers.yml
deleted file mode 100644
index e1ecf54f7..000000000
--- a/vendor/snowplow/referer-parser/ruby/data/referers.yml
+++ /dev/null
@@ -1,3621 +0,0 @@
-# #######################################################################################################
-#
-# ALL SUPPORTED REFERERS
-#
-# Broken down into:
-#
-# 1. Medium-unknown providers
-# 2. Email providers
-# 3. Social providers
-# 4. Search providers
-
-
-# #######################################################################################################
-#
-# MEDIUM-UNKNOWN PROVIDERS
-#
-# We know the source, but not the medium.
-# This section is useful for reducing false positives in the other sections
-
-unknown:
-
- Google:
- domains:
- - support.google.com
- - developers.google.com
- - maps.google.com
- - accounts.google.com
- - drive.google.com
- - sites.google.com
- - groups.google.com
- - groups.google.co.uk
- - news.google.co.uk
-
- Yahoo!:
- domains:
- - finance.yahoo.com
- - news.yahoo.com
- - eurosport.yahoo.com
- - sports.yahoo.com
- - astrology.yahoo.com
- - travel.yahoo.com
- - answers.yahoo.com
- - screen.yahoo.com
- - weather.yahoo.com
- - messenger.yahoo.com
- - games.yahoo.com
- - shopping.yahoo.net
- - movies.yahoo.com
- - cars.yahoo.com
- - lifestyle.yahoo.com
- - omg.yahoo.com
- - match.yahoo.net
-
- Taboola:
- domains:
- - trc.taboola.com
- - api.taboola.com
-
- Outbrain:
- domains:
- - paid.outbrain.com
-
-
-# #######################################################################################################
-#
-# EMAIL PROVIDERS
-
-email:
-
- 126 Mail:
- domains:
- - mail.126.com
-
- 163 Mail:
- domains:
- - mail.163.com
-
- AOL Mail:
- domains:
- - mail.aol.com
-
- Bigpond:
- domains:
- - webmail.bigpond.com
- - webmail2.bigpond.com
-
- Daum Mail:
- domains:
- - mail2.daum.net
-
- Gmail:
- domains:
- - mail.google.com
-
- Naver Mail:
- domains:
- - mail.naver.com
-
- Optus Zoo:
- domains:
- - webmail.optuszoo.com.au
-
- Orange Webmail:
- domains:
- - orange.fr/webmail
-
- Outlook.com:
- domains:
- - mail.live.com
-
- QQ Mail:
- domains:
- - mail.qq.com
-
- Seznam Mail:
- domains:
- - email.seznam.cz
-
- Yahoo! Mail:
- domains:
- - mail.yahoo.net
- - mail.yahoo.com
- - mail.yahoo.co.uk
- - mail.yahoo.co.jp
-
- Mynet Mail:
- domains:
- - mail.mynet.com
-
-
-# #######################################################################################################
-#
-# SOCIAL PROVIDERS
-
-social:
-
- Facebook:
- domains:
- - facebook.com
- - fb.me
- - m.facebook.com
- - l.facebook.com
- - lm.facebook.com
-
- Qzone:
- domains:
- - qzone.qq.com
-
- Habbo:
- domains:
- - habbo.com
-
- Twitter:
- domains:
- - twitter.com
- - t.co
-
- Instagram:
- domains:
- - instagram.com
-
- Youtube:
- domains:
- - youtube.com
- - youtu.be
-
- Vimeo:
- domains:
- - vimeo.com
-
- Renren:
- domains:
- - renren.com
-
- Windows Live Spaces:
- domains:
- - login.live.com
-
- LinkedIn:
- domains:
- - linkedin.com
- - lnkd.in
-
- Bebo:
- domains:
- - bebo.com
-
- Vkontakte:
- domains:
- - vk.com
- - vkontakte.ru
-
- Tagged:
- domains:
- - login.tagged.com
-
- Orkut:
- domains:
- - orkut.com
-
- Myspace:
- domains:
- - myspace.com
-
- Friendster:
- domains:
- - friendster.com
-
- Badoo:
- domains:
- - badoo.com
-
- hi5:
- domains:
- - hi5.com
-
- Netlog:
- domains:
- - netlog.com
-
- Flixster:
- domains:
- - flixster.com
-
- MyLife:
- domains:
- - mylife.ru
-
- Paper.li:
- domains:
- - paper.li
-
- Classmates:
- domains:
- - classmates.com
-
- GitHub:
- domains:
- - github.com
-
- Google+:
- domains:
- - url.google.com
- - plus.google.com
-
- Douban:
- domains:
- - douban.com
-
- Odnoklassniki:
- domains:
- - odnoklassniki.ru
-
- Viadeo:
- domains:
- - viadeo.com
-
- Flickr:
- domains:
- - flickr.com
-
- WeeWorld:
- domains:
- - weeworld.com
-
- Last.fm:
- domains:
- - lastfm.ru
-
- MyHeritage:
- domains:
- - myheritage.com
-
- Xanga:
- domains:
- - xanga.com
-
- Mixi:
- domains:
- - mixi.jp
-
- Cyworld:
- domains:
- - global.cyworld.com
-
- Gaia Online:
- domains:
- - gaiaonline.com
-
- Skyrock:
- domains:
- - skyrock.com
-
- BlackPlanet:
- domains:
- - blackplanet.com
-
- myYearbook:
- domains:
- - myyearbook.com
-
- Fotolog:
- domains:
- - fotolog.com
-
- Friends Reunited:
- domains:
- - friendsreunited.com
-
- LiveJournal:
- domains:
- - livejournal.ru
-
- StudiVZ:
- domains:
- - studivz.net
-
- StackOverflow:
- domains:
- - stackoverflow.com
-
- Sonico.com:
- domains:
- - sonico.com
-
- Pinterest:
- domains:
- - pinterest.com
-
- Plaxo:
- domains:
- - plaxo.com
-
- Geni:
- domains:
- - geni.com
-
- Tuenti:
- domains:
- - tuenti.com
-
- XING:
- domains:
- - xing.com
-
- Taringa!:
- domains:
- - taringa.net
-
- Tumblr:
- domains:
- - tumblr.com
-
- Nasza-klasa.pl:
- domains:
- - nk.pl
-
- StumbleUpon:
- domains:
- - stumbleupon.com
-
- SourceForge:
- domains:
- - sourceforge.net
-
- Hyves:
- domains:
- - hyves.nl
-
- WAYN:
- domains:
- - wayn.com
-
- Buzznet:
- domains:
- - wayn.com
-
- Multiply:
- domains:
- - multiply.com
-
- Foursquare:
- domains:
- - foursquare.com
-
- vKruguDruzei.ru:
- domains:
- - vkrugudruzei.ru
-
- Mail.ru:
- domains:
- - my.mail.ru
-
- MoiKrug.ru:
- domains:
- - moikrug.ru
-
- Reddit:
- domains:
- - reddit.com
-
- Hacker News:
- domains:
- - news.ycombinator.com
-
- Identi.ca:
- domains:
- - identi.ca
-
- Weibo:
- domains:
- - weibo.com
- - t.cn
-
- Delicious:
- domains:
- - delicious.com
-
- Pocket:
- domains:
- - getpocket.com
-
- ITU Sozluk:
- domains:
- - itusozluk.com
-
- Instela:
- domains:
- - instela.com
-
- Eksi Sozluk:
- domains:
- - Sozluk.com
- - sourtimes.org
-
- Uludag Sozluk:
- domains:
- - uludagsozluk.com
- - ulusozluk.com
-
- Inci Sozluk:
- domains:
- - inci.sozlukspot.com
- - incisozluk.com
- - incisozluk.cc
-
- Hocam.com:
- domains:
- - hocam.com
-
- Donanimhaber:
- domains:
- - donanimhaber.com
-
- Disqus:
- domains:
- - redirect.disqus.com
- - disq.us
- - disqus.com
-
- Quora:
- domains:
- - quora.com
-
-# #######################################################################################################
-#
-# SEARCH PROVIDERS
-
-search:
-
- 1.cz:
- parameters:
- - q
- domains:
- - 1.cz
-
- # 123people TODO
-
- 1und1:
- parameters:
- - su
- domains:
- - search.1und1.de
-
- 360.cn:
- parameters:
- - q
- domains:
- - so.360.cn
- - www.so.com
-
- Abacho:
- parameters:
- - q
- domains:
- - www.abacho.de
- - www.abacho.com
- - www.abacho.co.uk
- - www.se.abacho.com
- - www.tr.abacho.com
- - www.abacho.at
- - www.abacho.fr
- - www.abacho.es
- - www.abacho.ch
- - www.abacho.it
-
- ABCsøk:
- parameters:
- - q
- domains:
- - abcsolk.no
- - verden.abcsok.no
-
- Acoon:
- parameters:
- - begriff
- domains:
- - www.acoon.de
-
- Alexa:
- parameters:
- - q
- domains:
- - alexa.com
- - search.toolbars.alexa.com
-
- Alice Adsl:
- parameters:
- - q
- domains:
- - rechercher.aliceadsl.fr
-
- AllTheWeb:
- parameters:
- - q
- domains:
- - www.alltheweb.com
-
- all.by:
- parameters:
- - query
- domains:
- - all.by
-
- Altavista:
- parameters:
- - q
- domains:
- - www.altavista.com
- - search.altavista.com
- - listings.altavista.com
- - altavista.de
- - altavista.fr
- - be-nl.altavista.com
- - be-fr.altavista.com
-
- Amazon:
- parameters:
- - keywords
- domains:
- - amazon.com
- - www.amazon.com
-
- AOL:
- parameters:
- - q
- - query
- domains:
- - search.aol.com
- - search.aol.it
- - aolsearch.aol.com
- - aolsearch.com
- - www.aolrecherche.aol.fr
- - www.aolrecherches.aol.fr
- - www.aolimages.aol.fr
- - aim.search.aol.com
- - www.recherche.aol.fr
- - find.web.aol.com
- - recherche.aol.ca
- - aolsearch.aol.co.uk
- - search.aol.co.uk
- - aolrecherche.aol.fr
- - sucheaol.aol.de
- - suche.aol.de
- - suche.aolsvc.de
- - aolbusqueda.aol.com.mx
- - alicesuche.aol.de
- - alicesuchet.aol.de
- - suchet2.aol.de
- - search.hp.my.aol.com.au
- - search.hp.my.aol.de
- - search.hp.my.aol.it
- - search-intl.netscape.com
-
- Apollo Latvia:
- parameters:
- - q
- domains:
- - apollo.lv/portal/search/
-
- APOLL07:
- parameters:
- - query
- domains:
- - apollo7.de
-
- Apontador:
- parameters:
- - q
- domains:
- - apontador.com.br
- - www.apontador.com.br
-
- Aport:
- parameters:
- - r
- domains:
- - sm.aport.ru
-
- arama:
- parameters:
- - q
- domains:
- - arama.com
-
- Arcor:
- parameters:
- - Keywords
- domains:
- - www.arcor.de
-
- Arianna:
- parameters:
- - query
- domains:
- - arianna.libero.it
- - www.arianna.com
-
- Ask:
- parameters:
- - q
- domains:
- - ask.com
- - www.ask.com
- - web.ask.com
- - int.ask.com
- - mws.ask.com
- - uk.ask.com
- - images.ask.com
- - ask.reference.com
- - www.askkids.com
- - iwon.ask.com
- - www.ask.co.uk
- - www.qbyrd.com
- - search-results.com
- - uk.search-results.com
- - www.search-results.com
- - int.search-results.com
-
- Ask Toolbar:
- parameters:
- - searchfor
- domains:
- - search.tb.ask.com
-
- Atlas:
- parameters:
- - q
- domains:
- - searchatlas.centrum.cz
-
- Austronaut:
- parameters:
- - q
- domains:
- - www2.austronaut.at
- - www1.astronaut.at
-
- Babylon:
- parameters:
- - q
- domains:
- - search.babylon.com
- - searchassist.babylon.com
-
- Baidu:
- parameters:
- - wd
- - word
- - kw
- - k
- domains:
- - www.baidu.com
- - www1.baidu.com
- - zhidao.baidu.com
- - tieba.baidu.com
- - news.baidu.com
- - web.gougou.com
-
- Biglobe:
- parameters:
- - q
- domains:
- - cgi.search.biglobe.ne.jp
-
- Bing:
- parameters:
- - q
- - Q
- domains:
- - bing.com
- - www.bing.com
- - msnbc.msn.com
- - dizionario.it.msn.com
- - cc.bingj.com
- - m.bing.com
-
- Bing Images:
- parameters:
- - q
- - Q
- domains:
- - bing.com/images/search
- - www.bing.com/images/search
-
- blekko:
- parameters:
- - q
- domains:
- - blekko.com
-
- Blogdigger:
- parameters:
- - q
- domains:
- - www.blogdigger.com
-
- Blogpulse:
- parameters:
- - query
- domains:
- - www.blogpulse.com
-
- Bluewin:
- parameters:
- - searchTerm
- domains:
- - search.bluewin.ch
-
- canoe.ca:
- parameters:
- - q
- domains:
- - web.canoe.ca
-
- Centrum:
- parameters:
- - q
- domains:
- - serach.centrum.cz
- - morfeo.centrum.cz
-
- Certified-Toolbar:
- parameters:
- - q
- domains:
- - search.certified-toolbar.com
-
- Charter:
- parameters:
- - q
- domains:
- - www.charter.net
-
- Clix:
- parameters:
- - question
- domains:
- - pesquisa.clix.pt
-
- Comcast:
- parameters:
- - q
- domains:
- - search.comcast.net
-
- Conduit:
- parameters:
- - q
- domains:
- - search.conduit.com
-
- Comcast:
- parameters:
- - q
- domains:
- - serach.comcast.net
-
- Crawler:
- parameters:
- - q
- domains:
- - www.crawler.com
-
- Compuserve:
- parameters:
- - query
- domains:
- - websearch.cs.com
-
- Cuil:
- parameters:
- - q
- domains:
- - www.cuil.com
-
- Daemon search:
- parameters:
- - q
- domains:
- - daemon-search.com
- - my.daemon-search.com
-
- Dalesearch:
- parameters:
- - q
- domains:
- - www.dalesearch.com
-
- DasOertliche:
- parameters:
- - kw
- domains:
- - www.dasoertliche.de
-
- DasTelefonbuch:
- parameters:
- - kw
- domains:
- - www1.dastelefonbuch.de
-
- Daum:
- parameters:
- - q
- domains:
- - search.daum.net
-
- Delfi latvia:
- parameters:
- - q
- domains:
- - smart.delfi.lv
-
- Delfi:
- parameters:
- - q
- domains:
- - otsing.delfi.ee
-
- Digg:
- parameters:
- - s
- domains:
- - digg.com
-
- dmoz:
- parameters:
- - q
- domains:
- - dmoz.org
- - editors.dmoz.org
-
- DuckDuckGo:
- parameters:
- - q
- domains:
- - duckduckgo.com
-
- earthlink:
- parameters:
- - q
- domains:
- - search.earthlink.net
-
- Ecosia:
- parameters:
- - q
- domains:
- - ecosia.org
-
- Eniro:
- parameters:
- - q
- - search_word
- domains:
- - www.eniro.se
-
- Eurip:
- parameters:
- - q
- domains:
- - www.eurip.com
-
- Euroseek:
- parameters:
- - string
- domains:
- - www.euroseek.com
-
- Everyclick:
- parameters:
- - keyword
- domains:
- - www.everyclick.com
-
- Excite:
- parameters:
- - q
- - search
- domains:
- - search.excite.it
- - search.excite.fr
- - search.excite.de
- - search.excite.co.uk
- - serach.excite.es
- - search.excite.nl
- - msxml.excite.com
- - www.excite.co.jp
-
- Exalead:
- parameters:
- - q
- domains:
- - www.exalead.fr
- - www.exalead.com
-
- eo:
- parameters:
- - x_query
- domains:
- - eo.st
-
- Fast Browser Search:
- parameters:
- - q
- domains:
- - www.fastbrowsersearch.com
-
- Francite:
- parameters:
- - name
- domains:
- - recherche.francite.com
-
- Findwide:
- parameters:
- - k
- domains:
- - search.findwide.com
-
- Fireball:
- parameters:
- - q
- domains:
- - www.fireball.de
-
- Firstfind:
- parameters:
- - qry
- domains:
- - www.firstsfind.com
-
- Fixsuche:
- parameters:
- - q
- domains:
- - www.fixsuche.de
-
- Flix:
- parameters:
- - keyword
- domains:
- - www.flix.de
-
- Forestle:
- parameters:
- - q
- domains:
- - forestle.org
- - www.forestle.org
- - forestle.mobi
-
- Free:
- parameters:
- - q
- domains:
- - search.free.fr
- - search1-2.free.fr
- - search1-1.free.fr
-
- Freecause:
- parameters:
- - p
- domains:
- - search.freecause.com
-
- Freenet:
- parameters:
- - query
- - Keywords
- domains:
- - suche.freenet.de
-
- Freshweather:
- parameters:
- - q
- domains:
- - www.fresh-weather.com
-
- FriendFeed:
- parameters:
- - q
- domains:
- - friendfeed.com
-
- GAIS:
- parameters:
- - q
- domains:
- - gais.cs.ccu.edu.tw
-
- Geona:
- parameters:
- - q
- domains:
- - geona.net
-
- Genieo:
- parameters:
- - q
- domains:
- - search.genieo.com
-
- Gigablast:
- parameters:
- - q
- domains:
- - www.gigablast.com
- - dir.gigablast.com
-
- Globososo:
- parameters:
- - q
- domains:
- - searches.globososo.com
- - search.globososo.com
-
- GMX:
- parameters:
- - su
- domains:
- - suche.gmx.net
-
- Gnadenmeer:
- parameters:
- - keyword
- domains:
- - www.gnadenmeer.de
-
- Gomeo:
- parameters:
- - Keywords
- domains:
- - www.gomeo.com
-
- goo:
- parameters:
- - MT
- domains:
- - search.goo.ne.jp
- - ocnsearch.goo.ne.jp
-
- Google:
- parameters:
- - q
- - query # For www.cnn.com (powered by Google)
- - Keywords # For gooofullsearch.com (powered by Google)
- domains:
- - www.google.com
- - www.google.ac
- - www.google.ad
- - www.google.com.af
- - www.google.com.ag
- - www.google.com.ai
- - www.google.am
- - www.google.it.ao
- - www.google.com.ar
- - www.google.as
- - www.google.at
- - www.google.com.au
- - www.google.az
- - www.google.ba
- - www.google.com.bd
- - www.google.be
- - www.google.bf
- - www.google.bg
- - www.google.com.bh
- - www.google.bi
- - www.google.bj
- - www.google.com.bn
- - www.google.com.bo
- - www.google.com.br
- - www.google.bs
- - www.google.co.bw
- - www.google.com.by
- - www.google.by
- - www.google.com.bz
- - www.google.ca
- - www.google.com.kh
- - www.google.cc
- - www.google.cd
- - www.google.cf
- - www.google.cat
- - www.google.cg
- - www.google.ch
- - www.google.ci
- - www.google.co.ck
- - www.google.cl
- - www.google.cm
- - www.google.cn
- - www.google.com.co
- - www.google.co.cr
- - www.google.com.cu
- - www.google.cv
- - www.google.com.cy
- - www.google.cz
- - www.google.de
- - www.google.dj
- - www.google.dk
- - www.google.dm
- - www.google.com.do
- - www.google.dz
- - www.google.com.ec
- - www.google.ee
- - www.google.com.eg
- - www.google.es
- - www.google.com.et
- - www.google.fi
- - www.google.com.fj
- - www.google.fm
- - www.google.fr
- - www.google.ga
- - www.google.gd
- - www.google.ge
- - www.google.gf
- - www.google.gg
- - www.google.com.gh
- - www.google.com.gi
- - www.google.gl
- - www.google.gm
- - www.google.gp
- - www.google.gr
- - www.google.com.gt
- - www.google.gy
- - www.google.com.hk
- - www.google.hn
- - www.google.hr
- - www.google.ht
- - www.google.hu
- - www.google.co.id
- - www.google.iq
- - www.google.ie
- - www.google.co.il
- - www.google.im
- - www.google.co.in
- - www.google.io
- - www.google.is
- - www.google.it
- - www.google.je
- - www.google.com.jm
- - www.google.jo
- - www.google.co.jp
- - www.google.co.ke
- - www.google.com.kh
- - www.google.ki
- - www.google.kg
- - www.google.co.kr
- - www.google.com.kw
- - www.google.kz
- - www.google.la
- - www.google.com.lb
- - www.google.com.lc
- - www.google.li
- - www.google.lk
- - www.google.co.ls
- - www.google.lt
- - www.google.lu
- - www.google.lv
- - www.google.com.ly
- - www.google.co.ma
- - www.google.md
- - www.google.me
- - www.google.mg
- - www.google.mk
- - www.google.ml
- - www.google.mn
- - www.google.ms
- - www.google.com.mt
- - www.google.mu
- - www.google.mv
- - www.google.mw
- - www.google.com.mx
- - www.google.com.my
- - www.google.co.mz
- - www.google.com.na
- - www.google.ne
- - www.google.com.nf
- - www.google.com.ng
- - www.google.com.ni
- - www.google.nl
- - www.google.no
- - www.google.com.np
- - www.google.nr
- - www.google.nu
- - www.google.co.nz
- - www.google.com.om
- - www.google.com.pa
- - www.google.com.pe
- - www.google.com.ph
- - www.google.com.pk
- - www.google.pl
- - www.google.pn
- - www.google.com.pr
- - www.google.ps
- - www.google.pt
- - www.google.com.py
- - www.google.com.qa
- - www.google.ro
- - www.google.rs
- - www.google.ru
- - www.google.rw
- - www.google.com.sa
- - www.google.com.sb
- - www.google.sc
- - www.google.se
- - www.google.com.sg
- - www.google.sh
- - www.google.si
- - www.google.sk
- - www.google.com.sl
- - www.google.sn
- - www.google.sm
- - www.google.so
- - www.google.st
- - www.google.com.sv
- - www.google.td
- - www.google.tg
- - www.google.co.th
- - www.google.com.tj
- - www.google.tk
- - www.google.tl
- - www.google.tm
- - www.google.to
- - www.google.com.tn
- - www.google.com.tr
- - www.google.tt
- - www.google.com.tw
- - www.google.co.tz
- - www.google.com.ua
- - www.google.co.ug
- - www.google.ae
- - www.google.co.uk
- - www.google.us
- - www.google.com.uy
- - www.google.co.uz
- - www.google.com.vc
- - www.google.co.ve
- - www.google.vg
- - www.google.co.vi
- - www.google.com.vn
- - www.google.vu
- - www.google.ws
- - www.google.co.za
- - www.google.co.zm
- - www.google.co.zw
- - google.com
- - google.ac
- - google.ad
- - google.com.af
- - google.com.ag
- - google.com.ai
- - google.am
- - google.it.ao
- - google.com.ar
- - google.as
- - google.at
- - google.com.au
- - google.az
- - google.ba
- - google.com.bd
- - google.be
- - google.bf
- - google.bg
- - google.com.bh
- - google.bi
- - google.bj
- - google.com.bn
- - google.com.bo
- - google.com.br
- - google.bs
- - google.co.bw
- - google.com.by
- - google.by
- - google.com.bz
- - google.ca
- - google.com.kh
- - google.cc
- - google.cd
- - google.cf
- - google.cat
- - google.cg
- - google.ch
- - google.ci
- - google.co.ck
- - google.cl
- - google.cm
- - google.cn
- - google.com.co
- - google.co.cr
- - google.com.cu
- - google.cv
- - google.com.cy
- - google.cz
- - google.de
- - google.dj
- - google.dk
- - google.dm
- - google.com.do
- - google.dz
- - google.com.ec
- - google.ee
- - google.com.eg
- - google.es
- - google.com.et
- - google.fi
- - google.com.fj
- - google.fm
- - google.fr
- - google.ga
- - google.gd
- - google.ge
- - google.gf
- - google.gg
- - google.com.gh
- - google.com.gi
- - google.gl
- - google.gm
- - google.gp
- - google.gr
- - google.com.gt
- - google.gy
- - google.com.hk
- - google.hn
- - google.hr
- - google.ht
- - google.hu
- - google.co.id
- - google.iq
- - google.ie
- - google.co.il
- - google.im
- - google.co.in
- - google.io
- - google.is
- - google.it
- - google.je
- - google.com.jm
- - google.jo
- - google.co.jp
- - google.co.ke
- - google.com.kh
- - google.ki
- - google.kg
- - google.co.kr
- - google.com.kw
- - google.kz
- - google.la
- - google.com.lb
- - google.com.lc
- - google.li
- - google.lk
- - google.co.ls
- - google.lt
- - google.lu
- - google.lv
- - google.com.ly
- - google.co.ma
- - google.md
- - google.me
- - google.mg
- - google.mk
- - google.ml
- - google.mn
- - google.ms
- - google.com.mt
- - google.mu
- - google.mv
- - google.mw
- - google.com.mx
- - google.com.my
- - google.co.mz
- - google.com.na
- - google.ne
- - google.com.nf
- - google.com.ng
- - google.com.ni
- - google.nl
- - google.no
- - google.com.np
- - google.nr
- - google.nu
- - google.co.nz
- - google.com.om
- - google.com.pa
- - google.com.pe
- - google.com.ph
- - google.com.pk
- - google.pl
- - google.pn
- - google.com.pr
- - google.ps
- - google.pt
- - google.com.py
- - google.com.qa
- - google.ro
- - google.rs
- - google.ru
- - google.rw
- - google.com.sa
- - google.com.sb
- - google.sc
- - google.se
- - google.com.sg
- - google.sh
- - google.si
- - google.sk
- - google.com.sl
- - google.sn
- - google.sm
- - google.so
- - google.st
- - google.com.sv
- - google.td
- - google.tg
- - google.co.th
- - google.com.tj
- - google.tk
- - google.tl
- - google.tm
- - google.to
- - google.com.tn
- - google.com.tr
- - google.tt
- - google.com.tw
- - google.co.tz
- - google.com.ua
- - google.co.ug
- - google.ae
- - google.co.uk
- - google.us
- - google.com.uy
- - google.co.uz
- - google.com.vc
- - google.co.ve
- - google.vg
- - google.co.vi
- - google.com.vn
- - google.vu
- - google.ws
- - google.co.za
- - google.co.zm
- - google.co.zw
- # powered by Google
- - search.avg.com
- - isearch.avg.com
- - www.cnn.com
- - darkoogle.com
- - search.darkoogle.com
- - search.foxtab.com
- - www.gooofullsearch.com
- - search.hiyo.com
- - search.incredimail.com
- - search1.incredimail.com
- - search2.incredimail.com
- - search3.incredimail.com
- - search4.incredimail.com
- - search.incredibar.com
- - search.sweetim.com
- - www.fastweb.it
- - search.juno.com
- - find.tdc.dk
- - searchresults.verizon.com
- - search.walla.co.il
- - search.alot.com
- # Google Earch
- - www.googleearth.de
- - www.googleearth.fr
- # Google Cache
- - webcache.googleusercontent.com
- # Google SSL
- - encrypted.google.com
- # Syndicated search
- - googlesyndicatedsearch.com
-
- Google Blogsearch:
- parameters:
- - q
- domains:
- - blogsearch.google.ac
- - blogsearch.google.ad
- - blogsearch.google.ae
- - blogsearch.google.am
- - blogsearch.google.as
- - blogsearch.google.at
- - blogsearch.google.az
- - blogsearch.google.ba
- - blogsearch.google.be
- - blogsearch.google.bf
- - blogsearch.google.bg
- - blogsearch.google.bi
- - blogsearch.google.bj
- - blogsearch.google.bs
- - blogsearch.google.by
- - blogsearch.google.ca
- - blogsearch.google.cat
- - blogsearch.google.cc
- - blogsearch.google.cd
- - blogsearch.google.cf
- - blogsearch.google.cg
- - blogsearch.google.ch
- - blogsearch.google.ci
- - blogsearch.google.cl
- - blogsearch.google.cm
- - blogsearch.google.cn
- - blogsearch.google.co.bw
- - blogsearch.google.co.ck
- - blogsearch.google.co.cr
- - blogsearch.google.co.id
- - blogsearch.google.co.il
- - blogsearch.google.co.in
- - blogsearch.google.co.jp
- - blogsearch.google.co.ke
- - blogsearch.google.co.kr
- - blogsearch.google.co.ls
- - blogsearch.google.co.ma
- - blogsearch.google.co.mz
- - blogsearch.google.co.nz
- - blogsearch.google.co.th
- - blogsearch.google.co.tz
- - blogsearch.google.co.ug
- - blogsearch.google.co.uk
- - blogsearch.google.co.uz
- - blogsearch.google.co.ve
- - blogsearch.google.co.vi
- - blogsearch.google.co.za
- - blogsearch.google.co.zm
- - blogsearch.google.co.zw
- - blogsearch.google.com
- - blogsearch.google.com.af
- - blogsearch.google.com.ag
- - blogsearch.google.com.ai
- - blogsearch.google.com.ar
- - blogsearch.google.com.au
- - blogsearch.google.com.bd
- - blogsearch.google.com.bh
- - blogsearch.google.com.bn
- - blogsearch.google.com.bo
- - blogsearch.google.com.br
- - blogsearch.google.com.by
- - blogsearch.google.com.bz
- - blogsearch.google.com.co
- - blogsearch.google.com.cu
- - blogsearch.google.com.cy
- - blogsearch.google.com.do
- - blogsearch.google.com.ec
- - blogsearch.google.com.eg
- - blogsearch.google.com.et
- - blogsearch.google.com.fj
- - blogsearch.google.com.gh
- - blogsearch.google.com.gi
- - blogsearch.google.com.gt
- - blogsearch.google.com.hk
- - blogsearch.google.com.jm
- - blogsearch.google.com.kh
- - blogsearch.google.com.kh
- - blogsearch.google.com.kw
- - blogsearch.google.com.lb
- - blogsearch.google.com.lc
- - blogsearch.google.com.ly
- - blogsearch.google.com.mt
- - blogsearch.google.com.mx
- - blogsearch.google.com.my
- - blogsearch.google.com.na
- - blogsearch.google.com.nf
- - blogsearch.google.com.ng
- - blogsearch.google.com.ni
- - blogsearch.google.com.np
- - blogsearch.google.com.om
- - blogsearch.google.com.pa
- - blogsearch.google.com.pe
- - blogsearch.google.com.ph
- - blogsearch.google.com.pk
- - blogsearch.google.com.pr
- - blogsearch.google.com.py
- - blogsearch.google.com.qa
- - blogsearch.google.com.sa
- - blogsearch.google.com.sb
- - blogsearch.google.com.sg
- - blogsearch.google.com.sl
- - blogsearch.google.com.sv
- - blogsearch.google.com.tj
- - blogsearch.google.com.tn
- - blogsearch.google.com.tr
- - blogsearch.google.com.tw
- - blogsearch.google.com.ua
- - blogsearch.google.com.uy
- - blogsearch.google.com.vc
- - blogsearch.google.com.vn
- - blogsearch.google.cv
- - blogsearch.google.cz
- - blogsearch.google.de
- - blogsearch.google.dj
- - blogsearch.google.dk
- - blogsearch.google.dm
- - blogsearch.google.dz
- - blogsearch.google.ee
- - blogsearch.google.es
- - blogsearch.google.fi
- - blogsearch.google.fm
- - blogsearch.google.fr
- - blogsearch.google.ga
- - blogsearch.google.gd
- - blogsearch.google.ge
- - blogsearch.google.gf
- - blogsearch.google.gg
- - blogsearch.google.gl
- - blogsearch.google.gm
- - blogsearch.google.gp
- - blogsearch.google.gr
- - blogsearch.google.gy
- - blogsearch.google.hn
- - blogsearch.google.hr
- - blogsearch.google.ht
- - blogsearch.google.hu
- - blogsearch.google.ie
- - blogsearch.google.im
- - blogsearch.google.io
- - blogsearch.google.iq
- - blogsearch.google.is
- - blogsearch.google.it
- - blogsearch.google.it.ao
- - blogsearch.google.je
- - blogsearch.google.jo
- - blogsearch.google.kg
- - blogsearch.google.ki
- - blogsearch.google.kz
- - blogsearch.google.la
- - blogsearch.google.li
- - blogsearch.google.lk
- - blogsearch.google.lt
- - blogsearch.google.lu
- - blogsearch.google.lv
- - blogsearch.google.md
- - blogsearch.google.me
- - blogsearch.google.mg
- - blogsearch.google.mk
- - blogsearch.google.ml
- - blogsearch.google.mn
- - blogsearch.google.ms
- - blogsearch.google.mu
- - blogsearch.google.mv
- - blogsearch.google.mw
- - blogsearch.google.ne
- - blogsearch.google.nl
- - blogsearch.google.no
- - blogsearch.google.nr
- - blogsearch.google.nu
- - blogsearch.google.pl
- - blogsearch.google.pn
- - blogsearch.google.ps
- - blogsearch.google.pt
- - blogsearch.google.ro
- - blogsearch.google.rs
- - blogsearch.google.ru
- - blogsearch.google.rw
- - blogsearch.google.sc
- - blogsearch.google.se
- - blogsearch.google.sh
- - blogsearch.google.si
- - blogsearch.google.sk
- - blogsearch.google.sm
- - blogsearch.google.sn
- - blogsearch.google.so
- - blogsearch.google.st
- - blogsearch.google.td
- - blogsearch.google.tg
- - blogsearch.google.tk
- - blogsearch.google.tl
- - blogsearch.google.tm
- - blogsearch.google.to
- - blogsearch.google.tt
- - blogsearch.google.us
- - blogsearch.google.vg
- - blogsearch.google.vu
- - blogsearch.google.ws
-
- Google Images:
- parameters:
- - q
- domains:
- - google.ac/imgres
- - google.ad/imgres
- - google.ae/imgres
- - google.am/imgres
- - google.as/imgres
- - google.at/imgres
- - google.az/imgres
- - google.ba/imgres
- - google.be/imgres
- - google.bf/imgres
- - google.bg/imgres
- - google.bi/imgres
- - google.bj/imgres
- - google.bs/imgres
- - google.by/imgres
- - google.ca/imgres
- - google.cat/imgres
- - google.cc/imgres
- - google.cd/imgres
- - google.cf/imgres
- - google.cg/imgres
- - google.ch/imgres
- - google.ci/imgres
- - google.cl/imgres
- - google.cm/imgres
- - google.cn/imgres
- - google.co.bw/imgres
- - google.co.ck/imgres
- - google.co.cr/imgres
- - google.co.id/imgres
- - google.co.il/imgres
- - google.co.in/imgres
- - google.co.jp/imgres
- - google.co.ke/imgres
- - google.co.kr/imgres
- - google.co.ls/imgres
- - google.co.ma/imgres
- - google.co.mz/imgres
- - google.co.nz/imgres
- - google.co.th/imgres
- - google.co.tz/imgres
- - google.co.ug/imgres
- - google.co.uk/imgres
- - google.co.uz/imgres
- - google.co.ve/imgres
- - google.co.vi/imgres
- - google.co.za/imgres
- - google.co.zm/imgres
- - google.co.zw/imgres
- - google.com/imgres
- - google.com.af/imgres
- - google.com.ag/imgres
- - google.com.ai/imgres
- - google.com.ar/imgres
- - google.com.au/imgres
- - google.com.bd/imgres
- - google.com.bh/imgres
- - google.com.bn/imgres
- - google.com.bo/imgres
- - google.com.br/imgres
- - google.com.by/imgres
- - google.com.bz/imgres
- - google.com.co/imgres
- - google.com.cu/imgres
- - google.com.cy/imgres
- - google.com.do/imgres
- - google.com.ec/imgres
- - google.com.eg/imgres
- - google.com.et/imgres
- - google.com.fj/imgres
- - google.com.gh/imgres
- - google.com.gi/imgres
- - google.com.gt/imgres
- - google.com.hk/imgres
- - google.com.jm/imgres
- - google.com.kh/imgres
- - google.com.kw/imgres
- - google.com.lb/imgres
- - google.com.lc/imgres
- - google.com.ly/imgres
- - google.com.mt/imgres
- - google.com.mx/imgres
- - google.com.my/imgres
- - google.com.na/imgres
- - google.com.nf/imgres
- - google.com.ng/imgres
- - google.com.ni/imgres
- - google.com.np/imgres
- - google.com.om/imgres
- - google.com.pa/imgres
- - google.com.pe/imgres
- - google.com.ph/imgres
- - google.com.pk/imgres
- - google.com.pr/imgres
- - google.com.py/imgres
- - google.com.qa/imgres
- - google.com.sa/imgres
- - google.com.sb/imgres
- - google.com.sg/imgres
- - google.com.sl/imgres
- - google.com.sv/imgres
- - google.com.tj/imgres
- - google.com.tn/imgres
- - google.com.tr/imgres
- - google.com.tw/imgres
- - google.com.ua/imgres
- - google.com.uy/imgres
- - google.com.vc/imgres
- - google.com.vn/imgres
- - google.cv/imgres
- - google.cz/imgres
- - google.de/imgres
- - google.dj/imgres
- - google.dk/imgres
- - google.dm/imgres
- - google.dz/imgres
- - google.ee/imgres
- - google.es/imgres
- - google.fi/imgres
- - google.fm/imgres
- - google.fr/imgres
- - google.ga/imgres
- - google.gd/imgres
- - google.ge/imgres
- - google.gf/imgres
- - google.gg/imgres
- - google.gl/imgres
- - google.gm/imgres
- - google.gp/imgres
- - google.gr/imgres
- - google.gy/imgres
- - google.hn/imgres
- - google.hr/imgres
- - google.ht/imgres
- - google.hu/imgres
- - google.ie/imgres
- - google.im/imgres
- - google.io/imgres
- - google.iq/imgres
- - google.is/imgres
- - google.it/imgres
- - google.it.ao/imgres
- - google.je/imgres
- - google.jo/imgres
- - google.kg/imgres
- - google.ki/imgres
- - google.kz/imgres
- - google.la/imgres
- - google.li/imgres
- - google.lk/imgres
- - google.lt/imgres
- - google.lu/imgres
- - google.lv/imgres
- - google.md/imgres
- - google.me/imgres
- - google.mg/imgres
- - google.mk/imgres
- - google.ml/imgres
- - google.mn/imgres
- - google.ms/imgres
- - google.mu/imgres
- - google.mv/imgres
- - google.mw/imgres
- - google.ne/imgres
- - google.nl/imgres
- - google.no/imgres
- - google.nr/imgres
- - google.nu/imgres
- - google.pl/imgres
- - google.pn/imgres
- - google.ps/imgres
- - google.pt/imgres
- - google.ro/imgres
- - google.rs/imgres
- - google.ru/imgres
- - google.rw/imgres
- - google.sc/imgres
- - google.se/imgres
- - google.sh/imgres
- - google.si/imgres
- - google.sk/imgres
- - google.sm/imgres
- - google.sn/imgres
- - google.so/imgres
- - google.st/imgres
- - google.td/imgres
- - google.tg/imgres
- - google.tk/imgres
- - google.tl/imgres
- - google.tm/imgres
- - google.to/imgres
- - google.tt/imgres
- - google.us/imgres
- - google.vg/imgres
- - google.vu/imgres
- - images.google.ws
- - images.google.ac
- - images.google.ad
- - images.google.ae
- - images.google.am
- - images.google.as
- - images.google.at
- - images.google.az
- - images.google.ba
- - images.google.be
- - images.google.bf
- - images.google.bg
- - images.google.bi
- - images.google.bj
- - images.google.bs
- - images.google.by
- - images.google.ca
- - images.google.cat
- - images.google.cc
- - images.google.cd
- - images.google.cf
- - images.google.cg
- - images.google.ch
- - images.google.ci
- - images.google.cl
- - images.google.cm
- - images.google.cn
- - images.google.co.bw
- - images.google.co.ck
- - images.google.co.cr
- - images.google.co.id
- - images.google.co.il
- - images.google.co.in
- - images.google.co.jp
- - images.google.co.ke
- - images.google.co.kr
- - images.google.co.ls
- - images.google.co.ma
- - images.google.co.mz
- - images.google.co.nz
- - images.google.co.th
- - images.google.co.tz
- - images.google.co.ug
- - images.google.co.uk
- - images.google.co.uz
- - images.google.co.ve
- - images.google.co.vi
- - images.google.co.za
- - images.google.co.zm
- - images.google.co.zw
- - images.google.com
- - images.google.com.af
- - images.google.com.ag
- - images.google.com.ai
- - images.google.com.ar
- - images.google.com.au
- - images.google.com.bd
- - images.google.com.bh
- - images.google.com.bn
- - images.google.com.bo
- - images.google.com.br
- - images.google.com.by
- - images.google.com.bz
- - images.google.com.co
- - images.google.com.cu
- - images.google.com.cy
- - images.google.com.do
- - images.google.com.ec
- - images.google.com.eg
- - images.google.com.et
- - images.google.com.fj
- - images.google.com.gh
- - images.google.com.gi
- - images.google.com.gt
- - images.google.com.hk
- - images.google.com.jm
- - images.google.com.kh
- - images.google.com.kh
- - images.google.com.kw
- - images.google.com.lb
- - images.google.com.lc
- - images.google.com.ly
- - images.google.com.mt
- - images.google.com.mx
- - images.google.com.my
- - images.google.com.na
- - images.google.com.nf
- - images.google.com.ng
- - images.google.com.ni
- - images.google.com.np
- - images.google.com.om
- - images.google.com.pa
- - images.google.com.pe
- - images.google.com.ph
- - images.google.com.pk
- - images.google.com.pr
- - images.google.com.py
- - images.google.com.qa
- - images.google.com.sa
- - images.google.com.sb
- - images.google.com.sg
- - images.google.com.sl
- - images.google.com.sv
- - images.google.com.tj
- - images.google.com.tn
- - images.google.com.tr
- - images.google.com.tw
- - images.google.com.ua
- - images.google.com.uy
- - images.google.com.vc
- - images.google.com.vn
- - images.google.cv
- - images.google.cz
- - images.google.de
- - images.google.dj
- - images.google.dk
- - images.google.dm
- - images.google.dz
- - images.google.ee
- - images.google.es
- - images.google.fi
- - images.google.fm
- - images.google.fr
- - images.google.ga
- - images.google.gd
- - images.google.ge
- - images.google.gf
- - images.google.gg
- - images.google.gl
- - images.google.gm
- - images.google.gp
- - images.google.gr
- - images.google.gy
- - images.google.hn
- - images.google.hr
- - images.google.ht
- - images.google.hu
- - images.google.ie
- - images.google.im
- - images.google.io
- - images.google.iq
- - images.google.is
- - images.google.it
- - images.google.it.ao
- - images.google.je
- - images.google.jo
- - images.google.kg
- - images.google.ki
- - images.google.kz
- - images.google.la
- - images.google.li
- - images.google.lk
- - images.google.lt
- - images.google.lu
- - images.google.lv
- - images.google.md
- - images.google.me
- - images.google.mg
- - images.google.mk
- - images.google.ml
- - images.google.mn
- - images.google.ms
- - images.google.mu
- - images.google.mv
- - images.google.mw
- - images.google.ne
- - images.google.nl
- - images.google.no
- - images.google.nr
- - images.google.nu
- - images.google.pl
- - images.google.pn
- - images.google.ps
- - images.google.pt
- - images.google.ro
- - images.google.rs
- - images.google.ru
- - images.google.rw
- - images.google.sc
- - images.google.se
- - images.google.sh
- - images.google.si
- - images.google.sk
- - images.google.sm
- - images.google.sn
- - images.google.so
- - images.google.st
- - images.google.td
- - images.google.tg
- - images.google.tk
- - images.google.tl
- - images.google.tm
- - images.google.to
- - images.google.tt
- - images.google.us
- - images.google.vg
- - images.google.vu
- - images.google.ws
-
- Google News:
- parameters:
- - q
- domains:
- - news.google.ac
- - news.google.ad
- - news.google.ae
- - news.google.am
- - news.google.as
- - news.google.at
- - news.google.az
- - news.google.ba
- - news.google.be
- - news.google.bf
- - news.google.bg
- - news.google.bi
- - news.google.bj
- - news.google.bs
- - news.google.by
- - news.google.ca
- - news.google.cat
- - news.google.cc
- - news.google.cd
- - news.google.cf
- - news.google.cg
- - news.google.ch
- - news.google.ci
- - news.google.cl
- - news.google.cm
- - news.google.cn
- - news.google.co.bw
- - news.google.co.ck
- - news.google.co.cr
- - news.google.co.id
- - news.google.co.il
- - news.google.co.in
- - news.google.co.jp
- - news.google.co.ke
- - news.google.co.kr
- - news.google.co.ls
- - news.google.co.ma
- - news.google.co.mz
- - news.google.co.nz
- - news.google.co.th
- - news.google.co.tz
- - news.google.co.ug
- - news.google.co.uk
- - news.google.co.uz
- - news.google.co.ve
- - news.google.co.vi
- - news.google.co.za
- - news.google.co.zm
- - news.google.co.zw
- - news.google.com
- - news.google.com.af
- - news.google.com.ag
- - news.google.com.ai
- - news.google.com.ar
- - news.google.com.au
- - news.google.com.bd
- - news.google.com.bh
- - news.google.com.bn
- - news.google.com.bo
- - news.google.com.br
- - news.google.com.by
- - news.google.com.bz
- - news.google.com.co
- - news.google.com.cu
- - news.google.com.cy
- - news.google.com.do
- - news.google.com.ec
- - news.google.com.eg
- - news.google.com.et
- - news.google.com.fj
- - news.google.com.gh
- - news.google.com.gi
- - news.google.com.gt
- - news.google.com.hk
- - news.google.com.jm
- - news.google.com.kh
- - news.google.com.kh
- - news.google.com.kw
- - news.google.com.lb
- - news.google.com.lc
- - news.google.com.ly
- - news.google.com.mt
- - news.google.com.mx
- - news.google.com.my
- - news.google.com.na
- - news.google.com.nf
- - news.google.com.ng
- - news.google.com.ni
- - news.google.com.np
- - news.google.com.om
- - news.google.com.pa
- - news.google.com.pe
- - news.google.com.ph
- - news.google.com.pk
- - news.google.com.pr
- - news.google.com.py
- - news.google.com.qa
- - news.google.com.sa
- - news.google.com.sb
- - news.google.com.sg
- - news.google.com.sl
- - news.google.com.sv
- - news.google.com.tj
- - news.google.com.tn
- - news.google.com.tr
- - news.google.com.tw
- - news.google.com.ua
- - news.google.com.uy
- - news.google.com.vc
- - news.google.com.vn
- - news.google.cv
- - news.google.cz
- - news.google.de
- - news.google.dj
- - news.google.dk
- - news.google.dm
- - news.google.dz
- - news.google.ee
- - news.google.es
- - news.google.fi
- - news.google.fm
- - news.google.fr
- - news.google.ga
- - news.google.gd
- - news.google.ge
- - news.google.gf
- - news.google.gg
- - news.google.gl
- - news.google.gm
- - news.google.gp
- - news.google.gr
- - news.google.gy
- - news.google.hn
- - news.google.hr
- - news.google.ht
- - news.google.hu
- - news.google.ie
- - news.google.im
- - news.google.io
- - news.google.iq
- - news.google.is
- - news.google.it
- - news.google.it.ao
- - news.google.je
- - news.google.jo
- - news.google.kg
- - news.google.ki
- - news.google.kz
- - news.google.la
- - news.google.li
- - news.google.lk
- - news.google.lt
- - news.google.lu
- - news.google.lv
- - news.google.md
- - news.google.me
- - news.google.mg
- - news.google.mk
- - news.google.ml
- - news.google.mn
- - news.google.ms
- - news.google.mu
- - news.google.mv
- - news.google.mw
- - news.google.ne
- - news.google.nl
- - news.google.no
- - news.google.nr
- - news.google.nu
- - news.google.pl
- - news.google.pn
- - news.google.ps
- - news.google.pt
- - news.google.ro
- - news.google.rs
- - news.google.ru
- - news.google.rw
- - news.google.sc
- - news.google.se
- - news.google.sh
- - news.google.si
- - news.google.sk
- - news.google.sm
- - news.google.sn
- - news.google.so
- - news.google.st
- - news.google.td
- - news.google.tg
- - news.google.tk
- - news.google.tl
- - news.google.tm
- - news.google.to
- - news.google.tt
- - news.google.us
- - news.google.vg
- - news.google.vu
- - news.google.ws
-
- Google Product Search:
- parameters:
- - q
- domains:
- - google.ac/products
- - google.ad/products
- - google.ae/products
- - google.am/products
- - google.as/products
- - google.at/products
- - google.az/products
- - google.ba/products
- - google.be/products
- - google.bf/products
- - google.bg/products
- - google.bi/products
- - google.bj/products
- - google.bs/products
- - google.by/products
- - google.ca/products
- - google.cat/products
- - google.cc/products
- - google.cd/products
- - google.cf/products
- - google.cg/products
- - google.ch/products
- - google.ci/products
- - google.cl/products
- - google.cm/products
- - google.cn/products
- - google.co.bw/products
- - google.co.ck/products
- - google.co.cr/products
- - google.co.id/products
- - google.co.il/products
- - google.co.in/products
- - google.co.jp/products
- - google.co.ke/products
- - google.co.kr/products
- - google.co.ls/products
- - google.co.ma/products
- - google.co.mz/products
- - google.co.nz/products
- - google.co.th/products
- - google.co.tz/products
- - google.co.ug/products
- - google.co.uk/products
- - google.co.uz/products
- - google.co.ve/products
- - google.co.vi/products
- - google.co.za/products
- - google.co.zm/products
- - google.co.zw/products
- - google.com/products
- - google.com.af/products
- - google.com.ag/products
- - google.com.ai/products
- - google.com.ar/products
- - google.com.au/products
- - google.com.bd/products
- - google.com.bh/products
- - google.com.bn/products
- - google.com.bo/products
- - google.com.br/products
- - google.com.by/products
- - google.com.bz/products
- - google.com.co/products
- - google.com.cu/products
- - google.com.cy/products
- - google.com.do/products
- - google.com.ec/products
- - google.com.eg/products
- - google.com.et/products
- - google.com.fj/products
- - google.com.gh/products
- - google.com.gi/products
- - google.com.gt/products
- - google.com.hk/products
- - google.com.jm/products
- - google.com.kh/products
- - google.com.kh/products
- - google.com.kw/products
- - google.com.lb/products
- - google.com.lc/products
- - google.com.ly/products
- - google.com.mt/products
- - google.com.mx/products
- - google.com.my/products
- - google.com.na/products
- - google.com.nf/products
- - google.com.ng/products
- - google.com.ni/products
- - google.com.np/products
- - google.com.om/products
- - google.com.pa/products
- - google.com.pe/products
- - google.com.ph/products
- - google.com.pk/products
- - google.com.pr/products
- - google.com.py/products
- - google.com.qa/products
- - google.com.sa/products
- - google.com.sb/products
- - google.com.sg/products
- - google.com.sl/products
- - google.com.sv/products
- - google.com.tj/products
- - google.com.tn/products
- - google.com.tr/products
- - google.com.tw/products
- - google.com.ua/products
- - google.com.uy/products
- - google.com.vc/products
- - google.com.vn/products
- - google.cv/products
- - google.cz/products
- - google.de/products
- - google.dj/products
- - google.dk/products
- - google.dm/products
- - google.dz/products
- - google.ee/products
- - google.es/products
- - google.fi/products
- - google.fm/products
- - google.fr/products
- - google.ga/products
- - google.gd/products
- - google.ge/products
- - google.gf/products
- - google.gg/products
- - google.gl/products
- - google.gm/products
- - google.gp/products
- - google.gr/products
- - google.gy/products
- - google.hn/products
- - google.hr/products
- - google.ht/products
- - google.hu/products
- - google.ie/products
- - google.im/products
- - google.io/products
- - google.iq/products
- - google.is/products
- - google.it/products
- - google.it.ao/products
- - google.je/products
- - google.jo/products
- - google.kg/products
- - google.ki/products
- - google.kz/products
- - google.la/products
- - google.li/products
- - google.lk/products
- - google.lt/products
- - google.lu/products
- - google.lv/products
- - google.md/products
- - google.me/products
- - google.mg/products
- - google.mk/products
- - google.ml/products
- - google.mn/products
- - google.ms/products
- - google.mu/products
- - google.mv/products
- - google.mw/products
- - google.ne/products
- - google.nl/products
- - google.no/products
- - google.nr/products
- - google.nu/products
- - google.pl/products
- - google.pn/products
- - google.ps/products
- - google.pt/products
- - google.ro/products
- - google.rs/products
- - google.ru/products
- - google.rw/products
- - google.sc/products
- - google.se/products
- - google.sh/products
- - google.si/products
- - google.sk/products
- - google.sm/products
- - google.sn/products
- - google.so/products
- - google.st/products
- - google.td/products
- - google.tg/products
- - google.tk/products
- - google.tl/products
- - google.tm/products
- - google.to/products
- - google.tt/products
- - google.us/products
- - google.vg/products
- - google.vu/products
- - google.ws/products
- - www.google.ac/products
- - www.google.ad/products
- - www.google.ae/products
- - www.google.am/products
- - www.google.as/products
- - www.google.at/products
- - www.google.az/products
- - www.google.ba/products
- - www.google.be/products
- - www.google.bf/products
- - www.google.bg/products
- - www.google.bi/products
- - www.google.bj/products
- - www.google.bs/products
- - www.google.by/products
- - www.google.ca/products
- - www.google.cat/products
- - www.google.cc/products
- - www.google.cd/products
- - www.google.cf/products
- - www.google.cg/products
- - www.google.ch/products
- - www.google.ci/products
- - www.google.cl/products
- - www.google.cm/products
- - www.google.cn/products
- - www.google.co.bw/products
- - www.google.co.ck/products
- - www.google.co.cr/products
- - www.google.co.id/products
- - www.google.co.il/products
- - www.google.co.in/products
- - www.google.co.jp/products
- - www.google.co.ke/products
- - www.google.co.kr/products
- - www.google.co.ls/products
- - www.google.co.ma/products
- - www.google.co.mz/products
- - www.google.co.nz/products
- - www.google.co.th/products
- - www.google.co.tz/products
- - www.google.co.ug/products
- - www.google.co.uk/products
- - www.google.co.uz/products
- - www.google.co.ve/products
- - www.google.co.vi/products
- - www.google.co.za/products
- - www.google.co.zm/products
- - www.google.co.zw/products
- - www.google.com/products
- - www.google.com.af/products
- - www.google.com.ag/products
- - www.google.com.ai/products
- - www.google.com.ar/products
- - www.google.com.au/products
- - www.google.com.bd/products
- - www.google.com.bh/products
- - www.google.com.bn/products
- - www.google.com.bo/products
- - www.google.com.br/products
- - www.google.com.by/products
- - www.google.com.bz/products
- - www.google.com.co/products
- - www.google.com.cu/products
- - www.google.com.cy/products
- - www.google.com.do/products
- - www.google.com.ec/products
- - www.google.com.eg/products
- - www.google.com.et/products
- - www.google.com.fj/products
- - www.google.com.gh/products
- - www.google.com.gi/products
- - www.google.com.gt/products
- - www.google.com.hk/products
- - www.google.com.jm/products
- - www.google.com.kh/products
- - www.google.com.kh/products
- - www.google.com.kw/products
- - www.google.com.lb/products
- - www.google.com.lc/products
- - www.google.com.ly/products
- - www.google.com.mt/products
- - www.google.com.mx/products
- - www.google.com.my/products
- - www.google.com.na/products
- - www.google.com.nf/products
- - www.google.com.ng/products
- - www.google.com.ni/products
- - www.google.com.np/products
- - www.google.com.om/products
- - www.google.com.pa/products
- - www.google.com.pe/products
- - www.google.com.ph/products
- - www.google.com.pk/products
- - www.google.com.pr/products
- - www.google.com.py/products
- - www.google.com.qa/products
- - www.google.com.sa/products
- - www.google.com.sb/products
- - www.google.com.sg/products
- - www.google.com.sl/products
- - www.google.com.sv/products
- - www.google.com.tj/products
- - www.google.com.tn/products
- - www.google.com.tr/products
- - www.google.com.tw/products
- - www.google.com.ua/products
- - www.google.com.uy/products
- - www.google.com.vc/products
- - www.google.com.vn/products
- - www.google.cv/products
- - www.google.cz/products
- - www.google.de/products
- - www.google.dj/products
- - www.google.dk/products
- - www.google.dm/products
- - www.google.dz/products
- - www.google.ee/products
- - www.google.es/products
- - www.google.fi/products
- - www.google.fm/products
- - www.google.fr/products
- - www.google.ga/products
- - www.google.gd/products
- - www.google.ge/products
- - www.google.gf/products
- - www.google.gg/products
- - www.google.gl/products
- - www.google.gm/products
- - www.google.gp/products
- - www.google.gr/products
- - www.google.gy/products
- - www.google.hn/products
- - www.google.hr/products
- - www.google.ht/products
- - www.google.hu/products
- - www.google.ie/products
- - www.google.im/products
- - www.google.io/products
- - www.google.iq/products
- - www.google.is/products
- - www.google.it/products
- - www.google.it.ao/products
- - www.google.je/products
- - www.google.jo/products
- - www.google.kg/products
- - www.google.ki/products
- - www.google.kz/products
- - www.google.la/products
- - www.google.li/products
- - www.google.lk/products
- - www.google.lt/products
- - www.google.lu/products
- - www.google.lv/products
- - www.google.md/products
- - www.google.me/products
- - www.google.mg/products
- - www.google.mk/products
- - www.google.ml/products
- - www.google.mn/products
- - www.google.ms/products
- - www.google.mu/products
- - www.google.mv/products
- - www.google.mw/products
- - www.google.ne/products
- - www.google.nl/products
- - www.google.no/products
- - www.google.nr/products
- - www.google.nu/products
- - www.google.pl/products
- - www.google.pn/products
- - www.google.ps/products
- - www.google.pt/products
- - www.google.ro/products
- - www.google.rs/products
- - www.google.ru/products
- - www.google.rw/products
- - www.google.sc/products
- - www.google.se/products
- - www.google.sh/products
- - www.google.si/products
- - www.google.sk/products
- - www.google.sm/products
- - www.google.sn/products
- - www.google.so/products
- - www.google.st/products
- - www.google.td/products
- - www.google.tg/products
- - www.google.tk/products
- - www.google.tl/products
- - www.google.tm/products
- - www.google.to/products
- - www.google.tt/products
- - www.google.us/products
- - www.google.vg/products
- - www.google.vu/products
- - www.google.ws/products
-
- Google Video:
- parameters:
- - q
- domains:
- - video.google.com
-
- Goyellow.de:
- parameters:
- - MDN
- domains:
- - www.goyellow.de
-
- Gule Sider:
- parameters:
- - q
- domains:
- - www.gulesider.no
-
- HighBeam:
- parameters:
- - q
- domains:
- - www.highbeam.com
-
- Hit-Parade:
- parameters:
- - p7
- domains:
- - req.-hit-parade.com
- - class.hit-parade.com
- - www.hit-parade.com
-
- Holmes:
- parameters:
- - q
- domains:
- - holmes.ge
-
- Hooseek.com:
- parameters:
- - recherche
- domains:
- - www.hooseek.com
-
- Hotbot:
- parameters:
- - query
- domains:
- - www.hotbot.com
-
- Icerockeet:
- parameters:
- - q
- domains:
- - blogs.icerocket.com
-
- ICQ:
- parameters:
- - q
- domains:
- - www.icq.com
- - search.icq.com
-
- Ilse:
- parameters:
- - search_for
- domains:
- - www.ilse.nl
-
- InfoSpace:
- parameters:
- - q
- - s
- domains:
- - infospace.com
- - dogpile.com
- - www.dogpile.com
- - metacrawler.com
- - webfetch.com
- - webcrawler.com
- - search.kiwee.com
- # powered by InfoSpace
- - isearch.babylon.com
- - start.facemoods.com
- - search.magnetic.com
- - search.searchcompletion.com
- - clusty.com
-
- Interia:
- parameters:
- - q
- domains:
- - www.google.interia.pl
-
- I-play:
- parameters:
- - q
- domains:
- - start.iplay.com
-
- IXquick:
- parameters:
- - query
- domains:
- - ixquick.com
- - www.eu.ixquick.com
- - ixquick.de
- - www.ixquick.de
- - us.ixquick.com
- - s1.us.ixquick.com
- - s2.us.ixquick.com
- - s3.us.ixquick.com
- - s4.us.ixquick.com
- - s5.us.ixquick.com
- - eu.ixquick.com
- - s8-eu.ixquick.com
- - s1-eu.ixquick.de
-
- Jyxo:
- parameters:
- - q
- domains:
- - jyxo.1188.cz
-
- Jungle Spider:
- parameters:
- - q
- domains:
- - www.jungle-spider.de
-
- Jungle Key:
- parameters:
- - query
- domains:
- - junglekey.com
- - junglekey.fr
-
- Kataweb:
- parameters:
- - q
- domains:
- - www.kataweb.it
-
- Kvasir:
- parameters:
- - q
- domains:
- - www.kvasir.no
-
- Latne:
- parameters:
- - q
- domains:
- - www.latne.lv
-
- La Toile Du Quebec Via Google:
- parameters:
- - q
- domains:
- - www.toile.com
- - web.toile.com
-
- Looksmart:
- parameters:
- - key
- domains:
- - www.looksmart.com
-
- Lo.st:
- parameters:
- - x_query
- domains:
- - lo.st
-
- Lycos:
- parameters:
- - query
- domains:
- - search.lycos.com
- - www.lycos.com
- - lycos.com
-
- maailm:
- parameters:
- - tekst
- domains:
- - www.maailm.com
-
- Mail.ru:
- parameters:
- - q
- domains:
- - go.mail.ru
-
- Mamma:
- parameters:
- - query
- domains:
- - www.mamma.com
- - mamma75.mamma.com
-
- Marktplaats:
- parameters:
- - query
- domains:
- - www.marktplaats.nl
-
- Maxwebsearch:
- parameters:
- - query
- domains:
- - maxwebsearch.com
-
- Meta:
- parameters:
- - q
- domains:
- - meta.ua
-
- MetaCrawler.de:
- parameters:
- - qry
- domains:
- - s1.metacrawler.de
- - s2.metacrawler.de
- - s3.metacrawler.de
-
- Metager:
- parameters:
- - eingabe
- domains:
- - meta.rrzn.uni-hannover.de
- - www.metager.de
-
- Metager2:
- parameters:
- - q
- domains:
- - metager2.de
-
- Meinestadt:
- parameters:
- - words
- domains:
- - www.meinestadt.de
-
- Mister Wong:
- parameters:
- - Keywords
- domains:
- - www.mister-wong.com
- - www.mister-wong.de
-
- Monstercrawler:
- parameters:
- - qry
- domains:
- - www.monstercrawler.com
-
- Mozbot:
- parameters:
- - q
- domains:
- - www.mozbot.fr
- - www.mozbot.co.uk
- - www.mozbot.com
-
- El Mundo:
- parameters:
- - q
- domains:
- - ariadna.elmundo.es
-
- MySearch:
- parameters:
- - searchfor
- - searchFor
- domains:
- - www.mysearch.com
- - ms114.mysearch.com
- - ms146.mysearch.com
- - kf.mysearch.myway.com
- - ki.mysearch.myway.com
- - search.myway.com
- - search.mywebsearch.com
-
- Najdi:
- parameters:
- - q
- domains:
- - www.najdi.si
-
- Nate:
- parameters:
- - q
- domains:
- - search.nate.com
-
- Naver:
- parameters:
- - query
- domains:
- - search.naver.com
-
- Naver Images:
- parameters:
- - query
- domains:
- - image.search.naver.com
- - imagesearch.naver.com
-
- Needtofind:
- parameters:
- - searchfor
- domains:
- - ko.search.need2find.com
-
- Neti:
- parameters:
- - query
- domains:
- - www.neti.ee
-
- Nifty:
- parameters:
- - q
- domains:
- - search.nifty.com
-
- Nigma:
- parameters:
- - s
- domains:
- - nigma.ru
-
- Onet:
- parameters:
- - qt
- domains:
- - szukaj.onet.pl
-
- Online.no:
- parameters:
- - q
- domains:
- - online.no
-
- Opplysningen 1881:
- parameters:
- - Query
- domains:
- - www.1881.no
-
- Orange:
- parameters:
- - q
- domains:
- - busca.orange.es
- - search.orange.co.uk
-
- Paperball:
- parameters:
- - q
- domains:
- - www.paperball.de
-
- PeoplePC:
- parameters:
- - q
- domains:
- - search.peoplepc.com
-
- Picsearch:
- parameters:
- - q
- domains:
- - www.picsearch.com
-
- Plazoo:
- parameters:
- - q
- domains:
- - www.plazoo.com
-
- Poisk.ru:
- parameters:
- - q
- domains:
- - www.plazoo.com
-
- PriceRunner:
- parameters:
- - q
- domains:
- - www.pricerunner.co.uk
-
- qip:
- parameters:
- - query
- domains:
- - search.qip.ru
-
- Qualigo:
- parameters:
- - q
- domains:
- - www.qualigo.at
- - www.qualigo.ch
- - www.qualigo.de
- - www.qualigo.nl
-
- Rakuten:
- parameters:
- - qt
- domains:
- - websearch.rakuten.co.jp
-
- Rambler:
- parameters:
- - query
- - words
- domains:
- - nova.rambler.ru
-
- RPMFind:
- parameters:
- - query
- domains:
- - rpmfind.net
- - fr2.rpmfind.net
-
- Road Runner Search:
- parameters:
- - q
- domains:
- - search.rr.com
-
- Sapo:
- parameters:
- - q
- domains:
- - pesquisa.sapo.pt
-
- # Add Scour.com
-
- Search.com:
- parameters:
- - q
- domains:
- - www.search.com
-
- Search.ch:
- parameters:
- - q
- domains:
- - www.search.ch
-
- Searchalot:
- parameters:
- - q
- domains:
- - searchalot.com
-
- SearchCanvas:
- parameters:
- - q
- domains:
- - www.searchcanvas.com
-
- Searchy:
- parameters:
- - q
- domains:
- - www.searchy.co.uk
-
- # Add setooz.com
-
- Seznam:
- parameters:
- - q
- domains:
- - search.seznam.cz
-
- Sharelook:
- parameters:
- - keyword
- domains:
- - www.sharelook.fr
-
- Skynet:
- parameters:
- - q
- domains:
- - www.skynet.be
-
- Sogou:
- parameters:
- - query
- domains:
- - www.sougou.com
-
- Softonic:
- parameters:
- - q
- domains:
- - search.softonic.com
-
- soso.com:
- parameters:
- - w
- domains:
- - www.soso.com
-
- Snapdo:
- parameters:
- - q
- domains:
- - search.snapdo.com
-
- Startpagina:
- parameters:
- - q
- domains:
- - startgoogle.startpagina.nl
-
- Startsiden:
- parameters:
- - q
- domains:
- - www.startsiden.no
-
- suche.info:
- parameters:
- - q
- domains:
- - suche.info
-
- Suchmaschine.com:
- parameters:
- - suchstr
- domains:
- - www.suchmaschine.com
-
- Suchnase:
- parameters:
- - q
- domains:
- - www.suchnase.de
-
- TalkTalk:
- parameters:
- - query
- domains:
- - www.talktalk.co.uk
-
- Technorati:
- parameters:
- - q
- domains:
- - technorati.com
-
- Teoma:
- parameters:
- - q
- domains:
- - www.teoma.com
-
- Terra:
- parameters:
- - query
- domains:
- - buscador.terra.es
- - buscador.terra.cl
- - buscador.terra.com.br
-
- Tiscali:
- parameters:
- - q
- - key
- domains:
- - search.tiscali.it
- - search-dyn.tiscali.it
- - hledani.tiscali.cz
-
- Tixuma:
- parameters:
- - sc
- domains:
- - www.tixuma.de
-
- T-Online:
- parameters:
- - q
- domains:
- - suche.t-online.de
- - brisbane.t-online.de
- - navigationshilfe.t-online.de
-
- Toolbarhome:
- parameters:
- - q
- domains:
- - www.toolbarhome.com
- - vshare.toolbarhome.com
-
- Trouvez.com:
- parameters:
- - query
- domains:
- - www.trouvez.com
-
- TrovaRapido:
- parameters:
- - q
- domains:
- - www.trovarapido.com
-
- Trusted-Search:
- parameters:
- - w
- domains:
- - www.trusted--search.com
-
- Twingly:
- parameters:
- - q
- domains:
- - www.twingly.com
-
- uol.com.br:
- parameters:
- - q
- domains:
- - busca.uol.com.br
-
- URL.ORGanizier:
- parameters:
- - q
- domains:
- - www.url.org
-
- Vinden:
- parameters:
- - q
- domains:
- - www.vinden.nl
-
- Vindex:
- parameters:
- - search_for
- domains:
- - www.vindex.nl
- - search.vindex.nl
-
- Virgilio:
- parameters:
- - qs
- domains:
- - ricerca.virgilio.it
- - ricercaimmagini.virgilio.it
- - ricercavideo.virgilio.it
- - ricercanews.virgilio.it
- - mobile.virgilio.it
-
- Voila:
- parameters:
- - rdata
- - kw
- domains:
- - search.ke.voila.fr
- - www.lemoteur.fr
-
- Volny:
- parameters:
- - search
- domains:
- - web.volny.cz
-
- Walhello :
- parameters:
- - key
- domains:
- - www.walhello.info
- - www.walhello.com
- - www.walhello.de
- - www.walhello.nl
-
- Web.de:
- parameters:
- - su
- domains:
- - suche.web.de
-
- Web.nl:
- parameters:
- - zoekwoord
- domains:
- - www.web.nl
-
- Weborama:
- parameters:
- - QUERY
- domains:
- - www.weborama.com
-
- WebSearch:
- parameters:
- - qkw
- - q
- domains:
- - www.websearch.com
-
- Winamp:
- parameters:
- - q
- domains:
- - search.winamp.com
-
- Witch:
- parameters:
- - search
- domains:
- - www.witch.de
-
- Wirtualna Polska:
- parameters:
- - szukaj
- domains:
- - szukaj.wp.pl
-
- WWW:
- parameters:
- - query
- domains:
- - search.www.ee
-
- X-recherche:
- parameters:
- - MOTS
- domains:
- - www.x-recherche.com
-
- Yahoo!:
- parameters:
- - p
- - q
- domains:
- - search.yahoo.com
- - yahoo.com
- - ar.search.yahoo.com
- - ar.yahoo.com
- - au.search.yahoo.com
- - au.yahoo.com
- - br.search.yahoo.com
- - br.yahoo.com
- - cade.searchde.yahoo.com
- - cade.yahoo.com
- - chinese.searchinese.yahoo.com
- - chinese.yahoo.com
- - cn.search.yahoo.com
- - cn.yahoo.com
- - de.search.yahoo.com
- - de.yahoo.com
- - dk.search.yahoo.com
- - dk.yahoo.com
- - es.search.yahoo.com
- - es.yahoo.com
- - espanol.searchpanol.yahoo.com
- - espanol.searchpanol.yahoo.com
- - espanol.yahoo.com
- - espanol.yahoo.com
- - fr.search.yahoo.com
- - fr.yahoo.com
- - ie.search.yahoo.com
- - ie.yahoo.com
- - it.search.yahoo.com
- - it.yahoo.com
- - kr.search.yahoo.com
- - kr.yahoo.com
- - mx.search.yahoo.com
- - mx.yahoo.com
- - no.search.yahoo.com
- - no.yahoo.com
- - nz.search.yahoo.com
- - nz.yahoo.com
- - one.cn.yahoo.com
- - one.searchn.yahoo.com
- - qc.search.yahoo.com
- - qc.search.yahoo.com
- - qc.search.yahoo.com
- - qc.yahoo.com
- - qc.yahoo.com
- - se.search.yahoo.com
- - se.search.yahoo.com
- - se.yahoo.com
- - search.searcharch.yahoo.com
- - search.yahoo.com
- - uk.search.yahoo.com
- - uk.yahoo.com
- - www.yahoo.co.jp
- - search.yahoo.co.jp
- # powered by Yahoo
- - www.cercato.it
- - search.offerbox.com
- - ys.mirostart.com
-
- Yahoo! Images:
- parameters:
- - p
- - q
- domains:
- - image.yahoo.cn
- - images.search.yahoo.com
-
- Yam:
- parameters:
- - k
- domains:
- - search.yam.com
-
- Yandex:
- parameters:
- - text
- domains:
- - yandex.ru
- - yandex.ua
- - yandex.com
- - yandex.by
- - www.yandex.ru
- - www.yandex.ua
- - www.yandex.com
- - www.yandex.by
-
- Yandex Images:
- parameters:
- - text
- domains:
- - images.yandex.ru
- - images.yandex.ua
- - images.yandex.com
-
- Yasni:
- parameters:
- - query
- domains:
- - www.yasni.de
- - www.yasni.com
- - www.yasni.co.uk
- - www.yasni.ch
- - www.yasni.at
-
- Yatedo:
- parameters:
- - q
- domains:
- - www.yatedo.com
- - www.yatedo.fr
-
- # Add Yellowmap:
-
- Yippy:
- parameters:
- - q
- - query
- domains:
- - search.yippy.com
-
- YouGoo:
- parameters:
- - q
- domains:
- - www.yougoo.fr
-
- Zapmeta:
- parameters:
- - q
- - query
- domains:
- - www.zapmeta.com
- - www.zapmeta.nl
- - www.zapmeta.de
- - uk.zapmeta.com
-
- Zoek:
- parameters:
- - q
- domains:
- - www3.zoek.nl
-
- Zhongsou:
- parameters:
- - w
- domains:
- - p.zhongsou.com
-
- Zoeken:
- parameters:
- - q
- domains:
- - www.zoeken.nl
-
- Zoohoo:
- parameters:
- - q
- domains:
- - zoohoo.cz
diff --git a/vendor/snowplow/referer-parser/ruby/lib/referer-parser.rb b/vendor/snowplow/referer-parser/ruby/lib/referer-parser.rb
deleted file mode 100644
index 488f8c978..000000000
--- a/vendor/snowplow/referer-parser/ruby/lib/referer-parser.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (c) 2012-2013 Snowplow Analytics Ltd. All rights reserved.
-#
-# This program is licensed to you under the Apache License Version 2.0,
-# and you may not use this file except in compliance with the Apache License Version 2.0.
-# You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the Apache License Version 2.0 is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.
-
-# Author:: Yali Sassoon (mailto:support@snowplowanalytics.com)
-# Copyright:: Copyright (c) 2012-2013 Snowplow Analytics Ltd
-# License:: Apache License Version 2.0
-
-require "referer-parser/version"
-require "referer-parser/errors"
-require "referer-parser/parser"
-
-module RefererParser
-end
diff --git a/vendor/snowplow/referer-parser/ruby/lib/referer-parser/errors.rb b/vendor/snowplow/referer-parser/ruby/lib/referer-parser/errors.rb
deleted file mode 100644
index 56f89cc75..000000000
--- a/vendor/snowplow/referer-parser/ruby/lib/referer-parser/errors.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright (c) 2012-2013 Snowplow Analytics Ltd. All rights reserved.
-#
-# This program is licensed to you under the Apache License Version 2.0,
-# and you may not use this file except in compliance with the Apache License Version 2.0.
-# You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the Apache License Version 2.0 is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.
-
-# Author:: Yali Sassoon (mailto:support@snowplowanalytics.com)
-# Copyright:: Copyright (c) 2012-2013 Snowplow Analytics Ltd
-# License:: Apache License Version 2.0
-
-module RefererParser
-
- class RefererParserError < StandardError
- attr_reader :original
- def initialize(msg, original=nil);
- super(msg);
- @original = original;
- end
- end
-
- class UnsupportedFormatError < RefererParserError; end
- class InvalidUriError < RefererParserError; end
- class CorruptReferersError < RefererParserError; end
-end
diff --git a/vendor/snowplow/referer-parser/ruby/lib/referer-parser/parser.rb b/vendor/snowplow/referer-parser/ruby/lib/referer-parser/parser.rb
deleted file mode 100644
index 4bd79db2c..000000000
--- a/vendor/snowplow/referer-parser/ruby/lib/referer-parser/parser.rb
+++ /dev/null
@@ -1,215 +0,0 @@
-# Copyright (c) 2014 Inside Systems, Inc All rights reserved.
-#
-# This program is licensed to you under the Apache License Version 2.0,
-# and you may not use this file except in compliance with the Apache License Version 2.0.
-# You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the Apache License Version 2.0 is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.
-
-# Author:: Kelley Reynolds (mailto:kelley@insidesystems.net)
-# Copyright:: Copyright (c) 2014 Inside Systems Inc
-# License:: Apache License Version 2.0
-
-require 'uri'
-require 'cgi'
-
-module RefererParser
- class Parser
- DefaultFile = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'data', 'referers.json'))
-
- # Create a new parser from one or more filenames/uris, defaults to ../data/referers.json
- def initialize(uris=DefaultFile)
- @domain_index ||= {}
- @name_hash ||= {}
-
- update(uris)
- end
-
- # Update the referer database with one or more uris
- def update(uris)
- [uris].flatten.each do |uri|
- deserialize_referer_data(read_referer_data(uri), File.extname(uri).downcase)
- end
-
- true
- end
-
- # Clean out the database
- def clear!
- @domain_index, @name_hash = {}, {}
-
- true
- end
-
- # Add a referer to the database with medium, name, domain or array of domains, and a parameter or array of parameters
- # If called manually and a domain is added to an existing entry with a path, you may need to call optimize_index! afterwards.
- def add_referer(medium, name, domains, parameters=nil)
- # The same name can be used with multiple mediums so we make a key here
- name_key = "#{name}-#{medium}"
-
- # Update the name has with the parameter and medium data
- @name_hash[name_key] = {:source => name, :medium => medium, :parameters => [parameters].flatten }
-
- # Update the domain to name index
- [domains].flatten.each do |domain_url|
- domain, *path = domain_url.split('/')
- if domain =~ /\Awww\.(.*)\z/i
- domain = $1
- end
-
- domain.downcase!
-
- @domain_index[domain] ||= []
- if !path.empty?
- @domain_index[domain] << ['/' + path.join('/'), name_key]
- else
- @domain_index[domain] << ['/', name_key]
- end
- end
- end
-
- # Prune duplicate entries and sort with the most specific path first if there is more than one entry
- # In this case, sorting by the longest string works fine
- def optimize_index!
- @domain_index.each do |key, val|
- # Sort each path/name_key pair by the longest path
- @domain_index[key].sort! { |a, b|
- b[0].size <=> a[0].size
- }.uniq!
- end
- end
-
- # Given a string or URI, return a hash of data
- def parse(obj)
- url = obj.is_a?(URI) ? obj : URI.parse(obj.to_s)
-
- if !['http', 'https'].include?(url.scheme)
- raise InvalidUriError.new("Only HTTP and HTTPS schemes are supported -- #{url.scheme}")
- end
-
- data = { :known => false, :uri => url.to_s }
-
- domain, name_key = domain_and_name_key_for(url)
- if domain and name_key
- referer_data = @name_hash[name_key]
- data[:known] = true
- data[:source] = referer_data[:source]
- data[:medium] = referer_data[:medium]
- data[:domain] = domain
-
- # Parse parameters if the referer uses them
- if url.query and referer_data[:parameters]
- query_params = CGI.parse(url.query)
- referer_data[:parameters].each do |param|
- # If there is a matching parameter, get the first non-blank value
- if !(values = query_params[param]).empty?
- data[:term] = values.select { |v| v.strip != "" }.first
- break if data[:term]
- end
- end
- end
- end
-
- data
- rescue URI::InvalidURIError
- raise InvalidUriError.new("Unable to parse URI, not a URI? -- #{obj.inspect}", $!)
- end
-
- protected
-
- # Determine the correct name_key for this host and path
- def domain_and_name_key_for(uri)
- # Create a proc that will return immediately
- check = Proc.new do |domain|
- domain.downcase!
- if paths = @domain_index[domain]
- paths.each do |path, name_key|
- return [domain, name_key] if uri.path.include?(path)
- end
- end
- end
-
- # First check hosts with and without the www prefix with the path
- if uri.host =~ /\Awww\.(.+)\z/i
- check.call $1
- else
- check.call uri.host
- end
-
- # Remove subdomains until only three are left (probably good enough)
- host_arr = uri.host.split(".")
- while host_arr.size > 2 do
- host_arr.shift
- check.call host_arr.join(".")
- end
-
- nil
- end
-
- def deserialize_referer_data(data, ext)
- # Parse the loaded data with the correct parser
- deserialized_data = if ['.yml', '.yaml'].include?(ext)
- deserialize_yaml(data)
- elsif ext == '.json'
- deserialize_json(data)
- else
- raise UnsupportedFormatError.new("Only yaml and json file formats are currently supported -- #{@msg}")
- end
-
- begin
- parse_referer_data deserialized_data
- rescue
- raise CorruptReferersError.new("Unable to parse data file -- #{$!.class} #{$!.to_s}", $!)
- end
- end
-
- def deserialize_yaml(data)
- require 'yaml'
- YAML.load(data)
- rescue Exception => e
- raise CorruptReferersError.new("Unable to YAML file -- #{e.to_s}", e)
- end
-
- def deserialize_json(data)
- require 'json'
- JSON.parse(data)
- rescue JSON::ParserError
- raise CorruptReferersError.new("Unable to JSON file -- #{$!.to_s}", $!)
- end
-
- def read_referer_data(uri)
- # Attempt to read the data from the network if application, or the file on the local system
- if uri =~ /\A(?:ht|f)tps?:\/\//
- require 'open-uri'
- begin
- open(uri).read
- rescue OpenURI::HTTPError
- raise InvalidUriError.new("Cannot load referer data from URI #{uri} -- #{$!.to_s}", $!)
- end
- else
- File.read(uri)
- end
- end
-
- # Create an index that maps domains/paths to their name/medium and a hash that contains their metadata
- # The index strips leading www in order to keep the index smaller
- # Format of the domain_index:
- # { domain => [[path1, name_key], [path2, name_key], ... ] }
- # Format of the name_hash:
- # { name_key => {:source, :medium, :parameters} }
- def parse_referer_data(data)
- data.each do |medium, name_hash|
- name_hash.each do |name, name_data|
- add_referer(medium, name, name_data['domains'], name_data['parameters'])
- end
- end
-
- optimize_index!
- rescue
- raise CorruptReferersError.new("Unable to parse referer data", $!)
- end
- end
-end
diff --git a/vendor/snowplow/referer-parser/ruby/lib/referer-parser/version.rb b/vendor/snowplow/referer-parser/ruby/lib/referer-parser/version.rb
deleted file mode 100644
index 3a86168a6..000000000
--- a/vendor/snowplow/referer-parser/ruby/lib/referer-parser/version.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright (c) 2012-2013 Snowplow Analytics Ltd. All rights reserved.
-#
-# This program is licensed to you under the Apache License Version 2.0,
-# and you may not use this file except in compliance with the Apache License Version 2.0.
-# You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the Apache License Version 2.0 is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.
-
-# Original Author:: Yali Sassoon (mailto:support@snowplowanalytics.com)
-# Copyright:: Copyright (c) 2012-2013 Snowplow Analytics Ltd
-# License:: Apache License Version 2.0
-
-module RefererParser
- NAME = "referer-parser"
- VERSION = "0.3.0"
-end
diff --git a/vendor/snowplow/referer-parser/ruby/referer-parser.gemspec b/vendor/snowplow/referer-parser/ruby/referer-parser.gemspec
deleted file mode 100644
index d544cda62..000000000
--- a/vendor/snowplow/referer-parser/ruby/referer-parser.gemspec
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (c) 2012-2013 Snowplow Analytics Ltd. All rights reserved.
-#
-# This program is licensed to you under the Apache License Version 2.0,
-# and you may not use this file except in compliance with the Apache License Version 2.0.
-# You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the Apache License Version 2.0 is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.
-
-# Author:: Yali Sassoon (mailto:support@snowplowanalytics.com)
-# Copyright:: Copyright (c) 2012-2013 Snowplow Analytics Ltd
-# License:: Apache License Version 2.0
-
-# -*- encoding: utf-8 -*-
-lib = File.expand_path('../lib', __FILE__)
-$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
-require 'referer-parser/version'
-
-Gem::Specification.new do |gem|
- gem.authors = ["Yali Sassoon", "Martin Loy", "Alex Dean", "Kelley Reynolds"]
- gem.email = ["support@snowplowanalytics.com"]
- gem.description = %q{Library for extracting marketing attribution data from referer URLs}
- gem.summary = %q{Library for extracting marketing attribution data (e.g. search terms) from referer (sic) URLs. This is used by Snowplow (http://github.com/snowplow/snowplow). Our hope is that this library (and referers.yml) will be extended by anyone interested in parsing referer URLs.}
- gem.homepage = "http://github.com/snowplow/referer-parser"
-
- gem.files = `git ls-files`.split($/)
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
- gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
- gem.name = RefererParser::NAME
- gem.version = RefererParser::VERSION
- gem.platform = Gem::Platform::RUBY
- gem.require_paths = ["lib"]
-
- gem.add_development_dependency "rspec", "~> 2.6"
- gem.add_development_dependency "rake", ">= 0.9.2"
-end
diff --git a/vendor/snowplow/referer-parser/ruby/spec/fixtures/internal.json b/vendor/snowplow/referer-parser/ruby/spec/fixtures/internal.json
deleted file mode 100644
index 222bdb709..000000000
--- a/vendor/snowplow/referer-parser/ruby/spec/fixtures/internal.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "internal": {
- "SnowPlow": {
- "domains": [
- "www.snowplowanalytics.com"
- ]
- }
- }
-}
diff --git a/vendor/snowplow/referer-parser/ruby/spec/fixtures/invalid.json b/vendor/snowplow/referer-parser/ruby/spec/fixtures/invalid.json
deleted file mode 100644
index 16eab30a6..000000000
--- a/vendor/snowplow/referer-parser/ruby/spec/fixtures/invalid.json
+++ /dev/null
@@ -1 +0,0 @@
-This has the right extension but is unparsable gibberish to json:{}}}}
diff --git a/vendor/snowplow/referer-parser/ruby/spec/fixtures/invalid.yml b/vendor/snowplow/referer-parser/ruby/spec/fixtures/invalid.yml
deleted file mode 100644
index f446fa240..000000000
--- a/vendor/snowplow/referer-parser/ruby/spec/fixtures/invalid.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-this:is invalid:yaml:
-!!!
diff --git a/vendor/snowplow/referer-parser/ruby/spec/fixtures/referer-tests.json b/vendor/snowplow/referer-parser/ruby/spec/fixtures/referer-tests.json
deleted file mode 100644
index b2341f739..000000000
--- a/vendor/snowplow/referer-parser/ruby/spec/fixtures/referer-tests.json
+++ /dev/null
@@ -1,234 +0,0 @@
-[
- {
- "spec": "Google Images search",
- "uri": "http://www.google.fr/imgres?q=Ogham+the+celtic+oracle&hl=fr&safe=off&client=firefox-a&hs=ZDu&sa=X&rls=org.mozilla:fr-FR:unofficial&tbm=isch&prmd=imvnsa&tbnid=HUVaj-o88ZRdYM:&imgrefurl=http://www.psychicbazaar.com/oracles/101-ogham-the-celtic-oracle-set.html&docid=DY5_pPFMliYUQM&imgurl=http://mdm.pbzstatic.com/oracles/ogham-the-celtic-oracle-set/montage.png&w=734&h=250&ei=GPdWUIePCOqK0AWp3oCQBA&zoom=1&iact=hc&vpx=129&vpy=276&dur=827&hovh=131&hovw=385&tx=204&ty=71&sig=104115776612919232039&page=1&tbnh=69&tbnw=202&start=0&ndsp=26&ved=1t:429,r:13,s:0,i:114&biw=1272&bih=826",
- "medium": "search",
- "source": "Google Images",
- "term": "Ogham the celtic oracle",
- "known": true
- },
- {
- "spec": "Yahoo! Images search",
- "uri": "http://it.images.search.yahoo.com/images/view;_ylt=A0PDodgQmGBQpn4AWQgdDQx.;_ylu=X3oDMTBlMTQ4cGxyBHNlYwNzcgRzbGsDaW1n?back=http%3A%2F%2Fit.images.search.yahoo.com%2Fsearch%2Fimages%3Fp%3DEarth%2BMagic%2BOracle%2BCards%26fr%3Dmcafee%26fr2%3Dpiv-web%26tab%3Dorganic%26ri%3D5&w=1064&h=1551&imgurl=mdm.pbzstatic.com%2Foracles%2Fearth-magic-oracle-cards%2Fcard-1.png&rurl=http%3A%2F%2Fwww.psychicbazaar.com%2Foracles%2F143-earth-magic-oracle-cards.html&size=2.8+KB&name=Earth+Magic+Oracle+Cards+-+Psychic+Bazaar&p=Earth+Magic+Oracle+Cards&oid=f0a5ad5c4211efe1c07515f56cf5a78e&fr2=piv-web&fr=mcafee&tt=Earth%2BMagic%2BOracle%2BCards%2B-%2BPsychic%2BBazaar&b=0&ni=90&no=5&ts=&tab=organic&sigr=126n355ib&sigb=13hbudmkc&sigi=11ta8f0gd&.crumb=IZBOU1c0UHU",
- "medium": "search",
- "source": "Yahoo! Images",
- "term": "Earth Magic Oracle Cards",
- "known": true
- },
- {
- "spec": "Powered by Google",
- "uri": "http://isearch.avg.com/pages/images.aspx?q=tarot+card+change&sap=dsp&lang=en&mid=209215200c4147d1a9d6d1565005540b-b0d4f81a8999f5981f04537c5ec8468fd5234593&cid=%7B50F9298B-C111-4C7E-9740-363BF0015949%7D&v=12.1.0.21&ds=AVG&d=7%2F23%2F2012+10%3A31%3A08+PM&pr=fr&sba=06oENya4ZG1YS6vOLJwpLiFdjG91ICt2YE59W2p5ENc2c4w8KvJb5xbvjkj3ceMjnyTSpZq-e6pj7GQUylIQtuK4psJU60wZuI-8PbjX-OqtdX3eIcxbMoxg3qnIasP0ww2fuID1B-p2qJln8vBHxWztkpxeixjZPSppHnrb9fEcx62a9DOR0pZ-V-Kjhd-85bIL0QG5qi1OuA4M1eOP4i_NzJQVRXPQDmXb-CpIcruc2h5FE92Tc8QMUtNiTEWBbX-QiCoXlgbHLpJo5Jlq-zcOisOHNWU2RSHYJnK7IUe_SH6iQ.%2CYT0zO2s9MTA7aD1mNjZmZDBjMjVmZDAxMGU4&snd=hdr&tc=test1",
- "medium": "search",
- "source": "Google",
- "term": "tarot card change",
- "known": true
- },
- {
- "spec": "Google search #1",
- "uri": "http://www.google.com/search",
- "medium": "search",
- "source": "Google",
- "term": null,
- "known": true
- },
- {
- "spec": "Google search #2",
- "uri": "http://www.google.com/search?q=gateway+oracle+cards+denise+linn&hl=en&client=safari",
- "medium": "search",
- "source": "Google",
- "term": "gateway oracle cards denise linn",
- "known": true
- },
- {
- "spec": "Yahoo! search",
- "uri": "http://es.search.yahoo.com/search;_ylt=A7x9QbwbZXxQ9EMAPCKT.Qt.?p=BIEDERMEIER+FORTUNE+TELLING+CARDS&ei=utf-8&type=685749&fr=chr-greentree_gc&xargs=0&pstart=1&b=11",
- "medium": "search",
- "source": "Yahoo!",
- "term": "BIEDERMEIER FORTUNE TELLING CARDS",
- "known": true
- },
- {
- "spec": "PriceRunner search",
- "uri": "http://www.pricerunner.co.uk/search?displayNoHitsMessage=1&q=wild+wisdom+of+the+faery+oracle",
- "medium": "search",
- "source": "PriceRunner",
- "term": "wild wisdom of the faery oracle",
- "known": true
- },
- {
- "spec": "Bing Images search",
- "uri": "http://www.bing.com/images/search?q=psychic+oracle+cards&view=detail&id=D268EDDEA8D3BF20AF887E62AF41E8518FE96F08",
- "medium": "search",
- "source": "Bing Images",
- "term": "psychic oracle cards",
- "known": true
- },
- {
- "spec": "IXquick search",
- "uri": "https://s3-us3.ixquick.com/do/search",
- "medium": "search",
- "source": "IXquick",
- "term": null,
- "known": true
- },
- {
- "spec": "AOL search",
- "uri": "http://aolsearch.aol.co.uk/aol/search?s_chn=hp&enabled_terms=&s_it=aoluk-homePage50&q=pendulums",
- "medium": "search",
- "source": "AOL",
- "term": "pendulums",
- "known": true
- },
- {
- "spec": "AOL search.com",
- "uri": "http://www.aolsearch.com/search?s_pt=hp&s_gl=NL&query=voorbeeld+cv+competenties&invocationType=tb50hpcnnbie7-nl-nl",
- "medium": "search",
- "source": "AOL",
- "term": "voorbeeld cv competenties",
- "known": true
- },
- {
- "spec": "Ask search",
- "uri": "http://uk.search-results.com/web?qsrc=1&o=1921&l=dis&q=pendulums&dm=ctry&atb=sysid%3D406%3Aappid%3D113%3Auid%3D8f40f651e7b608b5%3Auc%3D1346336505%3Aqu%3Dpendulums%3Asrc%3Dcrt%3Ao%3D1921&locale=en_GB",
- "medium": "search",
- "source": "Ask",
- "term": "pendulums",
- "known": true
- },
- {
- "spec": "Mail.ru search",
- "uri": "http://go.mail.ru/search?q=Gothic%20Tarot%20Cards&where=any&num=10&rch=e&sf=20",
- "medium": "search",
- "source": "Mail.ru",
- "term": "Gothic Tarot Cards",
- "known": true
- },
- {
- "spec": "Yandex search",
- "uri": "http://images.yandex.ru/yandsearch?text=Blue%20Angel%20Oracle%20Blue%20Angel%20Oracle&noreask=1&pos=16&rpt=simage&lr=45&img_url=http%3A%2F%2Fmdm.pbzstatic.com%2Foracles%2Fblue-angel-oracle%2Fbox-small.png",
- "medium": "search",
- "source": "Yandex Images",
- "term": "Blue Angel Oracle Blue Angel Oracle",
- "known": true
- },
- {
- "spec": "Ask toolbar search",
- "uri": "http://search.tb.ask.com/search/GGmain.jhtml?cb=AYY&pg=GGmain&p2=%5EAYY%5Exdm071%5EYYA%5Eid&n=77fdaa55&qid=c2678d9147654034bb8b16daa7bfb48c&ss=sub&st=hp&ptb=F9FC6C22-EAE6-4D1E-8126-A70119B6E02F&si=flvrunner&tpr=hst&searchfor=CARA+MEMASAK+CUMI+CUMI&ots=1219016089614",
- "medium": "search",
- "source": "Ask Toolbar",
- "term": "CARA MEMASAK CUMI CUMI",
- "known": true
- },
- {
- "spec": "Ask toolbar search #2",
- "uri": "http://search.tb.ask.com/search/GGmain.jhtml?&st=hp&p2=%5EZU%5Exdm458%5EYYA%5Eus&n=77fda1bd&ptb=F0B68CA5-4791-4376-BFCC-5F0100329FB6&si=CMKg9-nX07oCFSjZQgodcikACQ&tpr=hpsbsug&searchfor=test",
- "medium": "search",
- "source": "Ask Toolbar",
- "term": "test",
- "known": true
- },
- {
- "spec": "Voila search",
- "uri": "http://search.ke.voila.fr/?module=voila&bhv=web_fr&kw=test",
- "medium": "search",
- "source": "Voila",
- "term": "test",
- "known": true
- },
- {
- "spec": "Dale search",
- "uri": "http://www.dalesearch.com/?q=+lego.nl+%2Fclub&s=web&as=0&rlz=0&babsrc=HP_ss",
- "medium": "search",
- "source": "Dalesearch",
- "term": " lego.nl /club",
- "known": true
- },
- {
- "spec": "Twitter redirect",
- "uri": "http://t.co/chrgFZDb",
- "medium": "social",
- "source": "Twitter",
- "term": null,
- "known": true
- },
- {
- "spec": "Facebook social",
- "uri": "http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.psychicbazaar.com&h=yAQHZtXxS&s=1",
- "medium": "social",
- "source": "Facebook",
- "term": null,
- "known": true
- },
- {
- "spec": "Facebook mobile",
- "uri": "http://m.facebook.com/l.php?u=http%3A%2F%2Fwww.psychicbazaar.com%2Fblog%2F2012%2F09%2Fpsychic-bazaar-reviews-tarot-foundations-31-days-to-read-tarot-with-confidence%2F&h=kAQGXKbf9&s=1",
- "medium": "social",
- "source": "Facebook",
- "term": null,
- "known": true
- },
- {
- "spec": "Odnoklassniki",
- "uri": "http://www.odnoklassniki.ru/dk?cmd=logExternal&st._aid=Conversations_Openlink&st.name=externalLinkRedirect&st.link=http%3A%2F%2Fwww.psychicbazaar.com%2Foracles%2F187-blue-angel-oracle.html",
- "medium": "social",
- "source": "Odnoklassniki",
- "term": null,
- "known": true
- },
- {
- "spec": "Tumblr social #1",
- "uri": "http://www.tumblr.com/dashboard",
- "medium": "social",
- "source": "Tumblr",
- "term": null,
- "known": true
- },
- {
- "spec": "Tumblr w subdomain",
- "uri": "http://psychicbazaar.tumblr.com/",
- "medium": "social",
- "source": "Tumblr",
- "term": null,
- "known": true
- },
- {
- "spec": "Yahoo! Mail",
- "uri": "http://36ohk6dgmcd1n-c.c.yom.mail.yahoo.net/om/api/1.0/openmail.app.invoke/36ohk6dgmcd1n/11/1.0.35/us/en-US/view.html/0",
- "medium": "email",
- "source": "Yahoo! Mail",
- "term": null,
- "known": true
- },
- {
- "spec": "Outlook.com mail",
- "uri": "http://co106w.col106.mail.live.com/default.aspx?rru=inbox",
- "medium": "email",
- "source": "Outlook.com",
- "term": null,
- "known": true
- },
- {
- "spec": "Orange Webmail",
- "uri": "http://webmail1m.orange.fr/webmail/fr_FR/read.html?FOLDER=SF_INBOX&IDMSG=8594&check=&SORTBY=31",
- "medium": "email",
- "source": "Orange Webmail",
- "term": null,
- "known": true
- },
- {
- "spec": "Internal HTTP",
- "uri": "http://www.snowplowanalytics.com/about/team",
- "medium": "internal",
- "source": "SnowPlow",
- "term": null,
- "known": true
- },
- {
- "spec": "Internal HTTPS",
- "uri": "https://www.snowplowanalytics.com/account/profile",
- "medium": "internal",
- "source": "SnowPlow",
- "term": null,
- "known": true
- }
-]
diff --git a/vendor/snowplow/referer-parser/ruby/spec/parser_spec.rb b/vendor/snowplow/referer-parser/ruby/spec/parser_spec.rb
deleted file mode 100644
index df619667a..000000000
--- a/vendor/snowplow/referer-parser/ruby/spec/parser_spec.rb
+++ /dev/null
@@ -1,181 +0,0 @@
-# Copyright (c) 2014 Inside Systems, Inc All rights reserved.
-#
-# This program is licensed to you under the Apache License Version 2.0,
-# and you may not use this file except in compliance with the Apache License Version 2.0.
-# You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the Apache License Version 2.0 is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.
-
-# Author:: Kelley Reynolds (mailto:kelley@insidesystems.net)
-# Copyright:: Copyright (c) 2014 Inside Systems, Inc
-# License:: Apache License Version 2.0
-
-require 'spec_helper'
-
-describe RefererParser::Parser do
- let(:remote_file) { "https://raw.githubusercontent.com/snowplow/referer-parser/master/ruby/data/referers.json" }
- let(:default_parser) { RefererParser::Parser.new }
- let(:internal_parser) { RefererParser::Parser.new(fixture('internal.json')) }
- let(:combined_parser) { RefererParser::Parser.new([RefererParser::Parser::DefaultFile, fixture('internal.json')]) }
- let(:remote_parser) { RefererParser::Parser.new(remote_file) }
- let(:domain_index) { parser.instance_variable_get(:@domain_index) }
- let(:name_hash) { parser.instance_variable_get(:@name_hash) }
-
- # This gets overridden for different parsers in subsections
- let(:parser) { default_parser }
-
- describe "exceptions" do
- it "should raise UnsupportedFormatError" do
- lambda { parser.update(__FILE__) }.should raise_error(RefererParser::UnsupportedFormatError)
- end
-
- it "should raise CorruptReferersError with invalid json" do
- lambda { parser.update(fixture('invalid.json')) }.should raise_error(RefererParser::CorruptReferersError)
- end
-
- it "should raise CorruptReferersError with invalid yaml" do
- lambda { parser.update(fixture('invalid.yml')) }.should raise_error(RefererParser::CorruptReferersError)
- end
-
- it "should raise CorruptReferersError with valid file with invalid data" do
- lambda { parser.update(fixture('referer-tests.json')) }.should raise_error(RefererParser::CorruptReferersError)
- end
-
- it "should raise InvalidUriError with insane" do
- lambda { parser.parse('>total gibberish<') }.should raise_error(RefererParser::InvalidUriError)
- end
-
- it "should raise InvalidUriError with non http(s)" do
- lambda { parser.parse('ftp://ftp.really.com/whatever.json') }.should raise_error(RefererParser::InvalidUriError)
- end
- end
-
- describe "with the default parser" do
- it "should have a non-empty domain_index" do
- domain_index.should_not be_empty
- end
-
- it "should have a non-empty name_hash" do
- name_hash.should_not be_empty
- end
-
- it "should be clearable" do
- parser.clear!
- name_hash.should be_empty
- domain_index.should be_empty
- end
-
- it "should be updatable" do
- size = domain_index.size
- parser.update(fixture('internal.json'))
- domain_index.size.should > size
- end
- end
-
- describe "with the internal parser" do
- let(:parser) { internal_parser }
-
- it "should have internal mediums only" do
- domain_index.each_value do |(arr)|
- path, name_key = arr[0], arr[1]
- name_hash[name_key][:medium].should == 'internal'
- end
- end
- end
-
- describe "with the remote parser" do
- let(:parser) { remote_parser }
-
- # These are combined here to reduce network fetches
- it "should have a non-empty domain_index and name_hash" do
- domain_index.should_not be_empty
- name_hash.should_not be_empty
- end
- end
-
- describe "sample fixtures" do
- let(:parser) { combined_parser }
- # Include our internal data as well
- JSON.parse(File.read(File.join(File.dirname(__FILE__), 'fixtures', 'referer-tests.json'))).each do |fixture|
- it fixture['spec'] do
- parsed_as_string, parsed_as_uri = nil, nil
- lambda { parsed_as_string = parser.parse(fixture['uri']) }.should_not raise_error
- lambda { parsed_as_uri = parser.parse(URI.parse(fixture['uri'])) }.should_not raise_error
-
- ['source', 'term', 'known', 'medium'].each do |key|
- parsed_as_uri[key.to_sym].should == fixture[key]
- parsed_as_string[key.to_sym].should == fixture[key]
- end
- end
- end
- end
-
- describe "general behavior" do
- it "should return the better result when the referer contains two or more parameters" do
- parsed = parser.parse("http://search.tiscali.it/?tiscalitype=web&collection=web&q=&key=hello")
- parsed[:term].should == "hello"
- end
-
- it "should return the better result when the referer contains same parameters" do
- parsed = parser.parse("http://search.tiscali.it/?tiscalitype=web&collection=web&key=&key=hello")
- parsed[:term].should == "hello"
- end
-
- it "should return the normalized domain" do
- parsed = parser.parse("http://it.images.search.YAHOO.COM/images/view;_ylt=A0PDodgQmGBQpn4AWQgdDQx.;_ylu=X3oDMTBlMTQ4cGxyBHNlYwNzcgRzbGsDaW1n?back=http%3A%2F%2Fit.images.search.yahoo.com%2Fsearch%2Fimages%3Fp%3DEarth%2BMagic%2BOracle%2BCards%26fr%3Dmcafee%26fr2%3Dpiv-web%26tab%3Dorganic%26ri%3D5&w=1064&h=1551&imgurl=mdm.pbzstatic.com%2Foracles%2Fearth-magic-oracle-cards%2Fcard-1.png&rurl=http%3A%2F%2Fwww.psychicbazaar.com%2Foracles%2F143-earth-magic-oracle-cards.html&size=2.8+KB&name=Earth+Magic+Oracle+Cards+-+Psychic+Bazaar&p=Earth+Magic+Oracle+Cards&oid=f0a5ad5c4211efe1c07515f56cf5a78e&fr2=piv-web&fr=mcafee&tt=Earth%2BMagic%2BOracle%2BCards%2B-%2BPsychic%2BBazaar&b=0&ni=90&no=5&ts=&tab=organic&sigr=126n355ib&sigb=13hbudmkc&sigi=11ta8f0gd&.crumb=IZBOU1c0UHU")
- parsed[:domain].should == "images.search.yahoo.com"
- end
- end
-
- describe "optimize_index" do
- let(:domains) { ['fnord.com', 'fnord.com', 'fnord.com/path'] }
-
- before do
- parser.add_referer('internal', 'Fnord', domains)
- end
-
- it "should have out of order and duplicate domains before optimization" do
- domain_index['fnord.com'].transpose.first.should == ['/', '/', '/path']
- end
-
- it "should have out of order domains before optimization" do
- parser.optimize_index!
- domain_index['fnord.com'].transpose.first.should == ['/path', '/']
- end
- end
-
- describe "add_referer" do
- it "should add a referer to the domain_index" do
- domain_index['fnord.com'].should be_nil
- parser.add_referer('internal', 'Fnord', 'fnord.com')
- domain_index['fnord.com'].should_not be_nil
- end
-
- it "should add a referer with multiple domains to the domain_index" do
- domain_index['fnord.com'].should be_nil
- domain_index['boo.com'].should be_nil
- parser.add_referer('internal', 'Fnord', ['fnord.com', 'boo.com'])
- domain_index['fnord.com'].should_not be_nil
- domain_index['boo.com'].should_not be_nil
- end
-
- it "should add a referer to the name_hash" do
- name_hash['fnord.com-internal'].should be_nil
- parser.add_referer('internal', 'Fnord', 'fnord.com')
- name_hash['Fnord-internal'].should_not be_nil
- end
-
- it "should add parameters to the name_hash" do
- parser.add_referer('internal', 'Fnord', 'fnord.com', ['Q', 'q'])
- name_hash['Fnord-internal'][:parameters].should == ['Q', 'q']
- end
-
- it "should add a single parameter to the name_hash" do
- parser.add_referer('internal', 'Fnord', 'fnord.com', 'q')
- name_hash['Fnord-internal'][:parameters].should == ['q']
- end
- end
-end
diff --git a/vendor/snowplow/referer-parser/ruby/spec/spec_helper.rb b/vendor/snowplow/referer-parser/ruby/spec/spec_helper.rb
deleted file mode 100644
index 913035413..000000000
--- a/vendor/snowplow/referer-parser/ruby/spec/spec_helper.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (c) 2014 Inside Systems, Inc All rights reserved.
-#
-# This program is licensed to you under the Apache License Version 2.0,
-# and you may not use this file except in compliance with the Apache License Version 2.0.
-# You may obtain a copy of the Apache License Version 2.0 at http://www.apache.org/licenses/LICENSE-2.0.
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the Apache License Version 2.0 is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.
-
-# Author:: Kelley Reynolds (mailto:kelley@insidesystems.net)
-# Copyright:: Copyright (c) 2014 Inside Systems, Inc
-# License:: Apache License Version 2.0
-
-
-require 'rubygems'
-require 'bundler'
-Bundler.setup(:default, :test)
-
-require 'yaml'
-require 'rspec'
-require 'referer-parser'
-require 'uri'
-require 'json'
-
-module Helpers
- def fixture(filename)
- File.join(File.dirname(__FILE__), 'fixtures', filename)
- end
-end
-
-RSpec.configure do |config|
- config.include Helpers
-end
diff --git a/vendor/snowplow/referer-parser/sync_data.py b/vendor/snowplow/referer-parser/sync_data.py
deleted file mode 100755
index c9a2aaa41..000000000
--- a/vendor/snowplow/referer-parser/sync_data.py
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (c) 2013 Martin Katrenik, Snowplow Analytics Ltd. All rights reserved.
-#
-# This program is licensed to you under the Apache License Version 2.0,
-# and you may not use this file except in compliance with the Apache
-# License Version 2.0.
-# You may obtain a copy of the Apache License Version 2.0 at
-# http://www.apache.org/licenses/LICENSE-2.0.
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the Apache License Version 2.0 is
-# distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
-# express or implied.
-# See the Apache License Version 2.0 for the specific language
-# governing permissions and limitations there under.
-
-# Authors:: Martin Katrenik, Alex Dean (mailto:support@snowplowanalytics.com)
-# Copyright:: Copyright (c) 2013 Martin Katrenik, Snowplow Analytics Ltd
-# License:: Apache License Version 2.0
-
-# Syncs common referer-parser resources to the
-# language-specific sub projects.
-#
-# Syncs:
-# 1. The referers.yml, plus a generated JSON equivalent
-# 2. The referer-tests.json
-#
-# Finishes by committing the synchronized resources.
-
-import os
-import shutil
-import json
-import yaml
-import subprocess
-
-
-root_path = os.path.dirname(__file__)
-
-# Source paths
-REFERER_SOURCE = os.path.join(root_path, 'resources', 'referers.yml')
-REFERER_JSON_OUT = 'referers.json'
-TEST_SOURCE = os.path.join(root_path, 'resources', 'referer-tests.json')
-
-# Target paths
-REFERER_TARGETS = [
- os.path.join(root_path, "ruby","data"),
- os.path.join(root_path, "java-scala","src","main","resources"),
- os.path.join(root_path, "python","referer_parser","data"),
- os.path.join(root_path, "nodejs","data"),
- os.path.join(root_path, "dotnet","RefererParser","Resources"),
- os.path.join(root_path, "php","data"),
- os.path.join(root_path, "go", "data")
-]
-TEST_TARGETS = [
- os.path.join(root_path, "java-scala","src","test","resources"),
- # Add remainder as paths determined etc
-]
-
-# JSON builder
-def build_json():
- searches = yaml.load(open(REFERER_SOURCE))
- return json.dumps(searches, sort_keys = False, indent = 4)
-
-JSON = build_json()
-
-
-# File ops
-def copy_file(src, dest):
- try:
- print "copying {0} to {1} ".format(src, dest)
- shutil.copy(src, dest)
- except shutil.Error as e:
- print('Error: %s' % e)
- except IOError as e:
- print('IOError: %s' % e.strerror)
-
-def write_file(content, dest):
- print "writing to {0} ".format(dest)
- with open(dest, 'w') as f:
- f.write(content)
-
-
-# Sync process
-def sync_referers_to(dest):
- copy_file(REFERER_SOURCE, dest)
- write_file(JSON, os.path.join(dest, REFERER_JSON_OUT))
-
-def sync_tests_to(dest):
- copy_file(TEST_SOURCE, dest)
-
-for dest in REFERER_TARGETS:
- sync_referers_to(dest)
-
-for dest in TEST_TARGETS:
- sync_tests_to(dest)
-
-
-# Commit on current branch
-commit = "git commit {0}".format(" ".join(REFERER_TARGETS + TEST_TARGETS))
-msg = "\"Updated {0}, {1} and {2} in sub-folder following update(s) to master copy\"".format(REFERER_SOURCE, REFERER_JSON_OUT, TEST_SOURCE)
-subprocess.call(commit + ' -m' + msg, shell=True)
diff --git a/vendor/snowplow/referer-parser/vagrant/.gitignore b/vendor/snowplow/referer-parser/vagrant/.gitignore
deleted file mode 100644
index 1b4b29ff1..000000000
--- a/vendor/snowplow/referer-parser/vagrant/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-.peru
-oss-playbooks
-ansible
diff --git a/vendor/snowplow/referer-parser/vagrant/ansible.hosts b/vendor/snowplow/referer-parser/vagrant/ansible.hosts
deleted file mode 100644
index 588fa08c7..000000000
--- a/vendor/snowplow/referer-parser/vagrant/ansible.hosts
+++ /dev/null
@@ -1,2 +0,0 @@
-[vagrant]
-127.0.0.1:2222
diff --git a/vendor/snowplow/referer-parser/vagrant/peru.yaml b/vendor/snowplow/referer-parser/vagrant/peru.yaml
deleted file mode 100644
index e7fdf41cf..000000000
--- a/vendor/snowplow/referer-parser/vagrant/peru.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-imports:
- ansible: ansible
- ansible_playbooks: oss-playbooks
-
-curl module ansible:
- # Equivalent of git cloning tags/v1.6.6 but much, much faster
- url: https://codeload.github.com/ansible/ansible/zip/69d85c22c7475ccf8169b6ec9dee3ee28c92a314
- unpack: zip
- export: ansible-69d85c22c7475ccf8169b6ec9dee3ee28c92a314
-
-git module ansible_playbooks:
- url: https://github.com/snowplow/ansible-playbooks.git
- # Comment out to fetch a specific rev instead of master:
- # rev: xxx
diff --git a/vendor/snowplow/referer-parser/vagrant/up.bash b/vendor/snowplow/referer-parser/vagrant/up.bash
deleted file mode 100755
index 7450ae897..000000000
--- a/vendor/snowplow/referer-parser/vagrant/up.bash
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/bash
-set -e
-
-vagrant_dir=/vagrant/vagrant
-bashrc=/home/vagrant/.bashrc
-
-echo "========================================"
-echo "INSTALLING PERU AND ANSIBLE DEPENDENCIES"
-echo "----------------------------------------"
-apt-get update
-apt-get install -y language-pack-en git unzip libyaml-dev python3-pip python-yaml python-paramiko python-jinja2
-
-echo "==============="
-echo "INSTALLING PERU"
-echo "---------------"
-sudo pip3 install peru
-
-echo "======================================="
-echo "CLONING ANSIBLE AND PLAYBOOKS WITH PERU"
-echo "---------------------------------------"
-cd ${vagrant_dir} && peru sync -v
-echo "... done"
-
-env_setup=${vagrant_dir}/ansible/hacking/env-setup
-hosts=${vagrant_dir}/ansible.hosts
-
-echo "==================="
-echo "CONFIGURING ANSIBLE"
-echo "-------------------"
-touch ${bashrc}
-echo "source ${env_setup}" >> ${bashrc}
-echo "export ANSIBLE_HOSTS=${hosts}" >> ${bashrc}
-echo "... done"
-
-echo "=========================================="
-echo "RUNNING PLAYBOOKS WITH ANSIBLE*"
-echo "* no output while each playbook is running"
-echo "------------------------------------------"
-while read pb; do
- su - -c "source ${env_setup} && ${vagrant_dir}/ansible/bin/ansible-playbook ${vagrant_dir}/${pb} --connection=local --inventory-file=${hosts}" vagrant
-done <${vagrant_dir}/up.playbooks
-
-guidance=${vagrant_dir}/up.guidance
-
-if [ -f ${guidance} ]; then
- echo "==========="
- echo "PLEASE READ"
- echo "-----------"
- cat $guidance
-fi
diff --git a/vendor/snowplow/referer-parser/vagrant/up.guidance b/vendor/snowplow/referer-parser/vagrant/up.guidance
deleted file mode 100644
index 0575dbc62..000000000
--- a/vendor/snowplow/referer-parser/vagrant/up.guidance
+++ /dev/null
@@ -1,3 +0,0 @@
-To get started:
-vagrant ssh
-cd /vagrant
diff --git a/vendor/snowplow/referer-parser/vagrant/up.playbooks b/vendor/snowplow/referer-parser/vagrant/up.playbooks
deleted file mode 100644
index d8a0fc1f5..000000000
--- a/vendor/snowplow/referer-parser/vagrant/up.playbooks
+++ /dev/null
@@ -1,3 +0,0 @@
-oss-playbooks/java6.yml
-oss-playbooks/scala.yml
-oss-playbooks/sbt.yml
diff --git a/vendor/symfony/var-dumper/Caster/Caster.php b/vendor/symfony/var-dumper/Caster/Caster.php
index fd228045f..81e238c32 100644
--- a/vendor/symfony/var-dumper/Caster/Caster.php
+++ b/vendor/symfony/var-dumper/Caster/Caster.php
@@ -47,6 +47,15 @@ class Caster
*/
public static function castObject($obj, string $class, bool $hasDebugInfo = false): array
{
+ if ($hasDebugInfo) {
+ try {
+ $debugInfo = $obj->__debugInfo();
+ } catch (\Exception $e) {
+ // ignore failing __debugInfo()
+ $hasDebugInfo = false;
+ }
+ }
+
$a = $obj instanceof \Closure ? [] : (array) $obj;
if ($obj instanceof \__PHP_Incomplete_Class) {
@@ -82,7 +91,7 @@ class Caster
}
}
- if ($hasDebugInfo && \is_array($debugInfo = $obj->__debugInfo())) {
+ if ($hasDebugInfo && \is_array($debugInfo)) {
foreach ($debugInfo as $k => $v) {
if (!isset($k[0]) || "\0" !== $k[0]) {
$k = self::PREFIX_VIRTUAL.$k;
diff --git a/vendor/symfony/var-dumper/Caster/ClassStub.php b/vendor/symfony/var-dumper/Caster/ClassStub.php
index b6c45456d..758fe57bb 100644
--- a/vendor/symfony/var-dumper/Caster/ClassStub.php
+++ b/vendor/symfony/var-dumper/Caster/ClassStub.php
@@ -56,7 +56,7 @@ class ClassStub extends ConstStub
}
if (false !== strpos($identifier, "class@anonymous\0")) {
- $this->value = $identifier = preg_replace_callback('/class@anonymous\x00.*?\.php0x?[0-9a-fA-F]++/', function ($m) {
+ $this->value = $identifier = preg_replace_callback('/class@anonymous\x00.*?\.php(?:0x?|:)[0-9a-fA-F]++/', function ($m) {
return class_exists($m[0], false) ? get_parent_class($m[0]).'@anonymous' : $m[0];
}, $identifier);
}
diff --git a/vendor/symfony/var-dumper/Caster/ExceptionCaster.php b/vendor/symfony/var-dumper/Caster/ExceptionCaster.php
index 2f7b4076c..a2a21a56e 100644
--- a/vendor/symfony/var-dumper/Caster/ExceptionCaster.php
+++ b/vendor/symfony/var-dumper/Caster/ExceptionCaster.php
@@ -283,7 +283,7 @@ class ExceptionCaster
unset($a[$xPrefix.'string'], $a[Caster::PREFIX_DYNAMIC.'xdebug_message'], $a[Caster::PREFIX_DYNAMIC.'__destructorException']);
if (isset($a[Caster::PREFIX_PROTECTED.'message']) && false !== strpos($a[Caster::PREFIX_PROTECTED.'message'], "class@anonymous\0")) {
- $a[Caster::PREFIX_PROTECTED.'message'] = preg_replace_callback('/class@anonymous\x00.*?\.php0x?[0-9a-fA-F]++/', function ($m) {
+ $a[Caster::PREFIX_PROTECTED.'message'] = preg_replace_callback('/class@anonymous\x00.*?\.php(?:0x?|:)[0-9a-fA-F]++/', function ($m) {
return class_exists($m[0], false) ? get_parent_class($m[0]).'@anonymous' : $m[0];
}, $a[Caster::PREFIX_PROTECTED.'message']);
}
diff --git a/vendor/symfony/var-dumper/Cloner/AbstractCloner.php b/vendor/symfony/var-dumper/Cloner/AbstractCloner.php
index 9b8d86a43..4bf22aff9 100644
--- a/vendor/symfony/var-dumper/Cloner/AbstractCloner.php
+++ b/vendor/symfony/var-dumper/Cloner/AbstractCloner.php
@@ -46,6 +46,7 @@ abstract class AbstractCloner implements ClonerInterface
'Doctrine\Common\Proxy\Proxy' => ['Symfony\Component\VarDumper\Caster\DoctrineCaster', 'castCommonProxy'],
'Doctrine\ORM\Proxy\Proxy' => ['Symfony\Component\VarDumper\Caster\DoctrineCaster', 'castOrmProxy'],
'Doctrine\ORM\PersistentCollection' => ['Symfony\Component\VarDumper\Caster\DoctrineCaster', 'castPersistentCollection'],
+ 'Doctrine\Persistence\ObjectManager' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
'DOMException' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castException'],
'DOMStringList' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'],
diff --git a/vendor/ua-parser/uap-php/.gitignore b/vendor/ua-parser/uap-php/.gitignore
deleted file mode 100644
index 55890f919..000000000
--- a/vendor/ua-parser/uap-php/.gitignore
+++ /dev/null
@@ -1,14 +0,0 @@
-# Composer
-/vendor
-composer.lock
-
-# Windows
-*umbs.db
-Desktop.ini
-$RECYCLE.BIN/
-
-# Mac
-.DS_Store
-
-# PHPStorm
-.idea/
diff --git a/vendor/ua-parser/uap-php/.gitmodules b/vendor/ua-parser/uap-php/.gitmodules
deleted file mode 100644
index 6d61431e8..000000000
--- a/vendor/ua-parser/uap-php/.gitmodules
+++ /dev/null
@@ -1,4 +0,0 @@
-[submodule "uap-core"]
- path = uap-core
- url = https://github.com/ua-parser/uap-core.git
- branch = master
diff --git a/vendor/ua-parser/uap-php/.travis.yml b/vendor/ua-parser/uap-php/.travis.yml
deleted file mode 100644
index c8e5f9609..000000000
--- a/vendor/ua-parser/uap-php/.travis.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-language: php
-
-before_script:
- - phpenv config-rm xdebug.ini || true
-
-php:
- - 5.4
- - 5.5
- - 5.6
- - 7.0
- - 7.1
- - 7.2
- - 7.3
- - nightly
- - hhvm
-
-matrix:
- allow_failures:
- - php: hhvm
- - php: nightly
- include:
- - php: 5.3
- dist: precise
-
-install:
- - composer install
-
-script:
- - ./vendor/bin/phpunit
-
-sudo: false
diff --git a/vendor/ua-parser/uap-php/CHANGELOG.md b/vendor/ua-parser/uap-php/CHANGELOG.md
deleted file mode 100644
index 08fe12b12..000000000
--- a/vendor/ua-parser/uap-php/CHANGELOG.md
+++ /dev/null
@@ -1,208 +0,0 @@
-# Changelog
-
-## 3.4.2
- - Update uap-core
-
-## 3.4.1
- - Fix a regex delimiter issue with uap-core
- - Bundle regex.php with uap-php
-
-## 3.4.0
- - ADD: device Parsing with brand model and case insensitive testing
- - Use `peer_name` instead of `CN_match` for PHP >=5.6
- - Advertise Gitter chat for support requests
- - Include uap-core as a git submodule
-
-## 3.3.1
- - PSR-4 ready
- - Self repository, less useless files
-
-## 3.3.0
- - Use composer for dependency management
- - Introduce namespaces
- - Removing legacy library dependencies
- - Use PHPUnit for testing
- - Make all tests pass, fix all the remaining bugs
- - Introduce specific result objects
- - Comply with PSR-X coding standards:
- * `UAParser` class is now `UAParser\Parser`
- * Typed result objects: `Parser::parse()` returns `UAParser\Result\Client`, `Client::$os` is a `UAParser\Result\OperatingSystem` and `Client::$device` is a `UAParser\Result\Device`
- * `toString()` and `toVersion()` are now methods
- * Properties now use camelCase, not underscore_case.
- - Use Travis for CI
- - Update README
- - Port command line tool to Symfony CLI
- - Secure updating: SSL certificate verification, hashing, try to do atomic updates
- - Restore fetching YAML file only (without generating JSON)
-
-## 2.1.1
- - FIX: making sure patch minor is being populated correctly when showing a mismatch
-
-## 2.1.0
- - ADD: support for custom regexes.json files (via @pravindahal)
- - FIX: formerly private vars/functions are now protected (via @pravindahal)
- - FIX: command line tool gets 'pretty' option for PHP 5.4 users (via @skyzyx)
- - FIX: refactored the regexes.yaml test suite
- - FIX: now check to see if allow_url_fopen is set to 'On' before trying to download the YAML file from the command line
- - THX: thanks to @pravindahal and @skyzyx for the pull requests
-
-## 2.0.1
- - FIX: renamed uaParser, osParser, & deviceParser to uaParse, osParse, & deviceParse to address a bug with uaParser being recognized as the contruct function for the overall lib
- - FIX: updated the test lib so that device failures are properly formatted
-
-## 2.0.0
- - Summary:
- * the `UAParser` class is now dynamic
- * properties are nested _(e.g. $result->family is now $result->ua->family)_
- * a user agent string is now required when using `parse()`. the auto-magical "use the server provided UA" is no longer supported.
- * `uaParse()`, `osParse()`, and `deviceParse()` are public and can be used to just return those select bits for a given user agent string.
- * the `is*` boolean properties _(e.g. isMobile)_ have been dropped. they now exist as part of the `ua-classifier` project.
- - ADD: toString() converts the version bits and family into a simple string
- - ADD: toVersionString() converts the version bits into a simple string
- - ADD: toFullString() combines the UA and OS family and version bits
- - ADD: "convert" flag for uaparser-cli.php
- - ADD: "pull & save just regexes.yaml" flag for uaparser-cli.php
- - FIX: library is now a dynamic class
- - FIX: attributes are now nested & populated like the other ua-parser libraries (e.g. $result->family is now $result->ua->family)
- - FIX: uaParser(), osParser(), and deviceParser() are now public functions
- - FIX: saves regexes.yaml as JSON for better performance
- - FIX: removed the __DIR__ "fix"
- - FIX: Apache log parsing now returns results when UA or OS families are set to "Other" and the device is listed as a smartphone or generic feature phone
- - FIX: all tabs are now spaces
- - FIX: a UA is now run against all three parsers
- - FIX: renamed $debug var to $log to better reflect what it does
- - DEL: is* boolean attributes (e.g. isMobile) have been removed
- - DEL: will no longer auto-parse $_SERVER['HTTP_USER_AGENT'] if available
- - DEL: tests no longer run against pgts_browser_list.yaml
- - THX: thanks to @rjd22 for the dynamic class code/fix
-
-## 1.5.0
- - ADD: command line interface is now in its own file (via @Synchro)
- - ADD: command line utility now supports parsing an Apache log file & recording the results
- - ADD: command line utility can now parse a supplied user-agent string and push out a simple list or JSON
- - ADD: test suite that uses the ua-parser project's test resources
- - FIX: numerous comment & spacing fixes (via @Synchro & @Krinkle)
- - FIX: remove PHP4 version of spyc (via @Synchro)
- - FIX: remove .svn dirs in spyc (via @lopezdonaque)
- - FIX: notes that the PHP 5.2 fix really was for 5.1 (via @Synchro) (knew this, i was lazy)
- - FIX: lib now returns an object no matter what. now matches other ua-parser libs (via @Krinkle)
- - FIX: checks that $_SERVER attr is set before including it. should be better for command line use.
- - FIX: family attr now properly set in an edge case
- - FIX: if regexes.yaml picks up bad slashes the PHP lib will account for it (e.g. GoogleTV regex)
- - THX: thanks to @Krinkle and @Synchro for the numerous fixes
-
-## 1.4.5
- - FIX: an embarrassing debug print survived the last edit
- - THX: thanks to @memakeit for dropping the bug report
-
-## 1.4.4
- - FIX: made sure that the regex file is only loaded once if running the library multiple times. performance boost.
- - FIX: added support for identifying various game devices as mobile devices
- - THX: thanks to @rjd22 for pointing out the perf issue
-
-## 1.4.3
- - FIX: added support for patch & family attributes to sort of match the other libraries
-
-## 1.4.2
- - FIX: notice if regexes.yaml is missing parens (e.g. match $1) for device & os names
-
-## 1.4.1
- - FIX: notice when using UAParser from the command line
-
-## 1.4.0
- - ADD: silent mode for the UA::get() method
- - ADD: nobackup mode for the UA::get() method
- - ADD: example of how to do a redirect with ua-parser-php
- - The following were changes to regexes.yaml:
- * ADD: support for Google Earth browser
- * ADD: another regex for Firefox Mobile
- * ADD: support for Firefox Alpha builds
- * ADD: support for Sogou Explorer
- * ADD: support for the Raven for Mac browser
- * ADD: support for WebKit Nightly builds (though slightly pointless)
- * FIX: better pattern matching for the Pale Moon browser
-
-## 1.3.2
- - FIX: addressed false "tablet" classification for opera mobile & mini on android
- - The following were changes to regexes.yaml:
- * ADD: support for Tizen Browser (aka SLP Browser) from Samsung
- * FIX: support for a new look Polaris 8.0 user agent string
- * FIX: modified where the Epiphany Browser check happens
-
-## 1.3.1
- - FIX: now doing some sanity cleaning on the user agent strings
- - FIX: added a smarter default if the user agent isn't recognized at all
-
-## 1.3.0
- - FIX: now points to Tobie's ua-parser project for the latest greatest YAML file
- - FIX: YAML file is now standardized as regexes.yaml instead of user_agents_regex.yaml
- - FIX: minor NOTICE issues resolved for very select UAs
-
-## 1.2.2
- - The following were changes to user_agents_regex.yaml:
- * ADD: support for UC Browser
-
-## 1.2.1
- - The following were changes to user_agents_regex.yaml:
- * ADD: support for android 4 user agents that have a dash in them
-
-## 1.2.0
- - FIX: should be compatible with PHP 5.2
- - FIX: addressed STRICT mode errors
- - FIX: addressed NOTICE for a missing variable
- - FIX: if isTablet is set to true then isMobile is set to false (mobile to me means phone)
- - THX: Thanks to Mike Bond of WVU Libraries for pointing out the 5.2 incompatibility
-
-## 1.1.0
- - FIX: a number of fixes from bryan shelton
- - The following were changes to user_agents_regex.yaml:
- * ADD: support for Chrome Mobile
-
-## 1.0.0
- - just because i don't expect to update this anytime soon and ppl report it's working
-
-## 0.3.1
- - FIX: swapped nil for null in parse()
- - FIX: smarter/saner defaults
- - FIX: now using isset() for family_replacement
- - THX: thanks to bryan shelton for these fixes
-
-## 0.3.0
- - ADD: can now supply a specific UA to be checked
- - ADD: if the UA contains 'tablet' isTablet is marked true
- - ADD: for certain mobile OSs they report a desktop browser. marking them mobile now.
- - FIX: tablet listing should now be better
- - FIX: the list of mobile browsers was updated
- - FIX: made sure that certain checks won't fail as "false" if a version number was a 0
- - FIX: for the device check, if it returns spider as a result it no longer marks it as mobile
- - FIX: added more mobile browsers to that specific check
- - The following were changes to user_agents_regex.yaml:
- * ADD: symphony, minimo, teleca, semc, up.browser, bunjaloo, jasmine, & brew browsers supported
- * ADD: windows mobile 6.5 os support
- * ADD: amoi, asus, bird, dell, docomo, huawei, i-mate, kyocera, lenovo, lg, microsoft kind,
- motorola, philips, samsung, softbank, & sony ericsson device checks
- * FIX: mobile firefox, opera mobile & mini, obigo, polaris, nokiabrowser, ie mobile,
- android, & mobile safari browser checks
- * FIX: iOS support
- * FIX: htc, android, palm/hp, kindle, ios, generic feature phones & spider device checks
-
-## 0.2.0
- - ADD: added isMobile support
- - ADD: added isTablet support
- - ADD: added isComputer support
- - ADD: added isSpider support
-
-## 0.1.0
- - The following were changes to user_agents_regex.yaml:
- * expanded support for Symbia & Nokia Devices,
- * cleaned up some slashies,
- * added Mobile Safari as the family replacement for iOS devices,
- * better support for longer HTC device names
- * added feature phones to the device check
- * added generic smartphones to the device check
- * added AvantGo to the ua check
- * tweaked a lot of the nokia checks
- * added kindle support to the device section
- * added a generic catch for android devices.
- * added support for blackberry devices
- * changed the blackberry family to 'blackberry webkit' when it's a webkit browser
diff --git a/vendor/ua-parser/uap-php/LICENSE b/vendor/ua-parser/uap-php/LICENSE
deleted file mode 100644
index 884be7565..000000000
--- a/vendor/ua-parser/uap-php/LICENSE
+++ /dev/null
@@ -1,11 +0,0 @@
-Copyright (c) 2011-2012 Dave Olsen, http://dmolsen.com
-Licensed under the MIT license
-
-ua-parser-php is a PHP-based pseudo-port of the ua-parser project. Learn more about the ua-parser project at:
-
-http://code.google.com/p/ua-parser/
-
-The user agents data from the ua-parser project is licensed under the Apache license.
-spyc-0.5, for loading the YAML, is licensed under the MIT license.
-The initial list of generic feature phones & smartphones came from Mobile Web OSP under the MIT license
-The initial list of spiders was taken from Yiibu's profile project under the MIT license.
\ No newline at end of file
diff --git a/vendor/ua-parser/uap-php/README.md b/vendor/ua-parser/uap-php/README.md
deleted file mode 100644
index 52e6fd493..000000000
--- a/vendor/ua-parser/uap-php/README.md
+++ /dev/null
@@ -1,127 +0,0 @@
-# ua-parser PHP Library #
-
-[](https://gitter.im/ua-parser/uap-php?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](https://travis-ci.org/ua-parser/uap-php) [](http://isitmaintained.com/project/ua-parser/uap-php "Average time to resolve an issue") [](http://isitmaintained.com/project/ua-parser/uap-php "Percentage of issues still open")
-[](https://packagist.org/packages/ua-parser/uap-php)
-[](https://packagist.org/packages/ua-parser/uap-php)
-[](https://packagist.org/packages/ua-parser/uap-php)
-
-This is the PHP library for the [uap-core](https://github.com/ua-parser/uap-core) project.
-
-## Installation ##
-Add `ua-parser/uap-php` to the require section of your `composer.json` file and run `composer update`.
-
-## Demo ##
-
-You can [test the PHP library](http://uaparser.dmolsen.com/) with your browser.
-
-## Usage ##
-
-Straightforward:
-
-```php
-require_once 'vendor/autoload.php';
-use UAParser\Parser;
-
-$ua = "Mozilla/5.0 (Macintosh; Intel Ma...";
-
-$parser = Parser::create();
-$result = $parser->parse($ua);
-
-print $result->ua->family; // Safari
-print $result->ua->major; // 6
-print $result->ua->minor; // 0
-print $result->ua->patch; // 2
-print $result->ua->toString(); // Safari 6.0.2
-print $result->ua->toVersion(); // 6.0.2
-
-print $result->os->family; // Mac OS X
-print $result->os->major; // 10
-print $result->os->minor; // 7
-print $result->os->patch; // 5
-print $result->os->patchMinor; // [null]
-print $result->os->toString(); // Mac OS X 10.7.5
-print $result->os->toVersion(); // 10.7.5
-
-print $result->device->family; // Other
-
-print $result->toString(); // Safari 6.0.2/Mac OS X 10.7.5
-print $result->originalUserAgent; // Mozilla/5.0 (Macintosh; Intel Ma...
-```
-
-## Using Your Own Custom regexes.php File ##
-
-You can use your own `regexes.php` file if you've customized the official file. I *strongly* encourage you to push back any changes you may have so others can benefit. That said, to use your own do the following:
-
-```php
-require_once 'vendor/autoload.php';
-use UAParser\Parser;
-
-$parser = Parser::create("path/to/custom/regexes.php");
-```
-
-## Using ua-parser PHP Library from the Command Line ##
-
-A command line utility is now included with the PHP library. The following commands are supported:
-
-### Get Usage Info
-
-Provides simple usage information:
-
- php bin/uaparser
-
-### Update the regexes.php File
-
-Fetches an updated YAML file for `ua-parser` and overwrites the current JSON file. You can use the following as part of a cron job that runs nightly.
-
- php bin/uaparser ua-parser:update [--no-backup]
-
-By default creates a backup file. Use `--no-backup` to turn that feature off.
-
-### Convert an Existing regexes.yaml File to regexes.php
-
-With the change to v2.0 you may have an existing and customized YAML file for `ua-parser`. Use the following to convert it to JSON.
-
- php bin/uaparser ua-parser:convert [file]
-
-### Grab Just the Latest regexes.yaml File From the Repository
-
-If you need to add a new UA it's easier to edit the original YAML and then convert it to JSON.
-
- php bin/uaparser ua-parser:fetch [file]
-
-Fetches an updated YAML file. *Warning:* This method overwrites any existing `regexes.yaml` file.
-
-### Parse a Single User Agent String
-
-Parses a user agent string and dumps the results as a list.
-
- php bin/uaparser ua-parser:parse "your user agent string"
-
-### Parse a Webserver Log File
-
-Parses the supplied log file or log directory to test ua-parser. Saves the UA to a file when the UA or OS family aren't recognized or when the UA is listed as a generic smartphone or as a generic feature phone.
-
- php bin/uaparser ua-parser:logfile [-f /path/to/logfile] [-d /path/to/logdir] [--include "*.gz"] [--exclude "*.gz"] errors.log
-
-Multiple `--include` and `--exclude` parameters are allowed.
-
-## Credits ##
-
-Thanks to the [original ua-parser team](http://code.google.com/p/ua-parser/people/list) for making the YAML file available for others to build upon.
-
-Also, many thanks to the following major contributors to the PHP library:
-
-* Bryan Shelton
-* Michael Bond
-* @rjd22
-* Timo Tijhof
-* Marcus Bointon
-* Ryan Parman
-* Pravin Dahal
-
-## Licensing ##
-* The library is licensed under the MIT license
-* The user agents data from the ua-parser project is licensed under the Apache license
-* The initial list of generic feature phones & smartphones came from Mobile Web OSP under the MIT license
-* The initial list of spiders was taken from Yiibu's profile project under the MIT license.
-
diff --git a/vendor/ua-parser/uap-php/bin/uaparser b/vendor/ua-parser/uap-php/bin/uaparser
deleted file mode 100755
index 3ec40a825..000000000
--- a/vendor/ua-parser/uap-php/bin/uaparser
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env php
-add(new ConvertCommand($resourceDirectory, $defaultYamlFile));
-$application->add(new UpdateCommand($resourceDirectory));
-$application->add(new ParserCommand());
-$application->add(new LogfileCommand());
-$application->add(new FetchCommand($defaultYamlFile));
-
-$application->run();
diff --git a/vendor/ua-parser/uap-php/composer.json b/vendor/ua-parser/uap-php/composer.json
deleted file mode 100644
index 740a07e0c..000000000
--- a/vendor/ua-parser/uap-php/composer.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "ua-parser/uap-php",
- "description": "A multi-language port of Browserscope's user agent parser.",
- "require": {
- "php": ">=5.3.0",
- "composer/ca-bundle": "^1.1"
- },
- "require-dev": {
- "phpunit/phpunit": "<8",
- "symfony/yaml": "^2.0 || ^3.0 || ^4.0",
- "symfony/filesystem": "^2.0 || ^3.0 || ^4.0",
- "symfony/finder": "^2.0 || ^3.0 || ^4.0",
- "symfony/console": "^2.0 || ^3.0 || ^4.0"
- },
- "suggest": {
- "symfony/yaml": "Required for CLI usage - ^4.0 || ^5.0",
- "symfony/filesystem": "Required for CLI usage - 2.0 || ^3.0 || ^4.0",
- "symfony/finder": "Required for CLI usage - ^2.0 || ^3.0 || ^4.0",
- "symfony/console": "Required for CLI usage - ^2.0 || ^3.0 || ^4.0"
- },
- "prefer-stable": true,
- "license": "MIT",
- "authors": [
- {
- "name": "Dave Olsen",
- "email": "dmolsen@gmail.com"
- },
- {
- "name": "Lars Strojny",
- "email": "lars@strojny.net"
- }
- ],
- "autoload": {
- "psr-4": {
- "UAParser\\": "src"
- }
- },
- "autoload-dev": {
- "psr-4": {
- "UAParser\\Test\\": "tests/"
- }
- },
- "bin": ["bin/uaparser"]
-}
diff --git a/vendor/ua-parser/uap-php/phpunit.xml.dist b/vendor/ua-parser/uap-php/phpunit.xml.dist
deleted file mode 100644
index 1223e55dd..000000000
--- a/vendor/ua-parser/uap-php/phpunit.xml.dist
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
- ./tests
-
-
-
-
-
- ./src/
-
-
-
diff --git a/vendor/ua-parser/uap-php/resources/.gitignore b/vendor/ua-parser/uap-php/resources/.gitignore
deleted file mode 100644
index cc60dae86..000000000
--- a/vendor/ua-parser/uap-php/resources/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-*.json
-*.yaml
-regexes-*.php
diff --git a/vendor/ua-parser/uap-php/resources/regexes.php b/vendor/ua-parser/uap-php/resources/regexes.php
deleted file mode 100644
index 3a1c38734..000000000
--- a/vendor/ua-parser/uap-php/resources/regexes.php
+++ /dev/null
@@ -1,6572 +0,0 @@
-
- array (
- 0 =>
- array (
- 'regex' => '(ESPN)[%20| ]+Radio/(\\d+)\\.(\\d+)\\.(\\d+) CFNetwork',
- ),
- 1 =>
- array (
- 'regex' => '(Antenna)/(\\d+) CFNetwork',
- 'family_replacement' => 'AntennaPod',
- ),
- 2 =>
- array (
- 'regex' => '(TopPodcasts)Pro/(\\d+) CFNetwork',
- ),
- 3 =>
- array (
- 'regex' => '(MusicDownloader)Lite/(\\d+)\\.(\\d+)\\.(\\d+) CFNetwork',
- ),
- 4 =>
- array (
- 'regex' => '^(.*)-iPad\\/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)(?:\\.(\\d+)|) CFNetwork',
- ),
- 5 =>
- array (
- 'regex' => '^(.*)-iPhone/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)(?:\\.(\\d+)|) CFNetwork',
- ),
- 6 =>
- array (
- 'regex' => '^(.*)/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)(?:\\.(\\d+)|) CFNetwork',
- ),
- 7 =>
- array (
- 'regex' => '(espn\\.go)',
- 'family_replacement' => 'ESPN',
- ),
- 8 =>
- array (
- 'regex' => '(espnradio\\.com)',
- 'family_replacement' => 'ESPN',
- ),
- 9 =>
- array (
- 'regex' => 'ESPN APP$',
- 'family_replacement' => 'ESPN',
- ),
- 10 =>
- array (
- 'regex' => '(audioboom\\.com)',
- 'family_replacement' => 'AudioBoom',
- ),
- 11 =>
- array (
- 'regex' => ' (Rivo) RHYTHM',
- ),
- 12 =>
- array (
- 'regex' => '(CFNetwork)(?:/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)|)',
- 'family_replacement' => 'CFNetwork',
- ),
- 13 =>
- array (
- 'regex' => '(Pingdom\\.com_bot_version_)(\\d+)\\.(\\d+)',
- 'family_replacement' => 'PingdomBot',
- ),
- 14 =>
- array (
- 'regex' => '(PingdomTMS)/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'PingdomBot',
- ),
- 15 =>
- array (
- 'regex' => ' (PTST)/(\\d+)(?:\\.(\\d+)|)$',
- 'family_replacement' => 'WebPageTest.org bot',
- ),
- 16 =>
- array (
- 'regex' => 'X11; (Datanyze); Linux',
- ),
- 17 =>
- array (
- 'regex' => '(NewRelicPinger)/(\\d+)\\.(\\d+)',
- 'family_replacement' => 'NewRelicPingerBot',
- ),
- 18 =>
- array (
- 'regex' => '(Tableau)/(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Tableau',
- ),
- 19 =>
- array (
- 'regex' => '(Salesforce)(?:.)\\/(\\d+)\\.(\\d?)',
- ),
- 20 =>
- array (
- 'regex' => '(\\(StatusCake\\))',
- 'family_replacement' => 'StatusCakeBot',
- ),
- 21 =>
- array (
- 'regex' => '(facebookexternalhit)/(\\d+)\\.(\\d+)',
- 'family_replacement' => 'FacebookBot',
- ),
- 22 =>
- array (
- 'regex' => 'Google.*/\\+/web/snippet',
- 'family_replacement' => 'GooglePlusBot',
- ),
- 23 =>
- array (
- 'regex' => 'via ggpht\\.com GoogleImageProxy',
- 'family_replacement' => 'GmailImageProxy',
- ),
- 24 =>
- array (
- 'regex' => 'YahooMailProxy; https://help\\.yahoo\\.com/kb/yahoo-mail-proxy-SLN28749\\.html',
- 'family_replacement' => 'YahooMailProxy',
- ),
- 25 =>
- array (
- 'regex' => '(Twitterbot)/(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Twitterbot',
- ),
- 26 =>
- array (
- 'regex' => '/((?:Ant-|)Nutch|[A-z]+[Bb]ot|[A-z]+[Ss]pider|Axtaris|fetchurl|Isara|ShopSalad|Tailsweep)[ \\-](\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)',
- ),
- 27 =>
- array (
- 'regex' => '\\b(008|Altresium|Argus|BaiduMobaider|BoardReader|DNSGroup|DataparkSearch|EDI|Goodzer|Grub|INGRID|Infohelfer|LinkedInBot|LOOQ|Nutch|OgScrper|PathDefender|Peew|PostPost|Steeler|Twitterbot|VSE|WebCrunch|WebZIP|Y!J-BR[A-Z]|YahooSeeker|envolk|sproose|wminer)/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)',
- ),
- 28 =>
- array (
- 'regex' => '(MSIE) (\\d+)\\.(\\d+)([a-z]\\d|[a-z]|);.* MSIECrawler',
- 'family_replacement' => 'MSIECrawler',
- ),
- 29 =>
- array (
- 'regex' => '(DAVdroid)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- ),
- 30 =>
- array (
- 'regex' => '(Google-HTTP-Java-Client|Apache-HttpClient|Go-http-client|scalaj-http|http%20client|Python-urllib|HttpMonitor|TLSProber|WinHTTP|JNLP|okhttp|aihttp|reqwest|axios|unirest-(?:java|python|ruby|nodejs|php|net))(?:[ /](\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)|)',
- ),
- 31 =>
- array (
- 'regex' => '(Pinterest(?:bot|))/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)[;\\s(]+\\+https://www.pinterest.com/bot.html',
- 'family_replacement' => 'Pinterestbot',
- ),
- 32 =>
- array (
- 'regex' => '(CSimpleSpider|Cityreview Robot|CrawlDaddy|CrawlFire|Finderbots|Index crawler|Job Roboter|KiwiStatus Spider|Lijit Crawler|QuerySeekerSpider|ScollSpider|Trends Crawler|USyd-NLP-Spider|SiteCat Webbot|BotName\\/\\$BotVersion|123metaspider-Bot|1470\\.net crawler|50\\.nu|8bo Crawler Bot|Aboundex|Accoona-[A-z]{1,30}-Agent|AdsBot-Google(?:-[a-z]{1,30}|)|altavista|AppEngine-Google|archive.{0,30}\\.org_bot|archiver|Ask Jeeves|[Bb]ai[Dd]u[Ss]pider(?:-[A-Za-z]{1,30})(?:-[A-Za-z]{1,30}|)|bingbot|BingPreview|blitzbot|BlogBridge|Bloglovin|BoardReader Blog Indexer|BoardReader Favicon Fetcher|boitho.com-dc|BotSeer|BUbiNG|\\b\\w{0,30}favicon\\w{0,30}\\b|\\bYeti(?:-[a-z]{1,30}|)|Catchpoint(?: bot|)|[Cc]harlotte|Checklinks|clumboot|Comodo HTTP\\(S\\) Crawler|Comodo-Webinspector-Crawler|ConveraCrawler|CRAWL-E|CrawlConvera|Daumoa(?:-feedfetcher|)|Feed Seeker Bot|Feedbin|findlinks|Flamingo_SearchEngine|FollowSite Bot|furlbot|Genieo|gigabot|GomezAgent|gonzo1|(?:[a-zA-Z]{1,30}-|)Googlebot(?:-[a-zA-Z]{1,30}|)|Google SketchUp|grub-client|gsa-crawler|heritrix|HiddenMarket|holmes|HooWWWer|htdig|ia_archiver|ICC-Crawler|Icarus6j|ichiro(?:/mobile|)|IconSurf|IlTrovatore(?:-Setaccio|)|InfuzApp|Innovazion Crawler|InternetArchive|IP2[a-z]{1,30}Bot|jbot\\b|KaloogaBot|Kraken|Kurzor|larbin|LEIA|LesnikBot|Linguee Bot|LinkAider|LinkedInBot|Lite Bot|Llaut|lycos|Mail\\.RU_Bot|masscan|masidani_bot|Mediapartners-Google|Microsoft .{0,30} Bot|mogimogi|mozDex|MJ12bot|msnbot(?:-media {0,2}|)|msrbot|Mtps Feed Aggregation System|netresearch|Netvibes|NewsGator[^/]{0,30}|^NING|Nutch[^/]{0,30}|Nymesis|ObjectsSearch|OgScrper|Orbiter|OOZBOT|PagePeeker|PagesInventory|PaxleFramework|Peeplo Screenshot Bot|PlantyNet_WebRobot|Pompos|Qwantify|Read%20Later|Reaper|RedCarpet|Retreiver|Riddler|Rival IQ|scooter|Scrapy|Scrubby|searchsight|seekbot|semanticdiscovery|SemrushBot|Simpy|SimplePie|SEOstats|SimpleRSS|SiteCon|Slackbot-LinkExpanding|Slack-ImgProxy|Slurp|snappy|Speedy Spider|Squrl Java|Stringer|TheUsefulbot|ThumbShotsBot|Thumbshots\\.ru|Tiny Tiny RSS|Twitterbot|WhatsApp|URL2PNG|Vagabondo|VoilaBot|^vortex|Votay bot|^voyager|WASALive.Bot|Web-sniffer|WebThumb|WeSEE:[A-z]{1,30}|WhatWeb|WIRE|WordPress|Wotbox|www\\.almaden\\.ibm\\.com|Xenu(?:.s|) Link Sleuth|Xerka [A-z]{1,30}Bot|yacy(?:bot|)|YahooSeeker|Yahoo! Slurp|Yandex\\w{1,30}|YodaoBot(?:-[A-z]{1,30}|)|YottaaMonitor|Yowedo|^Zao|^Zao-Crawler|ZeBot_www\\.ze\\.bz|ZooShot|ZyBorg)(?:[ /]v?(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)|)|)|)',
- ),
- 33 =>
- array (
- 'regex' => '\\b(Boto3?|JetS3t|aws-(?:cli|sdk-(?:cpp|go|java|nodejs|ruby2?|dotnet-(?:\\d{1,2}|core)))|s3fs)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- ),
- 34 =>
- array (
- 'regex' => '\\[(FBAN/MessengerForiOS|FB_IAB/MESSENGER);FBAV/(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)|)|)',
- 'family_replacement' => 'Facebook Messenger',
- ),
- 35 =>
- array (
- 'regex' => '\\[FB.*;(FBAV)/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)',
- 'family_replacement' => 'Facebook',
- ),
- 36 =>
- array (
- 'regex' => '\\[FB.*;',
- 'family_replacement' => 'Facebook',
- ),
- 37 =>
- array (
- 'regex' => '(?:\\/[A-Za-z0-9\\.]+|) {0,5}([A-Za-z0-9 \\-_\\!\\[\\]:]{0,50}(?:[Aa]rchiver|[Ii]ndexer|[Ss]craper|[Bb]ot|[Ss]pider|[Cc]rawl[a-z]{0,50}))[/ ](\\d+)(?:\\.(\\d+)(?:\\.(\\d+)|)|)',
- ),
- 38 =>
- array (
- 'regex' => '((?:[A-Za-z][A-Za-z0-9 -]{0,50}|)[^C][^Uu][Bb]ot)\\b(?:(?:[ /]| v)(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)|)',
- ),
- 39 =>
- array (
- 'regex' => '((?:[A-z0-9]{1,50}|[A-z\\-]{1,50} ?|)(?: the |)(?:[Ss][Pp][Ii][Dd][Ee][Rr]|[Ss]crape|[Cc][Rr][Aa][Ww][Ll])[A-z0-9]{0,50})(?:(?:[ /]| v)(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)|)',
- ),
- 40 =>
- array (
- 'regex' => '(HbbTV)/(\\d+)\\.(\\d+)\\.(\\d+) \\(',
- ),
- 41 =>
- array (
- 'regex' => '(Chimera|SeaMonkey|Camino|Waterfox)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+[a-z]*|)',
- ),
- 42 =>
- array (
- 'regex' => '(SailfishBrowser)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- 'family_replacement' => 'Sailfish Browser',
- ),
- 43 =>
- array (
- 'regex' => '\\[(Pinterest)/[^\\]]+\\]',
- ),
- 44 =>
- array (
- 'regex' => '(Pinterest)(?: for Android(?: Tablet|)|)/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)',
- ),
- 45 =>
- array (
- 'regex' => 'Mozilla.*Mobile.*(Instagram).(\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 46 =>
- array (
- 'regex' => 'Mozilla.*Mobile.*(Flipboard).(\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 47 =>
- array (
- 'regex' => 'Mozilla.*Mobile.*(Flipboard-Briefing).(\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 48 =>
- array (
- 'regex' => 'Mozilla.*Mobile.*(Onefootball)\\/Android.(\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 49 =>
- array (
- 'regex' => '(Snapchat)\\/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 50 =>
- array (
- 'regex' => '(Firefox)/(\\d+)\\.(\\d+) Basilisk/(\\d+)',
- 'family_replacement' => 'Basilisk',
- ),
- 51 =>
- array (
- 'regex' => '(PaleMoon)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- 'family_replacement' => 'Pale Moon',
- ),
- 52 =>
- array (
- 'regex' => '(Fennec)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+[a-z]*)',
- 'family_replacement' => 'Firefox Mobile',
- ),
- 53 =>
- array (
- 'regex' => '(Fennec)/(\\d+)\\.(\\d+)(pre)',
- 'family_replacement' => 'Firefox Mobile',
- ),
- 54 =>
- array (
- 'regex' => '(Fennec)/(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Firefox Mobile',
- ),
- 55 =>
- array (
- 'regex' => '(?:Mobile|Tablet);.*(Firefox)/(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Firefox Mobile',
- ),
- 56 =>
- array (
- 'regex' => '(Namoroka|Shiretoko|Minefield)/(\\d+)\\.(\\d+)\\.(\\d+(?:pre|))',
- 'family_replacement' => 'Firefox ($1)',
- ),
- 57 =>
- array (
- 'regex' => '(Firefox)/(\\d+)\\.(\\d+)(a\\d+[a-z]*)',
- 'family_replacement' => 'Firefox Alpha',
- ),
- 58 =>
- array (
- 'regex' => '(Firefox)/(\\d+)\\.(\\d+)(b\\d+[a-z]*)',
- 'family_replacement' => 'Firefox Beta',
- ),
- 59 =>
- array (
- 'regex' => '(Firefox)-(?:\\d+\\.\\d+|)/(\\d+)\\.(\\d+)(a\\d+[a-z]*)',
- 'family_replacement' => 'Firefox Alpha',
- ),
- 60 =>
- array (
- 'regex' => '(Firefox)-(?:\\d+\\.\\d+|)/(\\d+)\\.(\\d+)(b\\d+[a-z]*)',
- 'family_replacement' => 'Firefox Beta',
- ),
- 61 =>
- array (
- 'regex' => '(Namoroka|Shiretoko|Minefield)/(\\d+)\\.(\\d+)([ab]\\d+[a-z]*|)',
- 'family_replacement' => 'Firefox ($1)',
- ),
- 62 =>
- array (
- 'regex' => '(Firefox).*Tablet browser (\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'MicroB',
- ),
- 63 =>
- array (
- 'regex' => '(MozillaDeveloperPreview)/(\\d+)\\.(\\d+)([ab]\\d+[a-z]*|)',
- ),
- 64 =>
- array (
- 'regex' => '(FxiOS)/(\\d+)\\.(\\d+)(\\.(\\d+)|)(\\.(\\d+)|)',
- 'family_replacement' => 'Firefox iOS',
- ),
- 65 =>
- array (
- 'regex' => '(Flock)/(\\d+)\\.(\\d+)(b\\d+?)',
- ),
- 66 =>
- array (
- 'regex' => '(RockMelt)/(\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 67 =>
- array (
- 'regex' => '(Navigator)/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Netscape',
- ),
- 68 =>
- array (
- 'regex' => '(Navigator)/(\\d+)\\.(\\d+)([ab]\\d+)',
- 'family_replacement' => 'Netscape',
- ),
- 69 =>
- array (
- 'regex' => '(Netscape6)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+|)',
- 'family_replacement' => 'Netscape',
- ),
- 70 =>
- array (
- 'regex' => '(MyIBrow)/(\\d+)\\.(\\d+)',
- 'family_replacement' => 'My Internet Browser',
- ),
- 71 =>
- array (
- 'regex' => '(UC? ?Browser|UCWEB|U3)[ /]?(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'UC Browser',
- ),
- 72 =>
- array (
- 'regex' => '(Opera Tablet).*Version/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- ),
- 73 =>
- array (
- 'regex' => '(Opera Mini)(?:/att|)/?(\\d+|)(?:\\.(\\d+)|)(?:\\.(\\d+)|)',
- ),
- 74 =>
- array (
- 'regex' => '(Opera)/.+Opera Mobi.+Version/(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Opera Mobile',
- ),
- 75 =>
- array (
- 'regex' => '(Opera)/(\\d+)\\.(\\d+).+Opera Mobi',
- 'family_replacement' => 'Opera Mobile',
- ),
- 76 =>
- array (
- 'regex' => 'Opera Mobi.+(Opera)(?:/|\\s+)(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Opera Mobile',
- ),
- 77 =>
- array (
- 'regex' => 'Opera Mobi',
- 'family_replacement' => 'Opera Mobile',
- ),
- 78 =>
- array (
- 'regex' => '(Opera)/9.80.*Version/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- ),
- 79 =>
- array (
- 'regex' => '(?:Mobile Safari).*(OPR)/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Opera Mobile',
- ),
- 80 =>
- array (
- 'regex' => '(?:Chrome).*(OPR)/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Opera',
- ),
- 81 =>
- array (
- 'regex' => '(Coast)/(\\d+).(\\d+).(\\d+)',
- 'family_replacement' => 'Opera Coast',
- ),
- 82 =>
- array (
- 'regex' => '(OPiOS)/(\\d+).(\\d+).(\\d+)',
- 'family_replacement' => 'Opera Mini',
- ),
- 83 =>
- array (
- 'regex' => 'Chrome/.+( MMS)/(\\d+).(\\d+).(\\d+)',
- 'family_replacement' => 'Opera Neon',
- ),
- 84 =>
- array (
- 'regex' => '(hpw|web)OS/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- 'family_replacement' => 'webOS Browser',
- ),
- 85 =>
- array (
- 'regex' => '(luakit)',
- 'family_replacement' => 'LuaKit',
- ),
- 86 =>
- array (
- 'regex' => '(Snowshoe)/(\\d+)\\.(\\d+).(\\d+)',
- ),
- 87 =>
- array (
- 'regex' => 'Gecko/\\d+ (Lightning)/(\\d+)\\.(\\d+)\\.?((?:[ab]?\\d+[a-z]*)|(?:\\d*))',
- ),
- 88 =>
- array (
- 'regex' => '(Firefox)/(\\d+)\\.(\\d+)\\.(\\d+(?:pre|)) \\(Swiftfox\\)',
- 'family_replacement' => 'Swiftfox',
- ),
- 89 =>
- array (
- 'regex' => '(Firefox)/(\\d+)\\.(\\d+)([ab]\\d+[a-z]*|) \\(Swiftfox\\)',
- 'family_replacement' => 'Swiftfox',
- ),
- 90 =>
- array (
- 'regex' => '(rekonq)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|) Safari',
- 'family_replacement' => 'Rekonq',
- ),
- 91 =>
- array (
- 'regex' => 'rekonq',
- 'family_replacement' => 'Rekonq',
- ),
- 92 =>
- array (
- 'regex' => '(conkeror|Conkeror)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- 'family_replacement' => 'Conkeror',
- ),
- 93 =>
- array (
- 'regex' => '(konqueror)/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Konqueror',
- ),
- 94 =>
- array (
- 'regex' => '(WeTab)-Browser',
- ),
- 95 =>
- array (
- 'regex' => '(Comodo_Dragon)/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Comodo Dragon',
- ),
- 96 =>
- array (
- 'regex' => '(Symphony) (\\d+).(\\d+)',
- ),
- 97 =>
- array (
- 'regex' => 'PLAYSTATION 3.+WebKit',
- 'family_replacement' => 'NetFront NX',
- ),
- 98 =>
- array (
- 'regex' => 'PLAYSTATION 3',
- 'family_replacement' => 'NetFront',
- ),
- 99 =>
- array (
- 'regex' => '(PlayStation Portable)',
- 'family_replacement' => 'NetFront',
- ),
- 100 =>
- array (
- 'regex' => '(PlayStation Vita)',
- 'family_replacement' => 'NetFront NX',
- ),
- 101 =>
- array (
- 'regex' => 'AppleWebKit.+ (NX)/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'NetFront NX',
- ),
- 102 =>
- array (
- 'regex' => '(Nintendo 3DS)',
- 'family_replacement' => 'NetFront NX',
- ),
- 103 =>
- array (
- 'regex' => '(Silk)/(\\d+)\\.(\\d+)(?:\\.([0-9\\-]+)|)',
- 'family_replacement' => 'Amazon Silk',
- ),
- 104 =>
- array (
- 'regex' => '(Puffin)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- ),
- 105 =>
- array (
- 'regex' => 'Windows Phone .*(Edge)/(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Edge Mobile',
- ),
- 106 =>
- array (
- 'regex' => '(SamsungBrowser)/(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Samsung Internet',
- ),
- 107 =>
- array (
- 'regex' => '(SznProhlizec)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- 'family_replacement' => 'Seznam prohlížeč',
- ),
- 108 =>
- array (
- 'regex' => '(coc_coc_browser)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- 'family_replacement' => 'Coc Coc',
- ),
- 109 =>
- array (
- 'regex' => '(baidubrowser)[/\\s](\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)',
- 'family_replacement' => 'Baidu Browser',
- ),
- 110 =>
- array (
- 'regex' => '(FlyFlow)/(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Baidu Explorer',
- ),
- 111 =>
- array (
- 'regex' => '(MxBrowser)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- 'family_replacement' => 'Maxthon',
- ),
- 112 =>
- array (
- 'regex' => '(Crosswalk)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 113 =>
- array (
- 'regex' => '(Line)/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'LINE',
- ),
- 114 =>
- array (
- 'regex' => '(MiuiBrowser)/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'MiuiBrowser',
- ),
- 115 =>
- array (
- 'regex' => '(Mint Browser)/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Mint Browser',
- ),
- 116 =>
- array (
- 'regex' => 'Mozilla.+Android.+(GSA)/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Google',
- ),
- 117 =>
- array (
- 'regex' => 'Version/.+(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Chrome Mobile WebView',
- ),
- 118 =>
- array (
- 'regex' => '; wv\\).+(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Chrome Mobile WebView',
- ),
- 119 =>
- array (
- 'regex' => '(CrMo)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Chrome Mobile',
- ),
- 120 =>
- array (
- 'regex' => '(CriOS)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Chrome Mobile iOS',
- ),
- 121 =>
- array (
- 'regex' => '(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+) Mobile(?:[ /]|$)',
- 'family_replacement' => 'Chrome Mobile',
- ),
- 122 =>
- array (
- 'regex' => ' Mobile .*(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Chrome Mobile',
- ),
- 123 =>
- array (
- 'regex' => '(chromeframe)/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Chrome Frame',
- ),
- 124 =>
- array (
- 'regex' => '(SLP Browser)/(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Tizen Browser',
- ),
- 125 =>
- array (
- 'regex' => '(SE 2\\.X) MetaSr (\\d+)\\.(\\d+)',
- 'family_replacement' => 'Sogou Explorer',
- ),
- 126 =>
- array (
- 'regex' => '(MQQBrowser/Mini)(?:(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)|)',
- 'family_replacement' => 'QQ Browser Mini',
- ),
- 127 =>
- array (
- 'regex' => '(MQQBrowser)(?:/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)|)',
- 'family_replacement' => 'QQ Browser Mobile',
- ),
- 128 =>
- array (
- 'regex' => '(QQBrowser)(?:/(\\d+)(?:\\.(\\d+)\\.(\\d+)(?:\\.(\\d+)|)|)|)',
- 'family_replacement' => 'QQ Browser',
- ),
- 129 =>
- array (
- 'regex' => '(Rackspace Monitoring)/(\\d+)\\.(\\d+)',
- 'family_replacement' => 'RackspaceBot',
- ),
- 130 =>
- array (
- 'regex' => '(PyAMF)/(\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 131 =>
- array (
- 'regex' => '(YaBrowser)/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Yandex Browser',
- ),
- 132 =>
- array (
- 'regex' => '(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+).* MRCHROME',
- 'family_replacement' => 'Mail.ru Chromium Browser',
- ),
- 133 =>
- array (
- 'regex' => '(AOL) (\\d+)\\.(\\d+); AOLBuild (\\d+)',
- ),
- 134 =>
- array (
- 'regex' => '(PodCruncher|Downcast)[ /]?(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)(?:\\.(\\d+)|)',
- ),
- 135 =>
- array (
- 'regex' => ' (BoxNotes)/(\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 136 =>
- array (
- 'regex' => '(Whale)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+) Mobile(?:[ /]|$)',
- 'family_replacement' => 'Whale',
- ),
- 137 =>
- array (
- 'regex' => '(Whale)/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Whale',
- ),
- 138 =>
- array (
- 'regex' => '(Ghost)/(\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 139 =>
- array (
- 'regex' => '(Slack_SSB)/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Slack Desktop Client',
- ),
- 140 =>
- array (
- 'regex' => '(HipChat)/?(\\d+|)',
- 'family_replacement' => 'HipChat Desktop Client',
- ),
- 141 =>
- array (
- 'regex' => '\\b(MobileIron|FireWeb|Jasmine|ANTGalio|Midori|Fresco|Lobo|PaleMoon|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Epiphany|Shiira|Sunrise|Spotify|Flock|Netscape|Lunascape|WebPilot|NetFront|Netfront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|Opera Mini|iCab|NetNewsWire|ThunderBrowse|Iris|UP\\.Browser|Bunjalloo|Google Earth|Raven for Mac|Openwave|MacOutlook|Electron|OktaMobile)/(\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 142 =>
- array (
- 'regex' => 'Microsoft Office Outlook 12\\.\\d+\\.\\d+|MSOffice 12',
- 'family_replacement' => 'Outlook',
- 'v1_replacement' => '2007',
- ),
- 143 =>
- array (
- 'regex' => 'Microsoft Outlook 14\\.\\d+\\.\\d+|MSOffice 14',
- 'family_replacement' => 'Outlook',
- 'v1_replacement' => '2010',
- ),
- 144 =>
- array (
- 'regex' => 'Microsoft Outlook 15\\.\\d+\\.\\d+',
- 'family_replacement' => 'Outlook',
- 'v1_replacement' => '2013',
- ),
- 145 =>
- array (
- 'regex' => 'Microsoft Outlook (?:Mail )?16\\.\\d+\\.\\d+|MSOffice 16',
- 'family_replacement' => 'Outlook',
- 'v1_replacement' => '2016',
- ),
- 146 =>
- array (
- 'regex' => 'Microsoft Office (Word) 2014',
- ),
- 147 =>
- array (
- 'regex' => 'Outlook-Express\\/7\\.0.*',
- 'family_replacement' => 'Windows Live Mail',
- ),
- 148 =>
- array (
- 'regex' => '(Airmail) (\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- ),
- 149 =>
- array (
- 'regex' => '(Thunderbird)/(\\d+)\\.(\\d+)(?:\\.(\\d+(?:pre|))|)',
- 'family_replacement' => 'Thunderbird',
- ),
- 150 =>
- array (
- 'regex' => '(Postbox)/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Postbox',
- ),
- 151 =>
- array (
- 'regex' => '(Barca(?:Pro)?)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- 'family_replacement' => 'Barca',
- ),
- 152 =>
- array (
- 'regex' => '(Lotus-Notes)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- 'family_replacement' => 'Lotus Notes',
- ),
- 153 =>
- array (
- 'regex' => '(Vivaldi)/(\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 154 =>
- array (
- 'regex' => '(Edge?)/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)(?:\\.(\\d+)|)',
- 'family_replacement' => 'Edge',
- ),
- 155 =>
- array (
- 'regex' => '(brave)/(\\d+)\\.(\\d+)\\.(\\d+) Chrome',
- 'family_replacement' => 'Brave',
- ),
- 156 =>
- array (
- 'regex' => '(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)[\\d.]* Iron[^/]',
- 'family_replacement' => 'Iron',
- ),
- 157 =>
- array (
- 'regex' => '\\b(Dolphin)(?: |HDCN/|/INT\\-)(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- ),
- 158 =>
- array (
- 'regex' => '(HeadlessChrome)(?:/(\\d+)\\.(\\d+)\\.(\\d+)|)',
- ),
- 159 =>
- array (
- 'regex' => '(Evolution)/(\\d+)\\.(\\d+)\\.(\\d+\\.\\d+)',
- ),
- 160 =>
- array (
- 'regex' => '(RCM CardDAV plugin)/(\\d+)\\.(\\d+)\\.(\\d+(?:-dev|))',
- ),
- 161 =>
- array (
- 'regex' => '(bingbot|Bolt|AdobeAIR|Jasmine|IceCat|Skyfire|Midori|Maxthon|Lynx|Arora|IBrowse|Dillo|Camino|Shiira|Fennec|Phoenix|Flock|Netscape|Lunascape|Epiphany|WebPilot|Opera Mini|Opera|NetFront|Netfront|Konqueror|Googlebot|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|iCab|iTunes|MacAppStore|NetNewsWire|Space Bison|Stainless|Orca|Dolfin|BOLT|Minimo|Tizen Browser|Polaris|Abrowser|Planetweb|ICE Browser|mDolphin|qutebrowser|Otter|QupZilla|MailBar|kmail2|YahooMobileMail|ExchangeWebServices|ExchangeServicesClient|Dragon|Outlook-iOS-Android)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- ),
- 162 =>
- array (
- 'regex' => '(Chromium|Chrome)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)',
- ),
- 163 =>
- array (
- 'regex' => '(IEMobile)[ /](\\d+)\\.(\\d+)',
- 'family_replacement' => 'IE Mobile',
- ),
- 164 =>
- array (
- 'regex' => '(BacaBerita App)\\/(\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 165 =>
- array (
- 'regex' => '^(bPod|Pocket Casts|Player FM)$',
- ),
- 166 =>
- array (
- 'regex' => '^(AlexaMediaPlayer|VLC)/(\\d+)\\.(\\d+)\\.([^.\\s]+)',
- ),
- 167 =>
- array (
- 'regex' => '^(AntennaPod|WMPlayer|Zune|Podkicker|Radio|ExoPlayerDemo|Overcast|PocketTunes|NSPlayer|okhttp|DoggCatcher|QuickNews|QuickTime|Peapod|Podcasts|GoldenPod|VLC|Spotify|Miro|MediaGo|Juice|iPodder|gPodder|Banshee)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)',
- ),
- 168 =>
- array (
- 'regex' => '^(Peapod|Liferea)/([^.\\s]+)\\.([^.\\s]+|)\\.?([^.\\s]+|)',
- ),
- 169 =>
- array (
- 'regex' => '^(bPod|Player FM) BMID/(\\S+)',
- ),
- 170 =>
- array (
- 'regex' => '^(Podcast ?Addict)/v(\\d+) ',
- ),
- 171 =>
- array (
- 'regex' => '^(Podcast ?Addict) ',
- 'family_replacement' => 'PodcastAddict',
- ),
- 172 =>
- array (
- 'regex' => '(Replay) AV',
- ),
- 173 =>
- array (
- 'regex' => '(VOX) Music Player',
- ),
- 174 =>
- array (
- 'regex' => '(CITA) RSS Aggregator/(\\d+)\\.(\\d+)',
- ),
- 175 =>
- array (
- 'regex' => '(Pocket Casts)$',
- ),
- 176 =>
- array (
- 'regex' => '(Player FM)$',
- ),
- 177 =>
- array (
- 'regex' => '(LG Player|Doppler|FancyMusic|MediaMonkey|Clementine) (\\d+)\\.(\\d+)\\.?([^.\\s]+|)\\.?([^.\\s]+|)',
- ),
- 178 =>
- array (
- 'regex' => '(philpodder)/(\\d+)\\.(\\d+)\\.?([^.\\s]+|)\\.?([^.\\s]+|)',
- ),
- 179 =>
- array (
- 'regex' => '(Player FM|Pocket Casts|DoggCatcher|Spotify|MediaMonkey|MediaGo|BashPodder)',
- ),
- 180 =>
- array (
- 'regex' => '(QuickTime)\\.(\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 181 =>
- array (
- 'regex' => '(Kinoma)(\\d+)',
- ),
- 182 =>
- array (
- 'regex' => '(Fancy) Cloud Music (\\d+)\\.(\\d+)',
- 'family_replacement' => 'FancyMusic',
- ),
- 183 =>
- array (
- 'regex' => 'EspnDownloadManager',
- 'family_replacement' => 'ESPN',
- ),
- 184 =>
- array (
- 'regex' => '(ESPN) Radio (\\d+)\\.(\\d+)(?:\\.(\\d+)|) ?(?:rv:(\\d+)|) ',
- ),
- 185 =>
- array (
- 'regex' => '(podracer|jPodder) v ?(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- ),
- 186 =>
- array (
- 'regex' => '(ZDM)/(\\d+)\\.(\\d+)[; ]?',
- ),
- 187 =>
- array (
- 'regex' => '(Zune|BeyondPod) (\\d+)(?:\\.(\\d+)|)[\\);]',
- ),
- 188 =>
- array (
- 'regex' => '(WMPlayer)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 189 =>
- array (
- 'regex' => '^(Lavf)',
- 'family_replacement' => 'WMPlayer',
- ),
- 190 =>
- array (
- 'regex' => '^(RSSRadio)[ /]?(\\d+|)',
- ),
- 191 =>
- array (
- 'regex' => '(RSS_Radio) (\\d+)\\.(\\d+)',
- 'family_replacement' => 'RSSRadio',
- ),
- 192 =>
- array (
- 'regex' => '(Podkicker) \\S+/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Podkicker',
- ),
- 193 =>
- array (
- 'regex' => '^(HTC) Streaming Player \\S+ / \\S+ / \\S+ / (\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- ),
- 194 =>
- array (
- 'regex' => '^(Stitcher)/iOS',
- ),
- 195 =>
- array (
- 'regex' => '^(Stitcher)/Android',
- ),
- 196 =>
- array (
- 'regex' => '^(VLC) .*version (\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 197 =>
- array (
- 'regex' => ' (VLC) for',
- ),
- 198 =>
- array (
- 'regex' => '(vlc)/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'VLC',
- ),
- 199 =>
- array (
- 'regex' => '^(foobar)\\S+/([^.\\s]+)\\.([^.\\s]+|)\\.?([^.\\s]+|)',
- ),
- 200 =>
- array (
- 'regex' => '^(Clementine)\\S+ ([^.\\s]+)\\.([^.\\s]+|)\\.?([^.\\s]+|)',
- ),
- 201 =>
- array (
- 'regex' => '(amarok)/([^.\\s]+)\\.([^.\\s]+|)\\.?([^.\\s]+|)',
- 'family_replacement' => 'Amarok',
- ),
- 202 =>
- array (
- 'regex' => '(Custom)-Feed Reader',
- ),
- 203 =>
- array (
- 'regex' => '(iRider|Crazy Browser|SkipStone|iCab|Lunascape|Sleipnir|Maemo Browser) (\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 204 =>
- array (
- 'regex' => '(iCab|Lunascape|Opera|Android|Jasmine|Polaris|Microsoft SkyDriveSync|The Bat!) (\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- ),
- 205 =>
- array (
- 'regex' => '(Kindle)/(\\d+)\\.(\\d+)',
- ),
- 206 =>
- array (
- 'regex' => '(Android) Donut',
- 'v1_replacement' => '1',
- 'v2_replacement' => '2',
- ),
- 207 =>
- array (
- 'regex' => '(Android) Eclair',
- 'v1_replacement' => '2',
- 'v2_replacement' => '1',
- ),
- 208 =>
- array (
- 'regex' => '(Android) Froyo',
- 'v1_replacement' => '2',
- 'v2_replacement' => '2',
- ),
- 209 =>
- array (
- 'regex' => '(Android) Gingerbread',
- 'v1_replacement' => '2',
- 'v2_replacement' => '3',
- ),
- 210 =>
- array (
- 'regex' => '(Android) Honeycomb',
- 'v1_replacement' => '3',
- ),
- 211 =>
- array (
- 'regex' => '(MSIE) (\\d+)\\.(\\d+).*XBLWP7',
- 'family_replacement' => 'IE Large Screen',
- ),
- 212 =>
- array (
- 'regex' => '(Nextcloud)',
- ),
- 213 =>
- array (
- 'regex' => '(mirall)/(\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 214 =>
- array (
- 'regex' => '(ownCloud-android)/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Owncloud',
- ),
- 215 =>
- array (
- 'regex' => '(OC)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+) \\(Skype for Business\\)',
- 'family_replacement' => 'Skype',
- ),
- 216 =>
- array (
- 'regex' => '(Obigo)InternetBrowser',
- ),
- 217 =>
- array (
- 'regex' => '(Obigo)\\-Browser',
- ),
- 218 =>
- array (
- 'regex' => '(Obigo|OBIGO)[^\\d]*(\\d+)(?:.(\\d+)|)',
- 'family_replacement' => 'Obigo',
- ),
- 219 =>
- array (
- 'regex' => '(MAXTHON|Maxthon) (\\d+)\\.(\\d+)',
- 'family_replacement' => 'Maxthon',
- ),
- 220 =>
- array (
- 'regex' => '(Maxthon|MyIE2|Uzbl|Shiira)',
- 'v1_replacement' => '0',
- ),
- 221 =>
- array (
- 'regex' => '(BrowseX) \\((\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 222 =>
- array (
- 'regex' => '(NCSA_Mosaic)/(\\d+)\\.(\\d+)',
- 'family_replacement' => 'NCSA Mosaic',
- ),
- 223 =>
- array (
- 'regex' => '(POLARIS)/(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Polaris',
- ),
- 224 =>
- array (
- 'regex' => '(Embider)/(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Polaris',
- ),
- 225 =>
- array (
- 'regex' => '(BonEcho)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+|)',
- 'family_replacement' => 'Bon Echo',
- ),
- 226 =>
- array (
- 'regex' => '(iPod|iPhone|iPad).+GSA/(\\d+)\\.(\\d+)\\.(\\d+) Mobile',
- 'family_replacement' => 'Google',
- ),
- 227 =>
- array (
- 'regex' => '(iPod|iPhone|iPad).+Version/(\\d+)\\.(\\d+)(?:\\.(\\d+)|).*[ +]Safari',
- 'family_replacement' => 'Mobile Safari',
- ),
- 228 =>
- array (
- 'regex' => '(iPod|iPod touch|iPhone|iPad);.*CPU.*OS[ +](\\d+)_(\\d+)(?:_(\\d+)|).* AppleNews\\/\\d+\\.\\d+\\.\\d+?',
- 'family_replacement' => 'Mobile Safari UI/WKWebView',
- ),
- 229 =>
- array (
- 'regex' => '(iPod|iPhone|iPad).+Version/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- 'family_replacement' => 'Mobile Safari UI/WKWebView',
- ),
- 230 =>
- array (
- 'regex' => '(iPod|iPod touch|iPhone|iPad);.*CPU.*OS[ +](\\d+)_(\\d+)(?:_(\\d+)|).*Mobile.*[ +]Safari',
- 'family_replacement' => 'Mobile Safari',
- ),
- 231 =>
- array (
- 'regex' => '(iPod|iPod touch|iPhone|iPad);.*CPU.*OS[ +](\\d+)_(\\d+)(?:_(\\d+)|).*Mobile',
- 'family_replacement' => 'Mobile Safari UI/WKWebView',
- ),
- 232 =>
- array (
- 'regex' => '(iPod|iPhone|iPad).* Safari',
- 'family_replacement' => 'Mobile Safari',
- ),
- 233 =>
- array (
- 'regex' => '(iPod|iPhone|iPad)',
- 'family_replacement' => 'Mobile Safari UI/WKWebView',
- ),
- 234 =>
- array (
- 'regex' => '(Watch)(\\d+),(\\d+)',
- 'family_replacement' => 'Apple $1 App',
- ),
- 235 =>
- array (
- 'regex' => '(Outlook-iOS)/\\d+\\.\\d+\\.prod\\.iphone \\((\\d+)\\.(\\d+)\\.(\\d+)\\)',
- ),
- 236 =>
- array (
- 'regex' => '(AvantGo) (\\d+).(\\d+)',
- ),
- 237 =>
- array (
- 'regex' => '(OneBrowser)/(\\d+).(\\d+)',
- 'family_replacement' => 'ONE Browser',
- ),
- 238 =>
- array (
- 'regex' => '(Avant)',
- 'v1_replacement' => '1',
- ),
- 239 =>
- array (
- 'regex' => '(QtCarBrowser)',
- 'v1_replacement' => '1',
- ),
- 240 =>
- array (
- 'regex' => '^(iBrowser/Mini)(\\d+).(\\d+)',
- 'family_replacement' => 'iBrowser Mini',
- ),
- 241 =>
- array (
- 'regex' => '^(iBrowser|iRAPP)/(\\d+).(\\d+)',
- ),
- 242 =>
- array (
- 'regex' => '^(Nokia)',
- 'family_replacement' => 'Nokia Services (WAP) Browser',
- ),
- 243 =>
- array (
- 'regex' => '(NokiaBrowser)/(\\d+)\\.(\\d+).(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Nokia Browser',
- ),
- 244 =>
- array (
- 'regex' => '(NokiaBrowser)/(\\d+)\\.(\\d+).(\\d+)',
- 'family_replacement' => 'Nokia Browser',
- ),
- 245 =>
- array (
- 'regex' => '(NokiaBrowser)/(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Nokia Browser',
- ),
- 246 =>
- array (
- 'regex' => '(BrowserNG)/(\\d+)\\.(\\d+).(\\d+)',
- 'family_replacement' => 'Nokia Browser',
- ),
- 247 =>
- array (
- 'regex' => '(Series60)/5\\.0',
- 'family_replacement' => 'Nokia Browser',
- 'v1_replacement' => '7',
- 'v2_replacement' => '0',
- ),
- 248 =>
- array (
- 'regex' => '(Series60)/(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Nokia OSS Browser',
- ),
- 249 =>
- array (
- 'regex' => '(S40OviBrowser)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Ovi Browser',
- ),
- 250 =>
- array (
- 'regex' => '(Nokia)[EN]?(\\d+)',
- ),
- 251 =>
- array (
- 'regex' => '(PlayBook).+RIM Tablet OS (\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'BlackBerry WebKit',
- ),
- 252 =>
- array (
- 'regex' => '(Black[bB]erry|BB10).+Version/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'BlackBerry WebKit',
- ),
- 253 =>
- array (
- 'regex' => '(Black[bB]erry)\\s?(\\d+)',
- 'family_replacement' => 'BlackBerry',
- ),
- 254 =>
- array (
- 'regex' => '(OmniWeb)/v(\\d+)\\.(\\d+)',
- ),
- 255 =>
- array (
- 'regex' => '(Blazer)/(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Palm Blazer',
- ),
- 256 =>
- array (
- 'regex' => '(Pre)/(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Palm Pre',
- ),
- 257 =>
- array (
- 'regex' => '(ELinks)/(\\d+)\\.(\\d+)',
- ),
- 258 =>
- array (
- 'regex' => '(ELinks) \\((\\d+)\\.(\\d+)',
- ),
- 259 =>
- array (
- 'regex' => '(Links) \\((\\d+)\\.(\\d+)',
- ),
- 260 =>
- array (
- 'regex' => '(QtWeb) Internet Browser/(\\d+)\\.(\\d+)',
- ),
- 261 =>
- array (
- 'regex' => '(PhantomJS)/(\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 262 =>
- array (
- 'regex' => '(AppleWebKit)/(\\d+)(?:\\.(\\d+)|)\\+ .* Safari',
- 'family_replacement' => 'WebKit Nightly',
- ),
- 263 =>
- array (
- 'regex' => '(Version)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|).*Safari/',
- 'family_replacement' => 'Safari',
- ),
- 264 =>
- array (
- 'regex' => '(Safari)/\\d+',
- ),
- 265 =>
- array (
- 'regex' => '(OLPC)/Update(\\d+)\\.(\\d+)',
- ),
- 266 =>
- array (
- 'regex' => '(OLPC)/Update()\\.(\\d+)',
- 'v1_replacement' => '0',
- ),
- 267 =>
- array (
- 'regex' => '(SEMC\\-Browser)/(\\d+)\\.(\\d+)',
- ),
- 268 =>
- array (
- 'regex' => '(Teleca)',
- 'family_replacement' => 'Teleca Browser',
- ),
- 269 =>
- array (
- 'regex' => '(Phantom)/V(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Phantom Browser',
- ),
- 270 =>
- array (
- 'regex' => '(Trident)/(7|8)\\.(0)',
- 'family_replacement' => 'IE',
- 'v1_replacement' => '11',
- ),
- 271 =>
- array (
- 'regex' => '(Trident)/(6)\\.(0)',
- 'family_replacement' => 'IE',
- 'v1_replacement' => '10',
- ),
- 272 =>
- array (
- 'regex' => '(Trident)/(5)\\.(0)',
- 'family_replacement' => 'IE',
- 'v1_replacement' => '9',
- ),
- 273 =>
- array (
- 'regex' => '(Trident)/(4)\\.(0)',
- 'family_replacement' => 'IE',
- 'v1_replacement' => '8',
- ),
- 274 =>
- array (
- 'regex' => '(Espial)/(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)',
- ),
- 275 =>
- array (
- 'regex' => '(AppleWebKit)/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Apple Mail',
- ),
- 276 =>
- array (
- 'regex' => '(Firefox)/(\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 277 =>
- array (
- 'regex' => '(Firefox)/(\\d+)\\.(\\d+)(pre|[ab]\\d+[a-z]*|)',
- ),
- 278 =>
- array (
- 'regex' => '([MS]?IE) (\\d+)\\.(\\d+)',
- 'family_replacement' => 'IE',
- ),
- 279 =>
- array (
- 'regex' => '(python-requests)/(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Python Requests',
- ),
- 280 =>
- array (
- 'regex' => '\\b(Windows-Update-Agent|Microsoft-CryptoAPI|SophosUpdateManager|SophosAgent|Debian APT-HTTP|Ubuntu APT-HTTP|libcurl-agent|libwww-perl|urlgrabber|curl|PycURL|Wget|aria2|Axel|OpenBSD ftp|lftp|jupdate|insomnia|fetch libfetch|akka-http|got)(?:[ /](\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)|)',
- ),
- 281 =>
- array (
- 'regex' => '(Python/3\\.\\d{1,3} aiohttp)/(\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 282 =>
- array (
- 'regex' => '(Python/3\\.\\d{1,3} aiohttp)/(\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 283 =>
- array (
- 'regex' => '(Java)[/ ]{0,1}\\d+\\.(\\d+)\\.(\\d+)[_-]*([a-zA-Z0-9]+|)',
- ),
- 284 =>
- array (
- 'regex' => '^(Cyberduck)/(\\d+)\\.(\\d+)\\.(\\d+)(?:\\.\\d+|)',
- ),
- 285 =>
- array (
- 'regex' => '^(S3 Browser) (\\d+)-(\\d+)-(\\d+)(?:\\s*http://s3browser\\.com|)',
- ),
- 286 =>
- array (
- 'regex' => '(S3Gof3r)',
- ),
- 287 =>
- array (
- 'regex' => '\\b(ibm-cos-sdk-(?:core|java|js|python))/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- ),
- 288 =>
- array (
- 'regex' => '^(rusoto)/(\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 289 =>
- array (
- 'regex' => '^(rclone)/v(\\d+)\\.(\\d+)',
- ),
- 290 =>
- array (
- 'regex' => '^(Roku)/DVP-(\\d+)\\.(\\d+)',
- ),
- 291 =>
- array (
- 'regex' => '(Kurio)\\/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'Kurio App',
- ),
- 292 =>
- array (
- 'regex' => '^(Box(?: Sync)?)/(\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 293 =>
- array (
- 'regex' => '^(ViaFree|Viafree)-(?:tvOS-)?[A-Z]{2}/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'family_replacement' => 'ViaFree',
- ),
- ),
- 'os_parsers' =>
- array (
- 0 =>
- array (
- 'regex' => 'HbbTV/\\d+\\.\\d+\\.\\d+ \\( ;(LG)E ;NetCast 4.0',
- 'os_v1_replacement' => '2013',
- ),
- 1 =>
- array (
- 'regex' => 'HbbTV/\\d+\\.\\d+\\.\\d+ \\( ;(LG)E ;NetCast 3.0',
- 'os_v1_replacement' => '2012',
- ),
- 2 =>
- array (
- 'regex' => 'HbbTV/1.1.1 \\(;;;;;\\) Maple_2011',
- 'os_replacement' => 'Samsung',
- 'os_v1_replacement' => '2011',
- ),
- 3 =>
- array (
- 'regex' => 'HbbTV/\\d+\\.\\d+\\.\\d+ \\(;(Samsung);SmartTV([0-9]{4});.*FXPDEUC',
- 'os_v2_replacement' => 'UE40F7000',
- ),
- 4 =>
- array (
- 'regex' => 'HbbTV/\\d+\\.\\d+\\.\\d+ \\(;(Samsung);SmartTV([0-9]{4});.*MST12DEUC',
- 'os_v2_replacement' => 'UE32F4500',
- ),
- 5 =>
- array (
- 'regex' => 'HbbTV/1\\.1\\.1 \\(; (Philips);.*NETTV/4',
- 'os_v1_replacement' => '2013',
- ),
- 6 =>
- array (
- 'regex' => 'HbbTV/1\\.1\\.1 \\(; (Philips);.*NETTV/3',
- 'os_v1_replacement' => '2012',
- ),
- 7 =>
- array (
- 'regex' => 'HbbTV/1\\.1\\.1 \\(; (Philips);.*NETTV/2',
- 'os_v1_replacement' => '2011',
- ),
- 8 =>
- array (
- 'regex' => 'HbbTV/\\d+\\.\\d+\\.\\d+.*(firetv)-firefox-plugin (\\d+).(\\d+).(\\d+)',
- 'os_replacement' => 'FireHbbTV',
- ),
- 9 =>
- array (
- 'regex' => 'HbbTV/\\d+\\.\\d+\\.\\d+ \\(.*; ?([a-zA-Z]+) ?;.*(201[1-9]).*\\)',
- ),
- 10 =>
- array (
- 'regex' => '(Windows Phone) (?:OS[ /])?(\\d+)\\.(\\d+)',
- ),
- 11 =>
- array (
- 'regex' => '(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone)[ +]+(\\d+)[_\\.](\\d+)(?:[_\\.](\\d+)|).*Outlook-iOS-Android',
- 'os_replacement' => 'iOS',
- ),
- 12 =>
- array (
- 'regex' => '(Android)[ \\-/](\\d+)(?:\\.(\\d+)|)(?:[.\\-]([a-z0-9]+)|)',
- ),
- 13 =>
- array (
- 'regex' => '(Android) Donut',
- 'os_v1_replacement' => '1',
- 'os_v2_replacement' => '2',
- ),
- 14 =>
- array (
- 'regex' => '(Android) Eclair',
- 'os_v1_replacement' => '2',
- 'os_v2_replacement' => '1',
- ),
- 15 =>
- array (
- 'regex' => '(Android) Froyo',
- 'os_v1_replacement' => '2',
- 'os_v2_replacement' => '2',
- ),
- 16 =>
- array (
- 'regex' => '(Android) Gingerbread',
- 'os_v1_replacement' => '2',
- 'os_v2_replacement' => '3',
- ),
- 17 =>
- array (
- 'regex' => '(Android) Honeycomb',
- 'os_v1_replacement' => '3',
- ),
- 18 =>
- array (
- 'regex' => '^UCWEB.*; (Adr) (\\d+)\\.(\\d+)(?:[.\\-]([a-z0-9]+)|);',
- 'os_replacement' => 'Android',
- ),
- 19 =>
- array (
- 'regex' => '^UCWEB.*; (iPad|iPh|iPd) OS (\\d+)_(\\d+)(?:_(\\d+)|);',
- 'os_replacement' => 'iOS',
- ),
- 20 =>
- array (
- 'regex' => '^UCWEB.*; (wds) (\\d+)\\.(\\d+)(?:\\.(\\d+)|);',
- 'os_replacement' => 'Windows Phone',
- ),
- 21 =>
- array (
- 'regex' => '^(JUC).*; ?U; ?(?:Android|)(\\d+)\\.(\\d+)(?:[\\.\\-]([a-z0-9]+)|)',
- 'os_replacement' => 'Android',
- ),
- 22 =>
- array (
- 'regex' => '(android)\\s(?:mobile\\/)(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)|)|)',
- 'os_replacement' => 'Android',
- ),
- 23 =>
- array (
- 'regex' => '(Silk-Accelerated=[a-z]{4,5})',
- 'os_replacement' => 'Android',
- ),
- 24 =>
- array (
- 'regex' => '(x86_64|aarch64)\\ (\\d+)\\.(\\d+)\\.(\\d+).*Chrome.*(?:CitrixChromeApp)$',
- 'os_replacement' => 'Chrome OS',
- ),
- 25 =>
- array (
- 'regex' => '(XBLWP7)',
- 'os_replacement' => 'Windows Phone',
- ),
- 26 =>
- array (
- 'regex' => '(Windows ?Mobile)',
- 'os_replacement' => 'Windows Mobile',
- ),
- 27 =>
- array (
- 'regex' => '(Windows 10)',
- 'os_replacement' => 'Windows',
- 'os_v1_replacement' => '10',
- ),
- 28 =>
- array (
- 'regex' => '(Windows (?:NT 5\\.2|NT 5\\.1))',
- 'os_replacement' => 'Windows',
- 'os_v1_replacement' => 'XP',
- ),
- 29 =>
- array (
- 'regex' => '(Windows NT 6\\.1)',
- 'os_replacement' => 'Windows',
- 'os_v1_replacement' => '7',
- ),
- 30 =>
- array (
- 'regex' => '(Windows NT 6\\.0)',
- 'os_replacement' => 'Windows',
- 'os_v1_replacement' => 'Vista',
- ),
- 31 =>
- array (
- 'regex' => '(Win 9x 4\\.90)',
- 'os_replacement' => 'Windows',
- 'os_v1_replacement' => 'ME',
- ),
- 32 =>
- array (
- 'regex' => '(Windows NT 6\\.2; ARM;)',
- 'os_replacement' => 'Windows',
- 'os_v1_replacement' => 'RT',
- ),
- 33 =>
- array (
- 'regex' => '(Windows NT 6\\.2)',
- 'os_replacement' => 'Windows',
- 'os_v1_replacement' => '8',
- ),
- 34 =>
- array (
- 'regex' => '(Windows NT 6\\.3; ARM;)',
- 'os_replacement' => 'Windows',
- 'os_v1_replacement' => 'RT 8',
- 'os_v2_replacement' => '1',
- ),
- 35 =>
- array (
- 'regex' => '(Windows NT 6\\.3)',
- 'os_replacement' => 'Windows',
- 'os_v1_replacement' => '8',
- 'os_v2_replacement' => '1',
- ),
- 36 =>
- array (
- 'regex' => '(Windows NT 6\\.4)',
- 'os_replacement' => 'Windows',
- 'os_v1_replacement' => '10',
- ),
- 37 =>
- array (
- 'regex' => '(Windows NT 10\\.0)',
- 'os_replacement' => 'Windows',
- 'os_v1_replacement' => '10',
- ),
- 38 =>
- array (
- 'regex' => '(Windows NT 5\\.0)',
- 'os_replacement' => 'Windows',
- 'os_v1_replacement' => '2000',
- ),
- 39 =>
- array (
- 'regex' => '(WinNT4.0)',
- 'os_replacement' => 'Windows',
- 'os_v1_replacement' => 'NT 4.0',
- ),
- 40 =>
- array (
- 'regex' => '(Windows ?CE)',
- 'os_replacement' => 'Windows',
- 'os_v1_replacement' => 'CE',
- ),
- 41 =>
- array (
- 'regex' => 'Win(?:dows)? ?(95|98|3.1|NT|ME|2000|XP|Vista|7|CE)',
- 'os_replacement' => 'Windows',
- 'os_v1_replacement' => '$1',
- ),
- 42 =>
- array (
- 'regex' => 'Win16',
- 'os_replacement' => 'Windows',
- 'os_v1_replacement' => '3.1',
- ),
- 43 =>
- array (
- 'regex' => 'Win32',
- 'os_replacement' => 'Windows',
- 'os_v1_replacement' => '95',
- ),
- 44 =>
- array (
- 'regex' => '^Box.*Windows/([\\d.]+);',
- 'os_replacement' => 'Windows',
- 'os_v1_replacement' => '$1',
- ),
- 45 =>
- array (
- 'regex' => '(Tizen)[/ ](\\d+)\\.(\\d+)',
- ),
- 46 =>
- array (
- 'regex' => '((?:Mac[ +]?|; )OS[ +]X)[\\s+/](?:(\\d+)[_.](\\d+)(?:[_.](\\d+)|)|Mach-O)',
- 'os_replacement' => 'Mac OS X',
- ),
- 47 =>
- array (
- 'regex' => '\\w+\\s+Mac OS X\\s+\\w+\\s+(\\d+).(\\d+).(\\d+).*',
- 'os_replacement' => 'Mac OS X',
- 'os_v1_replacement' => '$1',
- 'os_v2_replacement' => '$2',
- 'os_v3_replacement' => '$3',
- ),
- 48 =>
- array (
- 'regex' => ' (Dar)(win)/(9).(\\d+).*\\((?:i386|x86_64|Power Macintosh)\\)',
- 'os_replacement' => 'Mac OS X',
- 'os_v1_replacement' => '10',
- 'os_v2_replacement' => '5',
- ),
- 49 =>
- array (
- 'regex' => ' (Dar)(win)/(10).(\\d+).*\\((?:i386|x86_64)\\)',
- 'os_replacement' => 'Mac OS X',
- 'os_v1_replacement' => '10',
- 'os_v2_replacement' => '6',
- ),
- 50 =>
- array (
- 'regex' => ' (Dar)(win)/(11).(\\d+).*\\((?:i386|x86_64)\\)',
- 'os_replacement' => 'Mac OS X',
- 'os_v1_replacement' => '10',
- 'os_v2_replacement' => '7',
- ),
- 51 =>
- array (
- 'regex' => ' (Dar)(win)/(12).(\\d+).*\\((?:i386|x86_64)\\)',
- 'os_replacement' => 'Mac OS X',
- 'os_v1_replacement' => '10',
- 'os_v2_replacement' => '8',
- ),
- 52 =>
- array (
- 'regex' => ' (Dar)(win)/(13).(\\d+).*\\((?:i386|x86_64)\\)',
- 'os_replacement' => 'Mac OS X',
- 'os_v1_replacement' => '10',
- 'os_v2_replacement' => '9',
- ),
- 53 =>
- array (
- 'regex' => 'Mac_PowerPC',
- 'os_replacement' => 'Mac OS',
- ),
- 54 =>
- array (
- 'regex' => '(?:PPC|Intel) (Mac OS X)',
- ),
- 55 =>
- array (
- 'regex' => '^Box.*;(Darwin)/(10)\\.(1\\d)(?:\\.(\\d+)|)',
- 'os_replacement' => 'Mac OS X',
- ),
- 56 =>
- array (
- 'regex' => '(Apple\\s?TV)(?:/(\\d+)\\.(\\d+)|)',
- 'os_replacement' => 'ATV OS X',
- ),
- 57 =>
- array (
- 'regex' => '(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS)[ +]+(\\d+)[_\\.](\\d+)(?:[_\\.](\\d+)|)',
- 'os_replacement' => 'iOS',
- ),
- 58 =>
- array (
- 'regex' => '(iPhone|iPad|iPod); Opera',
- 'os_replacement' => 'iOS',
- ),
- 59 =>
- array (
- 'regex' => '(iPhone|iPad|iPod).*Mac OS X.*Version/(\\d+)\\.(\\d+)',
- 'os_replacement' => 'iOS',
- ),
- 60 =>
- array (
- 'regex' => '(CFNetwork)/(5)48\\.0\\.3.* Darwin/11\\.0\\.0',
- 'os_replacement' => 'iOS',
- ),
- 61 =>
- array (
- 'regex' => '(CFNetwork)/(5)48\\.(0)\\.4.* Darwin/(1)1\\.0\\.0',
- 'os_replacement' => 'iOS',
- ),
- 62 =>
- array (
- 'regex' => '(CFNetwork)/(5)48\\.(1)\\.4',
- 'os_replacement' => 'iOS',
- ),
- 63 =>
- array (
- 'regex' => '(CFNetwork)/(4)85\\.1(3)\\.9',
- 'os_replacement' => 'iOS',
- ),
- 64 =>
- array (
- 'regex' => '(CFNetwork)/(6)09\\.(1)\\.4',
- 'os_replacement' => 'iOS',
- ),
- 65 =>
- array (
- 'regex' => '(CFNetwork)/(6)(0)9',
- 'os_replacement' => 'iOS',
- ),
- 66 =>
- array (
- 'regex' => '(CFNetwork)/6(7)2\\.(1)\\.13',
- 'os_replacement' => 'iOS',
- ),
- 67 =>
- array (
- 'regex' => '(CFNetwork)/6(7)2\\.(1)\\.(1)4',
- 'os_replacement' => 'iOS',
- ),
- 68 =>
- array (
- 'regex' => '(CF)(Network)/6(7)(2)\\.1\\.15',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '7',
- 'os_v2_replacement' => '1',
- ),
- 69 =>
- array (
- 'regex' => '(CFNetwork)/6(7)2\\.(0)\\.(?:2|8)',
- 'os_replacement' => 'iOS',
- ),
- 70 =>
- array (
- 'regex' => '(CFNetwork)/709\\.1',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '8',
- 'os_v2_replacement' => '0.b5',
- ),
- 71 =>
- array (
- 'regex' => '(CF)(Network)/711\\.(\\d)',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '8',
- ),
- 72 =>
- array (
- 'regex' => '(CF)(Network)/(720)\\.(\\d)',
- 'os_replacement' => 'Mac OS X',
- 'os_v1_replacement' => '10',
- 'os_v2_replacement' => '10',
- ),
- 73 =>
- array (
- 'regex' => '(CF)(Network)/(760)\\.(\\d)',
- 'os_replacement' => 'Mac OS X',
- 'os_v1_replacement' => '10',
- 'os_v2_replacement' => '11',
- ),
- 74 =>
- array (
- 'regex' => 'CFNetwork/7.* Darwin/15\\.4\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '9',
- 'os_v2_replacement' => '3',
- 'os_v3_replacement' => '1',
- ),
- 75 =>
- array (
- 'regex' => 'CFNetwork/7.* Darwin/15\\.5\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '9',
- 'os_v2_replacement' => '3',
- 'os_v3_replacement' => '2',
- ),
- 76 =>
- array (
- 'regex' => 'CFNetwork/7.* Darwin/15\\.6\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '9',
- 'os_v2_replacement' => '3',
- 'os_v3_replacement' => '5',
- ),
- 77 =>
- array (
- 'regex' => '(CF)(Network)/758\\.(\\d)',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '9',
- ),
- 78 =>
- array (
- 'regex' => 'CFNetwork/808\\.3 Darwin/16\\.3\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '10',
- 'os_v2_replacement' => '2',
- 'os_v3_replacement' => '1',
- ),
- 79 =>
- array (
- 'regex' => '(CF)(Network)/808\\.(\\d)',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '10',
- ),
- 80 =>
- array (
- 'regex' => 'CFNetwork/.* Darwin/17\\.\\d+.*\\(x86_64\\)',
- 'os_replacement' => 'Mac OS X',
- 'os_v1_replacement' => '10',
- 'os_v2_replacement' => '13',
- ),
- 81 =>
- array (
- 'regex' => 'CFNetwork/.* Darwin/16\\.\\d+.*\\(x86_64\\)',
- 'os_replacement' => 'Mac OS X',
- 'os_v1_replacement' => '10',
- 'os_v2_replacement' => '12',
- ),
- 82 =>
- array (
- 'regex' => 'CFNetwork/8.* Darwin/15\\.\\d+.*\\(x86_64\\)',
- 'os_replacement' => 'Mac OS X',
- 'os_v1_replacement' => '10',
- 'os_v2_replacement' => '11',
- ),
- 83 =>
- array (
- 'regex' => 'CFNetwork/.* Darwin/(9)\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '1',
- ),
- 84 =>
- array (
- 'regex' => 'CFNetwork/.* Darwin/(10)\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '4',
- ),
- 85 =>
- array (
- 'regex' => 'CFNetwork/.* Darwin/(11)\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '5',
- ),
- 86 =>
- array (
- 'regex' => 'CFNetwork/.* Darwin/(13)\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '6',
- ),
- 87 =>
- array (
- 'regex' => 'CFNetwork/6.* Darwin/(14)\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '7',
- ),
- 88 =>
- array (
- 'regex' => 'CFNetwork/7.* Darwin/(14)\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '8',
- 'os_v2_replacement' => '0',
- ),
- 89 =>
- array (
- 'regex' => 'CFNetwork/7.* Darwin/(15)\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '9',
- 'os_v2_replacement' => '0',
- ),
- 90 =>
- array (
- 'regex' => 'CFNetwork/8.* Darwin/16\\.5\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '10',
- 'os_v2_replacement' => '3',
- ),
- 91 =>
- array (
- 'regex' => 'CFNetwork/8.* Darwin/16\\.6\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '10',
- 'os_v2_replacement' => '3',
- 'os_v3_replacement' => '2',
- ),
- 92 =>
- array (
- 'regex' => 'CFNetwork/8.* Darwin/16\\.7\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '10',
- 'os_v2_replacement' => '3',
- 'os_v3_replacement' => '3',
- ),
- 93 =>
- array (
- 'regex' => 'CFNetwork/8.* Darwin/(16)\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '10',
- ),
- 94 =>
- array (
- 'regex' => 'CFNetwork/8.* Darwin/17\\.0\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '11',
- 'os_v2_replacement' => '0',
- ),
- 95 =>
- array (
- 'regex' => 'CFNetwork/8.* Darwin/17\\.2\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '11',
- 'os_v2_replacement' => '1',
- ),
- 96 =>
- array (
- 'regex' => 'CFNetwork/8.* Darwin/17\\.3\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '11',
- 'os_v2_replacement' => '2',
- ),
- 97 =>
- array (
- 'regex' => 'CFNetwork/8.* Darwin/17\\.4\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '11',
- 'os_v2_replacement' => '2',
- 'os_v3_replacement' => '6',
- ),
- 98 =>
- array (
- 'regex' => 'CFNetwork/8.* Darwin/17\\.5\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '11',
- 'os_v2_replacement' => '3',
- ),
- 99 =>
- array (
- 'regex' => 'CFNetwork/9.* Darwin/17\\.6\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '11',
- 'os_v2_replacement' => '4',
- ),
- 100 =>
- array (
- 'regex' => 'CFNetwork/9.* Darwin/17\\.7\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '11',
- 'os_v2_replacement' => '4',
- 'os_v3_replacement' => '1',
- ),
- 101 =>
- array (
- 'regex' => 'CFNetwork/8.* Darwin/(17)\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '11',
- ),
- 102 =>
- array (
- 'regex' => 'CFNetwork/9.* Darwin/18\\.0\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '12',
- 'os_v2_replacement' => '0',
- ),
- 103 =>
- array (
- 'regex' => 'CFNetwork/9.* Darwin/(18)\\.\\d+',
- 'os_replacement' => 'iOS',
- 'os_v1_replacement' => '12',
- ),
- 104 =>
- array (
- 'regex' => 'CFNetwork/.* Darwin/',
- 'os_replacement' => 'iOS',
- ),
- 105 =>
- array (
- 'regex' => '\\b(iOS[ /]|iOS; |iPhone(?:/| v|[ _]OS[/,]|; | OS : |\\d,\\d/|\\d,\\d; )|iPad/)(\\d{1,2})[_\\.](\\d{1,2})(?:[_\\.](\\d+)|)',
- 'os_replacement' => 'iOS',
- ),
- 106 =>
- array (
- 'regex' => '\\((iOS);',
- ),
- 107 =>
- array (
- 'regex' => '(watchOS)/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- 'os_replacement' => 'WatchOS',
- ),
- 108 =>
- array (
- 'regex' => 'Outlook-(iOS)/\\d+\\.\\d+\\.prod\\.iphone',
- ),
- 109 =>
- array (
- 'regex' => '(iPod|iPhone|iPad)',
- 'os_replacement' => 'iOS',
- ),
- 110 =>
- array (
- 'regex' => '(tvOS)[/ ](\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- 'os_replacement' => 'tvOS',
- ),
- 111 =>
- array (
- 'regex' => '(CrOS) [a-z0-9_]+ (\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- 'os_replacement' => 'Chrome OS',
- ),
- 112 =>
- array (
- 'regex' => '([Dd]ebian)',
- 'os_replacement' => 'Debian',
- ),
- 113 =>
- array (
- 'regex' => '(Linux Mint)(?:/(\\d+)|)',
- ),
- 114 =>
- array (
- 'regex' => '(Mandriva)(?: Linux|)/(?:[\\d.-]+m[a-z]{2}(\\d+).(\\d)|)',
- ),
- 115 =>
- array (
- 'regex' => '(Symbian[Oo][Ss])[/ ](\\d+)\\.(\\d+)',
- 'os_replacement' => 'Symbian OS',
- ),
- 116 =>
- array (
- 'regex' => '(Symbian/3).+NokiaBrowser/7\\.3',
- 'os_replacement' => 'Symbian^3 Anna',
- ),
- 117 =>
- array (
- 'regex' => '(Symbian/3).+NokiaBrowser/7\\.4',
- 'os_replacement' => 'Symbian^3 Belle',
- ),
- 118 =>
- array (
- 'regex' => '(Symbian/3)',
- 'os_replacement' => 'Symbian^3',
- ),
- 119 =>
- array (
- 'regex' => '\\b(Series 60|SymbOS|S60Version|S60V\\d|S60\\b)',
- 'os_replacement' => 'Symbian OS',
- ),
- 120 =>
- array (
- 'regex' => '(MeeGo)',
- ),
- 121 =>
- array (
- 'regex' => 'Symbian [Oo][Ss]',
- 'os_replacement' => 'Symbian OS',
- ),
- 122 =>
- array (
- 'regex' => 'Series40;',
- 'os_replacement' => 'Nokia Series 40',
- ),
- 123 =>
- array (
- 'regex' => 'Series30Plus;',
- 'os_replacement' => 'Nokia Series 30 Plus',
- ),
- 124 =>
- array (
- 'regex' => '(BB10);.+Version/(\\d+)\\.(\\d+)\\.(\\d+)',
- 'os_replacement' => 'BlackBerry OS',
- ),
- 125 =>
- array (
- 'regex' => '(Black[Bb]erry)[0-9a-z]+/(\\d+)\\.(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- 'os_replacement' => 'BlackBerry OS',
- ),
- 126 =>
- array (
- 'regex' => '(Black[Bb]erry).+Version/(\\d+)\\.(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- 'os_replacement' => 'BlackBerry OS',
- ),
- 127 =>
- array (
- 'regex' => '(RIM Tablet OS) (\\d+)\\.(\\d+)\\.(\\d+)',
- 'os_replacement' => 'BlackBerry Tablet OS',
- ),
- 128 =>
- array (
- 'regex' => '(Play[Bb]ook)',
- 'os_replacement' => 'BlackBerry Tablet OS',
- ),
- 129 =>
- array (
- 'regex' => '(Black[Bb]erry)',
- 'os_replacement' => 'BlackBerry OS',
- ),
- 130 =>
- array (
- 'regex' => '(K[Aa][Ii]OS)\\/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- 'os_replacement' => 'KaiOS',
- ),
- 131 =>
- array (
- 'regex' => '\\((?:Mobile|Tablet);.+Gecko/18.0 Firefox/\\d+\\.\\d+',
- 'os_replacement' => 'Firefox OS',
- 'os_v1_replacement' => '1',
- 'os_v2_replacement' => '0',
- 'os_v3_replacement' => '1',
- ),
- 132 =>
- array (
- 'regex' => '\\((?:Mobile|Tablet);.+Gecko/18.1 Firefox/\\d+\\.\\d+',
- 'os_replacement' => 'Firefox OS',
- 'os_v1_replacement' => '1',
- 'os_v2_replacement' => '1',
- ),
- 133 =>
- array (
- 'regex' => '\\((?:Mobile|Tablet);.+Gecko/26.0 Firefox/\\d+\\.\\d+',
- 'os_replacement' => 'Firefox OS',
- 'os_v1_replacement' => '1',
- 'os_v2_replacement' => '2',
- ),
- 134 =>
- array (
- 'regex' => '\\((?:Mobile|Tablet);.+Gecko/28.0 Firefox/\\d+\\.\\d+',
- 'os_replacement' => 'Firefox OS',
- 'os_v1_replacement' => '1',
- 'os_v2_replacement' => '3',
- ),
- 135 =>
- array (
- 'regex' => '\\((?:Mobile|Tablet);.+Gecko/30.0 Firefox/\\d+\\.\\d+',
- 'os_replacement' => 'Firefox OS',
- 'os_v1_replacement' => '1',
- 'os_v2_replacement' => '4',
- ),
- 136 =>
- array (
- 'regex' => '\\((?:Mobile|Tablet);.+Gecko/32.0 Firefox/\\d+\\.\\d+',
- 'os_replacement' => 'Firefox OS',
- 'os_v1_replacement' => '2',
- 'os_v2_replacement' => '0',
- ),
- 137 =>
- array (
- 'regex' => '\\((?:Mobile|Tablet);.+Gecko/34.0 Firefox/\\d+\\.\\d+',
- 'os_replacement' => 'Firefox OS',
- 'os_v1_replacement' => '2',
- 'os_v2_replacement' => '1',
- ),
- 138 =>
- array (
- 'regex' => '\\((?:Mobile|Tablet);.+Firefox/\\d+\\.\\d+',
- 'os_replacement' => 'Firefox OS',
- ),
- 139 =>
- array (
- 'regex' => '(BREW)[ /](\\d+)\\.(\\d+)\\.(\\d+)',
- ),
- 140 =>
- array (
- 'regex' => '(BREW);',
- ),
- 141 =>
- array (
- 'regex' => '(Brew MP|BMP)[ /](\\d+)\\.(\\d+)\\.(\\d+)',
- 'os_replacement' => 'Brew MP',
- ),
- 142 =>
- array (
- 'regex' => 'BMP;',
- 'os_replacement' => 'Brew MP',
- ),
- 143 =>
- array (
- 'regex' => '(GoogleTV)(?: (\\d+)\\.(\\d+)(?:\\.(\\d+)|)|/[\\da-z]+)',
- ),
- 144 =>
- array (
- 'regex' => '(WebTV)/(\\d+).(\\d+)',
- ),
- 145 =>
- array (
- 'regex' => '(CrKey)(?:[/](\\d+)\\.(\\d+)(?:\\.(\\d+)|)|)',
- 'os_replacement' => 'Chromecast',
- ),
- 146 =>
- array (
- 'regex' => '(hpw|web)OS/(\\d+)\\.(\\d+)(?:\\.(\\d+)|)',
- 'os_replacement' => 'webOS',
- ),
- 147 =>
- array (
- 'regex' => '(VRE);',
- ),
- 148 =>
- array (
- 'regex' => '(Fedora|Red Hat|PCLinuxOS|Puppy|Ubuntu|Kindle|Bada|Sailfish|Lubuntu|BackTrack|Slackware|(?:Free|Open|Net|\\b)BSD)[/ ](\\d+)\\.(\\d+)(?:\\.(\\d+)|)(?:\\.(\\d+)|)',
- ),
- 149 =>
- array (
- 'regex' => '(Linux)[ /](\\d+)\\.(\\d+)(?:\\.(\\d+)|).*gentoo',
- 'os_replacement' => 'Gentoo',
- ),
- 150 =>
- array (
- 'regex' => '\\((Bada);',
- ),
- 151 =>
- array (
- 'regex' => '(Windows|Android|WeTab|Maemo|Web0S)',
- ),
- 152 =>
- array (
- 'regex' => '(Ubuntu|Kubuntu|Arch Linux|CentOS|Slackware|Gentoo|openSUSE|SUSE|Red Hat|Fedora|PCLinuxOS|Mageia|(?:Free|Open|Net|\\b)BSD)',
- ),
- 153 =>
- array (
- 'regex' => '(Linux)(?:[ /](\\d+)\\.(\\d+)(?:\\.(\\d+)|)|)',
- ),
- 154 =>
- array (
- 'regex' => 'SunOS',
- 'os_replacement' => 'Solaris',
- ),
- 155 =>
- array (
- 'regex' => '\\(linux-gnu\\)',
- 'os_replacement' => 'Linux',
- ),
- 156 =>
- array (
- 'regex' => '\\(x86_64-redhat-linux-gnu\\)',
- 'os_replacement' => 'Red Hat',
- ),
- 157 =>
- array (
- 'regex' => '\\((freebsd)(\\d+)\\.(\\d+)\\)',
- 'os_replacement' => 'FreeBSD',
- ),
- 158 =>
- array (
- 'regex' => 'linux',
- 'os_replacement' => 'Linux',
- ),
- 159 =>
- array (
- 'regex' => '^(Roku)/DVP-(\\d+)\\.(\\d+)',
- ),
- ),
- 'device_parsers' =>
- array (
- 0 =>
- array (
- 'regex' => '(?:(?:iPhone|Windows CE|Windows Phone|Android).*(?:(?:Bot|Yeti)-Mobile|YRSpider|BingPreview|bots?/\\d|(?:bot|spider)\\.html)|AdsBot-Google-Mobile.*iPhone)',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Spider',
- 'brand_replacement' => 'Spider',
- 'model_replacement' => 'Smartphone',
- ),
- 1 =>
- array (
- 'regex' => '(?:DoCoMo|\\bMOT\\b|\\bLG\\b|Nokia|Samsung|SonyEricsson).*(?:(?:Bot|Yeti)-Mobile|bots?/\\d|(?:bot|crawler)\\.html|(?:jump|google|Wukong)bot|ichiro/mobile|/spider|YahooSeeker)',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Spider',
- 'brand_replacement' => 'Spider',
- 'model_replacement' => 'Feature Phone',
- ),
- 2 =>
- array (
- 'regex' => ' PTST/\\d+(?:\\.)?\\d+$',
- 'device_replacement' => 'Spider',
- 'brand_replacement' => 'Spider',
- ),
- 3 =>
- array (
- 'regex' => 'X11; Datanyze; Linux',
- 'device_replacement' => 'Spider',
- 'brand_replacement' => 'Spider',
- ),
- 4 =>
- array (
- 'regex' => '\\bSmartWatch *\\( *([^;]+) *; *([^;]+) *;',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => '$1',
- 'model_replacement' => '$2',
- ),
- 5 =>
- array (
- 'regex' => 'Android Application[^\\-]+ - (Sony) ?(Ericsson|) (.+) \\w+ - ',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => '$1$2',
- 'model_replacement' => '$3',
- ),
- 6 =>
- array (
- 'regex' => 'Android Application[^\\-]+ - (?:HTC|HUAWEI|LGE|LENOVO|MEDION|TCT) (HTC|HUAWEI|LG|LENOVO|MEDION|ALCATEL)[ _\\-](.+) \\w+ - ',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => '$1',
- 'model_replacement' => '$2',
- ),
- 7 =>
- array (
- 'regex' => 'Android Application[^\\-]+ - ([^ ]+) (.+) \\w+ - ',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => '$1',
- 'model_replacement' => '$2',
- ),
- 8 =>
- array (
- 'regex' => '; *([BLRQ]C\\d{4}[A-Z]+) +Build/',
- 'device_replacement' => '3Q $1',
- 'brand_replacement' => '3Q',
- 'model_replacement' => '$1',
- ),
- 9 =>
- array (
- 'regex' => '; *(?:3Q_)([^;/]+) +Build',
- 'device_replacement' => '3Q $1',
- 'brand_replacement' => '3Q',
- 'model_replacement' => '$1',
- ),
- 10 =>
- array (
- 'regex' => 'Android [34].*; *(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700(?: Lite| 3G|)|A701|B1-A71|A1-\\d{3}|B1-\\d{3}|V360|V370|W500|W500P|W501|W501P|W510|W511|W700|Slider SL101|DA22[^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Acer',
- 'model_replacement' => '$1',
- ),
- 11 =>
- array (
- 'regex' => '; *Acer Iconia Tab ([^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Acer',
- 'model_replacement' => '$1',
- ),
- 12 =>
- array (
- 'regex' => '; *(Z1[1235]0|E320[^/]*|S500|S510|Liquid[^;/]*|Iconia A\\d+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Acer',
- 'model_replacement' => '$1',
- ),
- 13 =>
- array (
- 'regex' => '; *(Acer |ACER )([^;/]+) Build',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Acer',
- 'model_replacement' => '$2',
- ),
- 14 =>
- array (
- 'regex' => '; *(Advent |)(Vega(?:Bean|Comb|)).* Build',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Advent',
- 'model_replacement' => '$2',
- ),
- 15 =>
- array (
- 'regex' => '; *(Ainol |)((?:NOVO|[Nn]ovo)[^;/]+) Build',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Ainol',
- 'model_replacement' => '$2',
- ),
- 16 =>
- array (
- 'regex' => '; *AIRIS[ _\\-]?([^/;\\)]+) *(?:;|\\)|Build)',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Airis',
- 'model_replacement' => '$1',
- ),
- 17 =>
- array (
- 'regex' => '; *(OnePAD[^;/]+) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Airis',
- 'model_replacement' => '$1',
- ),
- 18 =>
- array (
- 'regex' => '; *Airpad[ \\-]([^;/]+) Build',
- 'device_replacement' => 'Airpad $1',
- 'brand_replacement' => 'Airpad',
- 'model_replacement' => '$1',
- ),
- 19 =>
- array (
- 'regex' => '; *(one ?touch) (EVO7|T10|T20) Build',
- 'device_replacement' => 'Alcatel One Touch $2',
- 'brand_replacement' => 'Alcatel',
- 'model_replacement' => 'One Touch $2',
- ),
- 20 =>
- array (
- 'regex' => '; *(?:alcatel[ _]|)(?:(?:one[ _]?touch[ _])|ot[ \\-])([^;/]+);? Build',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Alcatel One Touch $1',
- 'brand_replacement' => 'Alcatel',
- 'model_replacement' => 'One Touch $1',
- ),
- 21 =>
- array (
- 'regex' => '; *(TCL)[ _]([^;/]+) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => '$1',
- 'model_replacement' => '$2',
- ),
- 22 =>
- array (
- 'regex' => '; *(Vodafone Smart II|Optimus_Madrid) Build',
- 'device_replacement' => 'Alcatel $1',
- 'brand_replacement' => 'Alcatel',
- 'model_replacement' => '$1',
- ),
- 23 =>
- array (
- 'regex' => '; *BASE_Lutea_3 Build',
- 'device_replacement' => 'Alcatel One Touch 998',
- 'brand_replacement' => 'Alcatel',
- 'model_replacement' => 'One Touch 998',
- ),
- 24 =>
- array (
- 'regex' => '; *BASE_Varia Build',
- 'device_replacement' => 'Alcatel One Touch 918D',
- 'brand_replacement' => 'Alcatel',
- 'model_replacement' => 'One Touch 918D',
- ),
- 25 =>
- array (
- 'regex' => '; *((?:FINE|Fine)\\d[^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Allfine',
- 'model_replacement' => '$1',
- ),
- 26 =>
- array (
- 'regex' => '; *(ALLVIEW[ _]?|Allview[ _]?)((?:Speed|SPEED).*) Build/',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Allview',
- 'model_replacement' => '$2',
- ),
- 27 =>
- array (
- 'regex' => '; *(ALLVIEW[ _]?|Allview[ _]?|)(AX1_Shine|AX2_Frenzy) Build',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Allview',
- 'model_replacement' => '$2',
- ),
- 28 =>
- array (
- 'regex' => '; *(ALLVIEW[ _]?|Allview[ _]?)([^;/]*) Build',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Allview',
- 'model_replacement' => '$2',
- ),
- 29 =>
- array (
- 'regex' => '; *(A13-MID) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Allwinner',
- 'model_replacement' => '$1',
- ),
- 30 =>
- array (
- 'regex' => '; *(Allwinner)[ _\\-]?([^;/]+) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Allwinner',
- 'model_replacement' => '$1',
- ),
- 31 =>
- array (
- 'regex' => '; *(A651|A701B?|A702|A703|A705|A706|A707|A711|A712|A713|A717|A722|A785|A801|A802|A803|A901|A902|A1002|A1003|A1006|A1007|A9701|A9703|Q710|Q80) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Amaway',
- 'model_replacement' => '$1',
- ),
- 32 =>
- array (
- 'regex' => '; *(?:AMOI|Amoi)[ _]([^;/]+) Build',
- 'device_replacement' => 'Amoi $1',
- 'brand_replacement' => 'Amoi',
- 'model_replacement' => '$1',
- ),
- 33 =>
- array (
- 'regex' => '^(?:AMOI|Amoi)[ _]([^;/]+) Linux',
- 'device_replacement' => 'Amoi $1',
- 'brand_replacement' => 'Amoi',
- 'model_replacement' => '$1',
- ),
- 34 =>
- array (
- 'regex' => '; *(MW(?:0[789]|10)[^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Aoc',
- 'model_replacement' => '$1',
- ),
- 35 =>
- array (
- 'regex' => '; *(G7|M1013|M1015G|M11[CG]?|M-?12[B]?|M15|M19[G]?|M30[ACQ]?|M31[GQ]|M32|M33[GQ]|M36|M37|M38|M701T|M710|M712B|M713|M715G|M716G|M71(?:G|GS|T|)|M72[T]?|M73[T]?|M75[GT]?|M77G|M79T|M7L|M7LN|M81|M810|M81T|M82|M92|M92KS|M92S|M717G|M721|M722G|M723|M725G|M739|M785|M791|M92SK|M93D) Build',
- 'device_replacement' => 'Aoson $1',
- 'brand_replacement' => 'Aoson',
- 'model_replacement' => '$1',
- ),
- 36 =>
- array (
- 'regex' => '; *Aoson ([^;/]+) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Aoson $1',
- 'brand_replacement' => 'Aoson',
- 'model_replacement' => '$1',
- ),
- 37 =>
- array (
- 'regex' => '; *[Aa]panda[ _\\-]([^;/]+) Build',
- 'device_replacement' => 'Apanda $1',
- 'brand_replacement' => 'Apanda',
- 'model_replacement' => '$1',
- ),
- 38 =>
- array (
- 'regex' => '; *(?:ARCHOS|Archos) ?(GAMEPAD.*?)(?: Build|[;/\\(\\)\\-])',
- 'device_replacement' => 'Archos $1',
- 'brand_replacement' => 'Archos',
- 'model_replacement' => '$1',
- ),
- 39 =>
- array (
- 'regex' => 'ARCHOS; GOGI; ([^;]+);',
- 'device_replacement' => 'Archos $1',
- 'brand_replacement' => 'Archos',
- 'model_replacement' => '$1',
- ),
- 40 =>
- array (
- 'regex' => '(?:ARCHOS|Archos)[ _]?(.*?)(?: Build|[;/\\(\\)\\-]|$)',
- 'device_replacement' => 'Archos $1',
- 'brand_replacement' => 'Archos',
- 'model_replacement' => '$1',
- ),
- 41 =>
- array (
- 'regex' => '; *(AN(?:7|8|9|10|13)[A-Z0-9]{1,4}) Build',
- 'device_replacement' => 'Archos $1',
- 'brand_replacement' => 'Archos',
- 'model_replacement' => '$1',
- ),
- 42 =>
- array (
- 'regex' => '; *(A28|A32|A43|A70(?:BHT|CHT|HB|S|X)|A101(?:B|C|IT)|A7EB|A7EB-WK|101G9|80G9) Build',
- 'device_replacement' => 'Archos $1',
- 'brand_replacement' => 'Archos',
- 'model_replacement' => '$1',
- ),
- 43 =>
- array (
- 'regex' => '; *(PAD-FMD[^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Arival',
- 'model_replacement' => '$1',
- ),
- 44 =>
- array (
- 'regex' => '; *(BioniQ) ?([^;/]+) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Arival',
- 'model_replacement' => '$1 $2',
- ),
- 45 =>
- array (
- 'regex' => '; *(AN\\d[^;/]+|ARCHM\\d+) Build',
- 'device_replacement' => 'Arnova $1',
- 'brand_replacement' => 'Arnova',
- 'model_replacement' => '$1',
- ),
- 46 =>
- array (
- 'regex' => '; *(?:ARNOVA|Arnova) ?([^;/]+) Build',
- 'device_replacement' => 'Arnova $1',
- 'brand_replacement' => 'Arnova',
- 'model_replacement' => '$1',
- ),
- 47 =>
- array (
- 'regex' => '; *(?:ASSISTANT |)(AP)-?([1789]\\d{2}[A-Z]{0,2}|80104) Build',
- 'device_replacement' => 'Assistant $1-$2',
- 'brand_replacement' => 'Assistant',
- 'model_replacement' => '$1-$2',
- ),
- 48 =>
- array (
- 'regex' => '; *(ME17\\d[^;/]*|ME3\\d{2}[^;/]+|K00[A-Z]|Nexus 10|Nexus 7(?: 2013|)|PadFone[^;/]*|Transformer[^;/]*|TF\\d{3}[^;/]*|eeepc) Build',
- 'device_replacement' => 'Asus $1',
- 'brand_replacement' => 'Asus',
- 'model_replacement' => '$1',
- ),
- 49 =>
- array (
- 'regex' => '; *ASUS[ _]*([^;/]+) Build',
- 'device_replacement' => 'Asus $1',
- 'brand_replacement' => 'Asus',
- 'model_replacement' => '$1',
- ),
- 50 =>
- array (
- 'regex' => '; *Garmin-Asus ([^;/]+) Build',
- 'device_replacement' => 'Garmin-Asus $1',
- 'brand_replacement' => 'Garmin-Asus',
- 'model_replacement' => '$1',
- ),
- 51 =>
- array (
- 'regex' => '; *(Garminfone) Build',
- 'device_replacement' => 'Garmin $1',
- 'brand_replacement' => 'Garmin-Asus',
- 'model_replacement' => '$1',
- ),
- 52 =>
- array (
- 'regex' => '; (\\@TAB-[^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Attab',
- 'model_replacement' => '$1',
- ),
- 53 =>
- array (
- 'regex' => '; *(T-(?:07|[^0]\\d)[^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Audiosonic',
- 'model_replacement' => '$1',
- ),
- 54 =>
- array (
- 'regex' => '; *(?:Axioo[ _\\-]([^;/]+)|(picopad)[ _\\-]([^;/]+)) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Axioo $1$2 $3',
- 'brand_replacement' => 'Axioo',
- 'model_replacement' => '$1$2 $3',
- ),
- 55 =>
- array (
- 'regex' => '; *(V(?:100|700|800)[^;/]*) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Azend',
- 'model_replacement' => '$1',
- ),
- 56 =>
- array (
- 'regex' => '; *(IBAK\\-[^;/]*) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Bak',
- 'model_replacement' => '$1',
- ),
- 57 =>
- array (
- 'regex' => '; *(HY5001|HY6501|X12|X21|I5) Build',
- 'device_replacement' => 'Bedove $1',
- 'brand_replacement' => 'Bedove',
- 'model_replacement' => '$1',
- ),
- 58 =>
- array (
- 'regex' => '; *(JC-[^;/]*) Build',
- 'device_replacement' => 'Benss $1',
- 'brand_replacement' => 'Benss',
- 'model_replacement' => '$1',
- ),
- 59 =>
- array (
- 'regex' => '; *(BB) ([^;/]+) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Blackberry',
- 'model_replacement' => '$2',
- ),
- 60 =>
- array (
- 'regex' => '; *(BlackBird)[ _](I8.*) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => '$1',
- 'model_replacement' => '$2',
- ),
- 61 =>
- array (
- 'regex' => '; *(BlackBird)[ _](.*) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => '$1',
- 'model_replacement' => '$2',
- ),
- 62 =>
- array (
- 'regex' => '; *([0-9]+BP[EM][^;/]*|Endeavour[^;/]+) Build',
- 'device_replacement' => 'Blaupunkt $1',
- 'brand_replacement' => 'Blaupunkt',
- 'model_replacement' => '$1',
- ),
- 63 =>
- array (
- 'regex' => '; *((?:BLU|Blu)[ _\\-])([^;/]+) Build',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Blu',
- 'model_replacement' => '$2',
- ),
- 64 =>
- array (
- 'regex' => '; *(?:BMOBILE )?(Blu|BLU|DASH [^;/]+|VIVO 4\\.3|TANK 4\\.5) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Blu',
- 'model_replacement' => '$1',
- ),
- 65 =>
- array (
- 'regex' => '; *(TOUCH\\d[^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Blusens',
- 'model_replacement' => '$1',
- ),
- 66 =>
- array (
- 'regex' => '; *(AX5\\d+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Bmobile',
- 'model_replacement' => '$1',
- ),
- 67 =>
- array (
- 'regex' => '; *([Bb]q) ([^;/]+);? Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'bq',
- 'model_replacement' => '$2',
- ),
- 68 =>
- array (
- 'regex' => '; *(Maxwell [^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'bq',
- 'model_replacement' => '$1',
- ),
- 69 =>
- array (
- 'regex' => '; *((?:B-Tab|B-TAB) ?\\d[^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Braun',
- 'model_replacement' => '$1',
- ),
- 70 =>
- array (
- 'regex' => '; *(Broncho) ([^;/]+) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => '$1',
- 'model_replacement' => '$2',
- ),
- 71 =>
- array (
- 'regex' => '; *CAPTIVA ([^;/]+) Build',
- 'device_replacement' => 'Captiva $1',
- 'brand_replacement' => 'Captiva',
- 'model_replacement' => '$1',
- ),
- 72 =>
- array (
- 'regex' => '; *(C771|CAL21|IS11CA) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Casio',
- 'model_replacement' => '$1',
- ),
- 73 =>
- array (
- 'regex' => '; *(?:Cat|CAT) ([^;/]+) Build',
- 'device_replacement' => 'Cat $1',
- 'brand_replacement' => 'Cat',
- 'model_replacement' => '$1',
- ),
- 74 =>
- array (
- 'regex' => '; *(?:Cat)(Nova.*) Build',
- 'device_replacement' => 'Cat $1',
- 'brand_replacement' => 'Cat',
- 'model_replacement' => '$1',
- ),
- 75 =>
- array (
- 'regex' => '; *(INM8002KP|ADM8000KP_[AB]) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Cat',
- 'model_replacement' => 'Tablet PHOENIX 8.1J0',
- ),
- 76 =>
- array (
- 'regex' => '; *(?:[Cc]elkon[ _\\*]|CELKON[ _\\*])([^;/\\)]+) ?(?:Build|;|\\))',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Celkon',
- 'model_replacement' => '$1',
- ),
- 77 =>
- array (
- 'regex' => 'Build/(?:[Cc]elkon)+_?([^;/_\\)]+)',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Celkon',
- 'model_replacement' => '$1',
- ),
- 78 =>
- array (
- 'regex' => '; *(CT)-?(\\d+) Build',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Celkon',
- 'model_replacement' => '$1$2',
- ),
- 79 =>
- array (
- 'regex' => '; *(A19|A19Q|A105|A107[^;/\\)]*) ?(?:Build|;|\\))',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Celkon',
- 'model_replacement' => '$1',
- ),
- 80 =>
- array (
- 'regex' => '; *(TPC[0-9]{4,5}) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'ChangJia',
- 'model_replacement' => '$1',
- ),
- 81 =>
- array (
- 'regex' => '; *(Cloudfone)[ _](Excite)([^ ][^;/]+) Build',
- 'device_replacement' => '$1 $2 $3',
- 'brand_replacement' => 'Cloudfone',
- 'model_replacement' => '$1 $2 $3',
- ),
- 82 =>
- array (
- 'regex' => '; *(Excite|ICE)[ _](\\d+[^;/]+) Build',
- 'device_replacement' => 'Cloudfone $1 $2',
- 'brand_replacement' => 'Cloudfone',
- 'model_replacement' => 'Cloudfone $1 $2',
- ),
- 83 =>
- array (
- 'regex' => '; *(Cloudfone|CloudPad)[ _]([^;/]+) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Cloudfone',
- 'model_replacement' => '$1 $2',
- ),
- 84 =>
- array (
- 'regex' => '; *((?:Aquila|Clanga|Rapax)[^;/]+) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Cmx',
- 'model_replacement' => '$1',
- ),
- 85 =>
- array (
- 'regex' => '; *(?:CFW-|Kyros )?(MID[0-9]{4}(?:[ABC]|SR|TV)?)(\\(3G\\)-4G| GB 8K| 3G| 8K| GB)? *(?:Build|[;\\)])',
- 'device_replacement' => 'CobyKyros $1$2',
- 'brand_replacement' => 'CobyKyros',
- 'model_replacement' => '$1$2',
- ),
- 86 =>
- array (
- 'regex' => '; *([^;/]*)Coolpad[ _]([^;/]+) Build',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Coolpad',
- 'model_replacement' => '$1$2',
- ),
- 87 =>
- array (
- 'regex' => '; *(CUBE[ _])?([KU][0-9]+ ?GT.*|A5300) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Cube',
- 'model_replacement' => '$2',
- ),
- 88 =>
- array (
- 'regex' => '; *CUBOT ([^;/]+) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Cubot',
- 'model_replacement' => '$1',
- ),
- 89 =>
- array (
- 'regex' => '; *(BOBBY) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Cubot',
- 'model_replacement' => '$1',
- ),
- 90 =>
- array (
- 'regex' => '; *(Dslide [^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Danew',
- 'model_replacement' => '$1',
- ),
- 91 =>
- array (
- 'regex' => '; *(XCD)[ _]?(28|35) Build',
- 'device_replacement' => 'Dell $1$2',
- 'brand_replacement' => 'Dell',
- 'model_replacement' => '$1$2',
- ),
- 92 =>
- array (
- 'regex' => '; *(001DL) Build',
- 'device_replacement' => 'Dell $1',
- 'brand_replacement' => 'Dell',
- 'model_replacement' => 'Streak',
- ),
- 93 =>
- array (
- 'regex' => '; *(?:Dell|DELL) (Streak) Build',
- 'device_replacement' => 'Dell $1',
- 'brand_replacement' => 'Dell',
- 'model_replacement' => 'Streak',
- ),
- 94 =>
- array (
- 'regex' => '; *(101DL|GS01|Streak Pro[^;/]*) Build',
- 'device_replacement' => 'Dell $1',
- 'brand_replacement' => 'Dell',
- 'model_replacement' => 'Streak Pro',
- ),
- 95 =>
- array (
- 'regex' => '; *([Ss]treak ?7) Build',
- 'device_replacement' => 'Dell $1',
- 'brand_replacement' => 'Dell',
- 'model_replacement' => 'Streak 7',
- ),
- 96 =>
- array (
- 'regex' => '; *(Mini-3iX) Build',
- 'device_replacement' => 'Dell $1',
- 'brand_replacement' => 'Dell',
- 'model_replacement' => '$1',
- ),
- 97 =>
- array (
- 'regex' => '; *(?:Dell|DELL)[ _](Aero|Venue|Thunder|Mini.*|Streak[ _]Pro) Build',
- 'device_replacement' => 'Dell $1',
- 'brand_replacement' => 'Dell',
- 'model_replacement' => '$1',
- ),
- 98 =>
- array (
- 'regex' => '; *Dell[ _]([^;/]+) Build',
- 'device_replacement' => 'Dell $1',
- 'brand_replacement' => 'Dell',
- 'model_replacement' => '$1',
- ),
- 99 =>
- array (
- 'regex' => '; *Dell ([^;/]+) Build',
- 'device_replacement' => 'Dell $1',
- 'brand_replacement' => 'Dell',
- 'model_replacement' => '$1',
- ),
- 100 =>
- array (
- 'regex' => '; *(TA[CD]-\\d+[^;/]*) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Denver',
- 'model_replacement' => '$1',
- ),
- 101 =>
- array (
- 'regex' => '; *(iP[789]\\d{2}(?:-3G)?|IP10\\d{2}(?:-8GB)?) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Dex',
- 'model_replacement' => '$1',
- ),
- 102 =>
- array (
- 'regex' => '; *(AirTab)[ _\\-]([^;/]+) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'DNS',
- 'model_replacement' => '$1 $2',
- ),
- 103 =>
- array (
- 'regex' => '; *(F\\-\\d[^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Fujitsu',
- 'model_replacement' => '$1',
- ),
- 104 =>
- array (
- 'regex' => '; *(HT-03A) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => 'Magic',
- ),
- 105 =>
- array (
- 'regex' => '; *(HT\\-\\d[^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => '$1',
- ),
- 106 =>
- array (
- 'regex' => '; *(L\\-\\d[^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'LG',
- 'model_replacement' => '$1',
- ),
- 107 =>
- array (
- 'regex' => '; *(N\\-\\d[^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Nec',
- 'model_replacement' => '$1',
- ),
- 108 =>
- array (
- 'regex' => '; *(P\\-\\d[^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Panasonic',
- 'model_replacement' => '$1',
- ),
- 109 =>
- array (
- 'regex' => '; *(SC\\-\\d[^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Samsung',
- 'model_replacement' => '$1',
- ),
- 110 =>
- array (
- 'regex' => '; *(SH\\-\\d[^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Sharp',
- 'model_replacement' => '$1',
- ),
- 111 =>
- array (
- 'regex' => '; *(SO\\-\\d[^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'SonyEricsson',
- 'model_replacement' => '$1',
- ),
- 112 =>
- array (
- 'regex' => '; *(T\\-0[12][^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Toshiba',
- 'model_replacement' => '$1',
- ),
- 113 =>
- array (
- 'regex' => '; *(DOOV)[ _]([^;/]+) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'DOOV',
- 'model_replacement' => '$2',
- ),
- 114 =>
- array (
- 'regex' => '; *(Enot|ENOT)[ -]?([^;/]+) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Enot',
- 'model_replacement' => '$2',
- ),
- 115 =>
- array (
- 'regex' => '; *[^;/]+ Build/(?:CROSS|Cross)+[ _\\-]([^\\)]+)',
- 'device_replacement' => 'CROSS $1',
- 'brand_replacement' => 'Evercoss',
- 'model_replacement' => 'Cross $1',
- ),
- 116 =>
- array (
- 'regex' => '; *(CROSS|Cross)[ _\\-]([^;/]+) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Evercoss',
- 'model_replacement' => 'Cross $2',
- ),
- 117 =>
- array (
- 'regex' => '; *Explay[_ ](.+?)(?:[\\)]| Build)',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Explay',
- 'model_replacement' => '$1',
- ),
- 118 =>
- array (
- 'regex' => '; *(IQ.*) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Fly',
- 'model_replacement' => '$1',
- ),
- 119 =>
- array (
- 'regex' => '; *(Fly|FLY)[ _](IQ[^;]+|F[34]\\d+[^;]*);? Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Fly',
- 'model_replacement' => '$2',
- ),
- 120 =>
- array (
- 'regex' => '; *(M532|Q572|FJL21) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Fujitsu',
- 'model_replacement' => '$1',
- ),
- 121 =>
- array (
- 'regex' => '; *(G1) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Galapad',
- 'model_replacement' => '$1',
- ),
- 122 =>
- array (
- 'regex' => '; *(Geeksphone) ([^;/]+) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => '$1',
- 'model_replacement' => '$2',
- ),
- 123 =>
- array (
- 'regex' => '; *(G[^F]?FIVE) ([^;/]+) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Gfive',
- 'model_replacement' => '$2',
- ),
- 124 =>
- array (
- 'regex' => '; *(Gionee)[ _\\-]([^;/]+)(?:/[^;/]+|) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Gionee',
- 'model_replacement' => '$2',
- ),
- 125 =>
- array (
- 'regex' => '; *(GN\\d+[A-Z]?|INFINITY_PASSION|Ctrl_V1) Build',
- 'device_replacement' => 'Gionee $1',
- 'brand_replacement' => 'Gionee',
- 'model_replacement' => '$1',
- ),
- 126 =>
- array (
- 'regex' => '; *(E3) Build/JOP40D',
- 'device_replacement' => 'Gionee $1',
- 'brand_replacement' => 'Gionee',
- 'model_replacement' => '$1',
- ),
- 127 =>
- array (
- 'regex' => '\\sGIONEE[-\\s_](\\w*)',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Gionee $1',
- 'brand_replacement' => 'Gionee',
- 'model_replacement' => '$1',
- ),
- 128 =>
- array (
- 'regex' => '; *((?:FONE|QUANTUM|INSIGNIA) \\d+[^;/]*|PLAYTAB) Build',
- 'device_replacement' => 'GoClever $1',
- 'brand_replacement' => 'GoClever',
- 'model_replacement' => '$1',
- ),
- 129 =>
- array (
- 'regex' => '; *GOCLEVER ([^;/]+) Build',
- 'device_replacement' => 'GoClever $1',
- 'brand_replacement' => 'GoClever',
- 'model_replacement' => '$1',
- ),
- 130 =>
- array (
- 'regex' => '; *(Glass \\d+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Google',
- 'model_replacement' => '$1',
- ),
- 131 =>
- array (
- 'regex' => '; *(Pixel.*) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Google',
- 'model_replacement' => '$1',
- ),
- 132 =>
- array (
- 'regex' => '; *(GSmart)[ -]([^/]+) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Gigabyte',
- 'model_replacement' => '$1 $2',
- ),
- 133 =>
- array (
- 'regex' => '; *(imx5[13]_[^/]+) Build',
- 'device_replacement' => 'Freescale $1',
- 'brand_replacement' => 'Freescale',
- 'model_replacement' => '$1',
- ),
- 134 =>
- array (
- 'regex' => '; *Haier[ _\\-]([^/]+) Build',
- 'device_replacement' => 'Haier $1',
- 'brand_replacement' => 'Haier',
- 'model_replacement' => '$1',
- ),
- 135 =>
- array (
- 'regex' => '; *(PAD1016) Build',
- 'device_replacement' => 'Haipad $1',
- 'brand_replacement' => 'Haipad',
- 'model_replacement' => '$1',
- ),
- 136 =>
- array (
- 'regex' => '; *(M701|M7|M8|M9) Build',
- 'device_replacement' => 'Haipad $1',
- 'brand_replacement' => 'Haipad',
- 'model_replacement' => '$1',
- ),
- 137 =>
- array (
- 'regex' => '; *(SN\\d+T[^;\\)/]*)(?: Build|[;\\)])',
- 'device_replacement' => 'Hannspree $1',
- 'brand_replacement' => 'Hannspree',
- 'model_replacement' => '$1',
- ),
- 138 =>
- array (
- 'regex' => 'Build/HCL ME Tablet ([^;\\)]+)[\\);]',
- 'device_replacement' => 'HCLme $1',
- 'brand_replacement' => 'HCLme',
- 'model_replacement' => '$1',
- ),
- 139 =>
- array (
- 'regex' => '; *([^;\\/]+) Build/HCL',
- 'device_replacement' => 'HCLme $1',
- 'brand_replacement' => 'HCLme',
- 'model_replacement' => '$1',
- ),
- 140 =>
- array (
- 'regex' => '; *(MID-?\\d{4}C[EM]) Build',
- 'device_replacement' => 'Hena $1',
- 'brand_replacement' => 'Hena',
- 'model_replacement' => '$1',
- ),
- 141 =>
- array (
- 'regex' => '; *(EG\\d{2,}|HS-[^;/]+|MIRA[^;/]+) Build',
- 'device_replacement' => 'Hisense $1',
- 'brand_replacement' => 'Hisense',
- 'model_replacement' => '$1',
- ),
- 142 =>
- array (
- 'regex' => '; *(andromax[^;/]+) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Hisense $1',
- 'brand_replacement' => 'Hisense',
- 'model_replacement' => '$1',
- ),
- 143 =>
- array (
- 'regex' => '; *(?:AMAZE[ _](S\\d+)|(S\\d+)[ _]AMAZE) Build',
- 'device_replacement' => 'AMAZE $1$2',
- 'brand_replacement' => 'hitech',
- 'model_replacement' => 'AMAZE $1$2',
- ),
- 144 =>
- array (
- 'regex' => '; *(PlayBook) Build',
- 'device_replacement' => 'HP $1',
- 'brand_replacement' => 'HP',
- 'model_replacement' => '$1',
- ),
- 145 =>
- array (
- 'regex' => '; *HP ([^/]+) Build',
- 'device_replacement' => 'HP $1',
- 'brand_replacement' => 'HP',
- 'model_replacement' => '$1',
- ),
- 146 =>
- array (
- 'regex' => '; *([^/]+_tenderloin) Build',
- 'device_replacement' => 'HP TouchPad',
- 'brand_replacement' => 'HP',
- 'model_replacement' => 'TouchPad',
- ),
- 147 =>
- array (
- 'regex' => '; *(HUAWEI |Huawei-|)([UY][^;/]+) Build/(?:Huawei|HUAWEI)([UY][^\\);]+)\\)',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Huawei',
- 'model_replacement' => '$2',
- ),
- 148 =>
- array (
- 'regex' => '; *([^;/]+) Build[/ ]Huawei(MT1-U06|[A-Z]+\\d+[^\\);]+)[^\\);]*\\)',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Huawei',
- 'model_replacement' => '$2',
- ),
- 149 =>
- array (
- 'regex' => '; *(S7|M860) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Huawei',
- 'model_replacement' => '$1',
- ),
- 150 =>
- array (
- 'regex' => '; *((?:HUAWEI|Huawei)[ \\-]?)(MediaPad) Build',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Huawei',
- 'model_replacement' => '$2',
- ),
- 151 =>
- array (
- 'regex' => '; *((?:HUAWEI[ _]?|Huawei[ _]|)Ascend[ _])([^;/]+) Build',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Huawei',
- 'model_replacement' => '$2',
- ),
- 152 =>
- array (
- 'regex' => '; *((?:HUAWEI|Huawei)[ _\\-]?)((?:G700-|MT-)[^;/]+) Build',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Huawei',
- 'model_replacement' => '$2',
- ),
- 153 =>
- array (
- 'regex' => '; *((?:HUAWEI|Huawei)[ _\\-]?)([^;/]+) Build',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Huawei',
- 'model_replacement' => '$2',
- ),
- 154 =>
- array (
- 'regex' => '; *(MediaPad[^;]+|SpringBoard) Build/Huawei',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Huawei',
- 'model_replacement' => '$1',
- ),
- 155 =>
- array (
- 'regex' => '; *([^;]+) Build/(?:Huawei|HUAWEI)',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Huawei',
- 'model_replacement' => '$1',
- ),
- 156 =>
- array (
- 'regex' => '; *([Uu])([89]\\d{3}) Build',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Huawei',
- 'model_replacement' => 'U$2',
- ),
- 157 =>
- array (
- 'regex' => '; *(?:Ideos |IDEOS )(S7) Build',
- 'device_replacement' => 'Huawei Ideos$1',
- 'brand_replacement' => 'Huawei',
- 'model_replacement' => 'Ideos$1',
- ),
- 158 =>
- array (
- 'regex' => '; *(?:Ideos |IDEOS )([^;/]+\\s*|\\s*)Build',
- 'device_replacement' => 'Huawei Ideos$1',
- 'brand_replacement' => 'Huawei',
- 'model_replacement' => 'Ideos$1',
- ),
- 159 =>
- array (
- 'regex' => '; *(Orange Daytona|Pulse|Pulse Mini|Vodafone 858|C8500|C8600|C8650|C8660|Nexus 6P|ATH-.+?) Build[/ ]',
- 'device_replacement' => 'Huawei $1',
- 'brand_replacement' => 'Huawei',
- 'model_replacement' => '$1',
- ),
- 160 =>
- array (
- 'regex' => '; *((?:[A-Z]{3})\\-L[A-Za0-9]{2})[\\)]',
- 'device_replacement' => 'Huawei $1',
- 'brand_replacement' => 'Huawei',
- 'model_replacement' => '$1',
- ),
- 161 =>
- array (
- 'regex' => '; *HTC[ _]([^;]+); Windows Phone',
- 'device_replacement' => 'HTC $1',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => '$1',
- ),
- 162 =>
- array (
- 'regex' => '; *(?:HTC[ _/])+([^ _/]+)(?:[/\\\\]1\\.0 | V|/| +)\\d+\\.\\d[\\d\\.]*(?: *Build|\\))',
- 'device_replacement' => 'HTC $1',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => '$1',
- ),
- 163 =>
- array (
- 'regex' => '; *(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)|)(?:[/\\\\]1\\.0 | V|/| +)\\d+\\.\\d[\\d\\.]*(?: *Build|\\))',
- 'device_replacement' => 'HTC $1 $2',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => '$1 $2',
- ),
- 164 =>
- array (
- 'regex' => '; *(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)|)|)(?:[/\\\\]1\\.0 | V|/| +)\\d+\\.\\d[\\d\\.]*(?: *Build|\\))',
- 'device_replacement' => 'HTC $1 $2 $3',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => '$1 $2 $3',
- ),
- 165 =>
- array (
- 'regex' => '; *(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)|)|)|)(?:[/\\\\]1\\.0 | V|/| +)\\d+\\.\\d[\\d\\.]*(?: *Build|\\))',
- 'device_replacement' => 'HTC $1 $2 $3 $4',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => '$1 $2 $3 $4',
- ),
- 166 =>
- array (
- 'regex' => '; *(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/;]+)(?: *Build|[;\\)]| - )',
- 'device_replacement' => 'HTC $1',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => '$1',
- ),
- 167 =>
- array (
- 'regex' => '; *(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/]+)(?:[ _/]([^ _/;\\)]+)|)(?: *Build|[;\\)]| - )',
- 'device_replacement' => 'HTC $1 $2',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => '$1 $2',
- ),
- 168 =>
- array (
- 'regex' => '; *(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/;\\)]+)|)|)(?: *Build|[;\\)]| - )',
- 'device_replacement' => 'HTC $1 $2 $3',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => '$1 $2 $3',
- ),
- 169 =>
- array (
- 'regex' => '; *(?:(?:HTC|htc)(?:_blocked|)[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ /;]+)|)|)|)(?: *Build|[;\\)]| - )',
- 'device_replacement' => 'HTC $1 $2 $3 $4',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => '$1 $2 $3 $4',
- ),
- 170 =>
- array (
- 'regex' => 'HTC Streaming Player [^\\/]*/[^\\/]*/ htc_([^/]+) /',
- 'device_replacement' => 'HTC $1',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => '$1',
- ),
- 171 =>
- array (
- 'regex' => '(?:[;,] *|^)(?:htccn_chs-|)HTC[ _-]?([^;]+?)(?: *Build|clay|Android|-?Mozilla| Opera| Profile| UNTRUSTED|[;/\\(\\)]|$)',
- 'regex_flag' => 'i',
- 'device_replacement' => 'HTC $1',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => '$1',
- ),
- 172 =>
- array (
- 'regex' => '; *(A6277|ADR6200|ADR6300|ADR6350|ADR6400[A-Z]*|ADR6425[A-Z]*|APX515CKT|ARIA|Desire[^_ ]*|Dream|EndeavorU|Eris|Evo|Flyer|HD2|Hero|HERO200|Hero CDMA|HTL21|Incredible|Inspire[A-Z0-9]*|Legend|Liberty|Nexus ?(?:One|HD2)|One|One S C2|One[ _]?(?:S|V|X\\+?)\\w*|PC36100|PG06100|PG86100|S31HT|Sensation|Wildfire)(?: Build|[/;\\(\\)])',
- 'regex_flag' => 'i',
- 'device_replacement' => 'HTC $1',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => '$1',
- ),
- 173 =>
- array (
- 'regex' => '; *(ADR6200|ADR6400L|ADR6425LVW|Amaze|DesireS?|EndeavorU|Eris|EVO|Evo\\d[A-Z]+|HD2|IncredibleS?|Inspire[A-Z0-9]*|Inspire[A-Z0-9]*|Sensation[A-Z0-9]*|Wildfire)[ _-](.+?)(?:[/;\\)]|Build|MIUI|1\\.0)',
- 'regex_flag' => 'i',
- 'device_replacement' => 'HTC $1 $2',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => '$1 $2',
- ),
- 174 =>
- array (
- 'regex' => '; *HYUNDAI (T\\d[^/]*) Build',
- 'device_replacement' => 'Hyundai $1',
- 'brand_replacement' => 'Hyundai',
- 'model_replacement' => '$1',
- ),
- 175 =>
- array (
- 'regex' => '; *HYUNDAI ([^;/]+) Build',
- 'device_replacement' => 'Hyundai $1',
- 'brand_replacement' => 'Hyundai',
- 'model_replacement' => '$1',
- ),
- 176 =>
- array (
- 'regex' => '; *(X700|Hold X|MB-6900) Build',
- 'device_replacement' => 'Hyundai $1',
- 'brand_replacement' => 'Hyundai',
- 'model_replacement' => '$1',
- ),
- 177 =>
- array (
- 'regex' => '; *(?:iBall[ _\\-]|)(Andi)[ _]?(\\d[^;/]*) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'iBall',
- 'model_replacement' => '$1 $2',
- ),
- 178 =>
- array (
- 'regex' => '; *(IBall)(?:[ _]([^;/]+)|) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'iBall',
- 'model_replacement' => '$2',
- ),
- 179 =>
- array (
- 'regex' => '; *(NT-\\d+[^ ;/]*|Net[Tt]AB [^;/]+|Mercury [A-Z]+|iconBIT)(?: S/N:[^;/]+|) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'IconBIT',
- 'model_replacement' => '$1',
- ),
- 180 =>
- array (
- 'regex' => '; *(IMO)[ _]([^;/]+) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'IMO',
- 'model_replacement' => '$2',
- ),
- 181 =>
- array (
- 'regex' => '; *i-?mobile[ _]([^/]+) Build/',
- 'regex_flag' => 'i',
- 'device_replacement' => 'i-mobile $1',
- 'brand_replacement' => 'imobile',
- 'model_replacement' => '$1',
- ),
- 182 =>
- array (
- 'regex' => '; *(i-(?:style|note)[^/]*) Build/',
- 'regex_flag' => 'i',
- 'device_replacement' => 'i-mobile $1',
- 'brand_replacement' => 'imobile',
- 'model_replacement' => '$1',
- ),
- 183 =>
- array (
- 'regex' => '; *(ImPAD) ?(\\d+(?:.)*) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Impression',
- 'model_replacement' => '$1 $2',
- ),
- 184 =>
- array (
- 'regex' => '; *(Infinix)[ _]([^;/]+) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Infinix',
- 'model_replacement' => '$2',
- ),
- 185 =>
- array (
- 'regex' => '; *(Informer)[ \\-]([^;/]+) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Informer',
- 'model_replacement' => '$2',
- ),
- 186 =>
- array (
- 'regex' => '; *(TAB) ?([78][12]4) Build',
- 'device_replacement' => 'Intenso $1',
- 'brand_replacement' => 'Intenso',
- 'model_replacement' => '$1 $2',
- ),
- 187 =>
- array (
- 'regex' => '; *(?:Intex[ _]|)(AQUA|Aqua)([ _\\.\\-])([^;/]+) *(?:Build|;)',
- 'device_replacement' => '$1$2$3',
- 'brand_replacement' => 'Intex',
- 'model_replacement' => '$1 $3',
- ),
- 188 =>
- array (
- 'regex' => '; *(?:INTEX|Intex)(?:[_ ]([^\\ _;/]+))(?:[_ ]([^\\ _;/]+)|) *(?:Build|;)',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Intex',
- 'model_replacement' => '$1 $2',
- ),
- 189 =>
- array (
- 'regex' => '; *([iI]Buddy)[ _]?(Connect)(?:_|\\?_| |)([^;/]*) *(?:Build|;)',
- 'device_replacement' => '$1 $2 $3',
- 'brand_replacement' => 'Intex',
- 'model_replacement' => 'iBuddy $2 $3',
- ),
- 190 =>
- array (
- 'regex' => '; *(I-Buddy)[ _]([^;/]+) *(?:Build|;)',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Intex',
- 'model_replacement' => 'iBuddy $2',
- ),
- 191 =>
- array (
- 'regex' => '; *(iOCEAN) ([^/]+) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'iOCEAN',
- 'model_replacement' => '$2',
- ),
- 192 =>
- array (
- 'regex' => '; *(TP\\d+(?:\\.\\d+|)\\-\\d[^;/]+) Build',
- 'device_replacement' => 'ionik $1',
- 'brand_replacement' => 'ionik',
- 'model_replacement' => '$1',
- ),
- 193 =>
- array (
- 'regex' => '; *(M702pro) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Iru',
- 'model_replacement' => '$1',
- ),
- 194 =>
- array (
- 'regex' => '; *(DE88Plus|MD70) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Ivio',
- 'model_replacement' => '$1',
- ),
- 195 =>
- array (
- 'regex' => '; *IVIO[_\\-]([^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Ivio',
- 'model_replacement' => '$1',
- ),
- 196 =>
- array (
- 'regex' => '; *(TPC-\\d+|JAY-TECH) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Jaytech',
- 'model_replacement' => '$1',
- ),
- 197 =>
- array (
- 'regex' => '; *(JY-[^;/]+|G[234]S?) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Jiayu',
- 'model_replacement' => '$1',
- ),
- 198 =>
- array (
- 'regex' => '; *(JXD)[ _\\-]([^;/]+) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'JXD',
- 'model_replacement' => '$2',
- ),
- 199 =>
- array (
- 'regex' => '; *Karbonn[ _]?([^;/]+) *(?:Build|;)',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Karbonn',
- 'model_replacement' => '$1',
- ),
- 200 =>
- array (
- 'regex' => '; *([^;]+) Build/Karbonn',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Karbonn',
- 'model_replacement' => '$1',
- ),
- 201 =>
- array (
- 'regex' => '; *(A11|A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2|Titanium S\\d) +Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Karbonn',
- 'model_replacement' => '$1',
- ),
- 202 =>
- array (
- 'regex' => '; *(IS01|IS03|IS05|IS\\d{2}SH) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Sharp',
- 'model_replacement' => '$1',
- ),
- 203 =>
- array (
- 'regex' => '; *(IS04) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Regza',
- 'model_replacement' => '$1',
- ),
- 204 =>
- array (
- 'regex' => '; *(IS06|IS\\d{2}PT) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Pantech',
- 'model_replacement' => '$1',
- ),
- 205 =>
- array (
- 'regex' => '; *(IS11S) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'SonyEricsson',
- 'model_replacement' => 'Xperia Acro',
- ),
- 206 =>
- array (
- 'regex' => '; *(IS11CA) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Casio',
- 'model_replacement' => 'GzOne $1',
- ),
- 207 =>
- array (
- 'regex' => '; *(IS11LG) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'LG',
- 'model_replacement' => 'Optimus X',
- ),
- 208 =>
- array (
- 'regex' => '; *(IS11N) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Medias',
- 'model_replacement' => '$1',
- ),
- 209 =>
- array (
- 'regex' => '; *(IS11PT) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Pantech',
- 'model_replacement' => 'MIRACH',
- ),
- 210 =>
- array (
- 'regex' => '; *(IS12F) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Fujitsu',
- 'model_replacement' => 'Arrows ES',
- ),
- 211 =>
- array (
- 'regex' => '; *(IS12M) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Motorola',
- 'model_replacement' => 'XT909',
- ),
- 212 =>
- array (
- 'regex' => '; *(IS12S) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'SonyEricsson',
- 'model_replacement' => 'Xperia Acro HD',
- ),
- 213 =>
- array (
- 'regex' => '; *(ISW11F) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Fujitsu',
- 'model_replacement' => 'Arrowz Z',
- ),
- 214 =>
- array (
- 'regex' => '; *(ISW11HT) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => 'EVO',
- ),
- 215 =>
- array (
- 'regex' => '; *(ISW11K) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Kyocera',
- 'model_replacement' => 'DIGNO',
- ),
- 216 =>
- array (
- 'regex' => '; *(ISW11M) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Motorola',
- 'model_replacement' => 'Photon',
- ),
- 217 =>
- array (
- 'regex' => '; *(ISW11SC) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Samsung',
- 'model_replacement' => 'GALAXY S II WiMAX',
- ),
- 218 =>
- array (
- 'regex' => '; *(ISW12HT) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => 'EVO 3D',
- ),
- 219 =>
- array (
- 'regex' => '; *(ISW13HT) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => 'J',
- ),
- 220 =>
- array (
- 'regex' => '; *(ISW?[0-9]{2}[A-Z]{0,2}) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'KDDI',
- 'model_replacement' => '$1',
- ),
- 221 =>
- array (
- 'regex' => '; *(INFOBAR [^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'KDDI',
- 'model_replacement' => '$1',
- ),
- 222 =>
- array (
- 'regex' => '; *(JOYPAD|Joypad)[ _]([^;/]+) Build/',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Kingcom',
- 'model_replacement' => '$1 $2',
- ),
- 223 =>
- array (
- 'regex' => '; *(Vox|VOX|Arc|K080) Build/',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Kobo',
- 'model_replacement' => '$1',
- ),
- 224 =>
- array (
- 'regex' => '\\b(Kobo Touch)\\b',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Kobo',
- 'model_replacement' => '$1',
- ),
- 225 =>
- array (
- 'regex' => '; *(K-Touch)[ _]([^;/]+) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Ktouch',
- 'model_replacement' => '$2',
- ),
- 226 =>
- array (
- 'regex' => '; *((?:EV|KM)-S\\d+[A-Z]?) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'KTtech',
- 'model_replacement' => '$1',
- ),
- 227 =>
- array (
- 'regex' => '; *(Zio|Hydro|Torque|Event|EVENT|Echo|Milano|Rise|URBANO PROGRESSO|WX04K|WX06K|WX10K|KYL21|101K|C5[12]\\d{2}) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Kyocera',
- 'model_replacement' => '$1',
- ),
- 228 =>
- array (
- 'regex' => '; *(?:LAVA[ _]|)IRIS[ _\\-]?([^/;\\)]+) *(?:;|\\)|Build)',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Iris $1',
- 'brand_replacement' => 'Lava',
- 'model_replacement' => 'Iris $1',
- ),
- 229 =>
- array (
- 'regex' => '; *LAVA[ _]([^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Lava',
- 'model_replacement' => '$1',
- ),
- 230 =>
- array (
- 'regex' => '; *(?:(Aspire A1)|(?:LEMON|Lemon)[ _]([^;/]+))_? Build',
- 'device_replacement' => 'Lemon $1$2',
- 'brand_replacement' => 'Lemon',
- 'model_replacement' => '$1$2',
- ),
- 231 =>
- array (
- 'regex' => '; *(TAB-1012) Build/',
- 'device_replacement' => 'Lenco $1',
- 'brand_replacement' => 'Lenco',
- 'model_replacement' => '$1',
- ),
- 232 =>
- array (
- 'regex' => '; Lenco ([^;/]+) Build/',
- 'device_replacement' => 'Lenco $1',
- 'brand_replacement' => 'Lenco',
- 'model_replacement' => '$1',
- ),
- 233 =>
- array (
- 'regex' => '; *(A1_07|A2107A-H|S2005A-H|S1-37AH0) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Lenovo',
- 'model_replacement' => '$1',
- ),
- 234 =>
- array (
- 'regex' => '; *(Idea[Tp]ab)[ _]([^;/]+);? Build',
- 'device_replacement' => 'Lenovo $1 $2',
- 'brand_replacement' => 'Lenovo',
- 'model_replacement' => '$1 $2',
- ),
- 235 =>
- array (
- 'regex' => '; *(Idea(?:Tab|pad)) ?([^;/]+) Build',
- 'device_replacement' => 'Lenovo $1 $2',
- 'brand_replacement' => 'Lenovo',
- 'model_replacement' => '$1 $2',
- ),
- 236 =>
- array (
- 'regex' => '; *(ThinkPad) ?(Tablet) Build/',
- 'device_replacement' => 'Lenovo $1 $2',
- 'brand_replacement' => 'Lenovo',
- 'model_replacement' => '$1 $2',
- ),
- 237 =>
- array (
- 'regex' => '; *(?:LNV-|)(?:=?[Ll]enovo[ _\\-]?|LENOVO[ _])(.+?)(?:Build|[;/\\)])',
- 'device_replacement' => 'Lenovo $1',
- 'brand_replacement' => 'Lenovo',
- 'model_replacement' => '$1',
- ),
- 238 =>
- array (
- 'regex' => '[;,] (?:Vodafone |)(SmartTab) ?(II) ?(\\d+) Build/',
- 'device_replacement' => 'Lenovo $1 $2 $3',
- 'brand_replacement' => 'Lenovo',
- 'model_replacement' => '$1 $2 $3',
- ),
- 239 =>
- array (
- 'regex' => '; *(?:Ideapad |)K1 Build/',
- 'device_replacement' => 'Lenovo Ideapad K1',
- 'brand_replacement' => 'Lenovo',
- 'model_replacement' => 'Ideapad K1',
- ),
- 240 =>
- array (
- 'regex' => '; *(3GC101|3GW10[01]|A390) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Lenovo',
- 'model_replacement' => '$1',
- ),
- 241 =>
- array (
- 'regex' => '\\b(?:Lenovo|LENOVO)+[ _\\-]?([^,;:/ ]+)',
- 'device_replacement' => 'Lenovo $1',
- 'brand_replacement' => 'Lenovo',
- 'model_replacement' => '$1',
- ),
- 242 =>
- array (
- 'regex' => '; *(MFC\\d+)[A-Z]{2}([^;,/]*),? Build',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Lexibook',
- 'model_replacement' => '$1$2',
- ),
- 243 =>
- array (
- 'regex' => '; *(E[34][0-9]{2}|LS[6-8][0-9]{2}|VS[6-9][0-9]+[^;/]+|Nexus 4|Nexus 5X?|GT540f?|Optimus (?:2X|G|4X HD)|OptimusX4HD) *(?:Build|;)',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'LG',
- 'model_replacement' => '$1',
- ),
- 244 =>
- array (
- 'regex' => '[;:] *(L-\\d+[A-Z]|LGL\\d+[A-Z]?)(?:/V\\d+|) *(?:Build|[;\\)])',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'LG',
- 'model_replacement' => '$1',
- ),
- 245 =>
- array (
- 'regex' => '; *(LG-)([A-Z]{1,2}\\d{2,}[^,;/\\)\\(]*?)(?:Build| V\\d+|[,;/\\)\\(]|$)',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'LG',
- 'model_replacement' => '$2',
- ),
- 246 =>
- array (
- 'regex' => '; *(LG[ \\-]|LG)([^;/]+)[;/]? Build',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'LG',
- 'model_replacement' => '$2',
- ),
- 247 =>
- array (
- 'regex' => '^(LG)-([^;/]+)/ Mozilla/.*; Android',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'LG',
- 'model_replacement' => '$2',
- ),
- 248 =>
- array (
- 'regex' => '(Web0S); Linux/(SmartTV)',
- 'device_replacement' => 'LG $1 $2',
- 'brand_replacement' => 'LG',
- 'model_replacement' => '$1 $2',
- ),
- 249 =>
- array (
- 'regex' => '; *((?:SMB|smb)[^;/]+) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Malata',
- 'model_replacement' => '$1',
- ),
- 250 =>
- array (
- 'regex' => '; *(?:Malata|MALATA) ([^;/]+) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Malata',
- 'model_replacement' => '$1',
- ),
- 251 =>
- array (
- 'regex' => '; *(MS[45][0-9]{3}|MID0[568][NS]?|MID[1-9]|MID[78]0[1-9]|MID970[1-9]|MID100[1-9]) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Manta',
- 'model_replacement' => '$1',
- ),
- 252 =>
- array (
- 'regex' => '; *(M1052|M806|M9000|M9100|M9701|MID100|MID120|MID125|MID130|MID135|MID140|MID701|MID710|MID713|MID727|MID728|MID731|MID732|MID733|MID735|MID736|MID737|MID760|MID800|MID810|MID820|MID830|MID833|MID835|MID860|MID900|MID930|MID933|MID960|MID980) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Match',
- 'model_replacement' => '$1',
- ),
- 253 =>
- array (
- 'regex' => '; *(GenxDroid7|MSD7.*|AX\\d.*|Tab 701|Tab 722) Build/',
- 'device_replacement' => 'Maxx $1',
- 'brand_replacement' => 'Maxx',
- 'model_replacement' => '$1',
- ),
- 254 =>
- array (
- 'regex' => '; *(M-PP[^;/]+|PhonePad ?\\d{2,}[^;/]+) Build',
- 'device_replacement' => 'Mediacom $1',
- 'brand_replacement' => 'Mediacom',
- 'model_replacement' => '$1',
- ),
- 255 =>
- array (
- 'regex' => '; *(M-MP[^;/]+|SmartPad ?\\d{2,}[^;/]+) Build',
- 'device_replacement' => 'Mediacom $1',
- 'brand_replacement' => 'Mediacom',
- 'model_replacement' => '$1',
- ),
- 256 =>
- array (
- 'regex' => '; *(?:MD_|)LIFETAB[ _]([^;/]+) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Medion Lifetab $1',
- 'brand_replacement' => 'Medion',
- 'model_replacement' => 'Lifetab $1',
- ),
- 257 =>
- array (
- 'regex' => '; *MEDION ([^;/]+) Build',
- 'device_replacement' => 'Medion $1',
- 'brand_replacement' => 'Medion',
- 'model_replacement' => '$1',
- ),
- 258 =>
- array (
- 'regex' => '; *(M030|M031|M035|M040|M065|m9) Build',
- 'device_replacement' => 'Meizu $1',
- 'brand_replacement' => 'Meizu',
- 'model_replacement' => '$1',
- ),
- 259 =>
- array (
- 'regex' => '; *(?:meizu_|MEIZU )(.+?) *(?:Build|[;\\)])',
- 'device_replacement' => 'Meizu $1',
- 'brand_replacement' => 'Meizu',
- 'model_replacement' => '$1',
- ),
- 260 =>
- array (
- 'regex' => '; *(?:Micromax[ _](A111|A240)|(A111|A240)) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Micromax $1$2',
- 'brand_replacement' => 'Micromax',
- 'model_replacement' => '$1$2',
- ),
- 261 =>
- array (
- 'regex' => '; *Micromax[ _](A\\d{2,3}[^;/]*) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Micromax $1',
- 'brand_replacement' => 'Micromax',
- 'model_replacement' => '$1',
- ),
- 262 =>
- array (
- 'regex' => '; *(A\\d{2}|A[12]\\d{2}|A90S|A110Q) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Micromax $1',
- 'brand_replacement' => 'Micromax',
- 'model_replacement' => '$1',
- ),
- 263 =>
- array (
- 'regex' => '; *Micromax[ _](P\\d{3}[^;/]*) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Micromax $1',
- 'brand_replacement' => 'Micromax',
- 'model_replacement' => '$1',
- ),
- 264 =>
- array (
- 'regex' => '; *(P\\d{3}|P\\d{3}\\(Funbook\\)) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Micromax $1',
- 'brand_replacement' => 'Micromax',
- 'model_replacement' => '$1',
- ),
- 265 =>
- array (
- 'regex' => '; *(MITO)[ _\\-]?([^;/]+) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Mito',
- 'model_replacement' => '$2',
- ),
- 266 =>
- array (
- 'regex' => '; *(Cynus)[ _](F5|T\\d|.+?) *(?:Build|[;/\\)])',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Mobistel',
- 'model_replacement' => '$1 $2',
- ),
- 267 =>
- array (
- 'regex' => '; *(MODECOM |)(FreeTab) ?([^;/]+) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1$2 $3',
- 'brand_replacement' => 'Modecom',
- 'model_replacement' => '$2 $3',
- ),
- 268 =>
- array (
- 'regex' => '; *(MODECOM )([^;/]+) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Modecom',
- 'model_replacement' => '$2',
- ),
- 269 =>
- array (
- 'regex' => '; *(MZ\\d{3}\\+?|MZ\\d{3} 4G|Xoom|XOOM[^;/]*) Build',
- 'device_replacement' => 'Motorola $1',
- 'brand_replacement' => 'Motorola',
- 'model_replacement' => '$1',
- ),
- 270 =>
- array (
- 'regex' => '; *(Milestone )(XT[^;/]*) Build',
- 'device_replacement' => 'Motorola $1$2',
- 'brand_replacement' => 'Motorola',
- 'model_replacement' => '$2',
- ),
- 271 =>
- array (
- 'regex' => '; *(Motoroi ?x|Droid X|DROIDX) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Motorola $1',
- 'brand_replacement' => 'Motorola',
- 'model_replacement' => 'DROID X',
- ),
- 272 =>
- array (
- 'regex' => '; *(Droid[^;/]*|DROID[^;/]*|Milestone[^;/]*|Photon|Triumph|Devour|Titanium) Build',
- 'device_replacement' => 'Motorola $1',
- 'brand_replacement' => 'Motorola',
- 'model_replacement' => '$1',
- ),
- 273 =>
- array (
- 'regex' => '; *(A555|A85[34][^;/]*|A95[356]|ME[58]\\d{2}\\+?|ME600|ME632|ME722|MB\\d{3}\\+?|MT680|MT710|MT870|MT887|MT917|WX435|WX453|WX44[25]|XT\\d{3,4}[A-Z\\+]*|CL[iI]Q|CL[iI]Q XT) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Motorola',
- 'model_replacement' => '$1',
- ),
- 274 =>
- array (
- 'regex' => '; *(Motorola MOT-|Motorola[ _\\-]|MOT\\-?)([^;/]+) Build',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Motorola',
- 'model_replacement' => '$2',
- ),
- 275 =>
- array (
- 'regex' => '; *(Moto[_ ]?|MOT\\-)([^;/]+) Build',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Motorola',
- 'model_replacement' => '$2',
- ),
- 276 =>
- array (
- 'regex' => '; *((?:MP[DQ]C|MPG\\d{1,4}|MP\\d{3,4}|MID(?:(?:10[234]|114|43|7[247]|8[24]|7)C|8[01]1))[^;/]*) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Mpman',
- 'model_replacement' => '$1',
- ),
- 277 =>
- array (
- 'regex' => '; *(?:MSI[ _]|)(Primo\\d+|Enjoy[ _\\-][^;/]+) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Msi',
- 'model_replacement' => '$1',
- ),
- 278 =>
- array (
- 'regex' => '; *Multilaser[ _]([^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Multilaser',
- 'model_replacement' => '$1',
- ),
- 279 =>
- array (
- 'regex' => '; *(My)[_]?(Pad)[ _]([^;/]+) Build',
- 'device_replacement' => '$1$2 $3',
- 'brand_replacement' => 'MyPhone',
- 'model_replacement' => '$1$2 $3',
- ),
- 280 =>
- array (
- 'regex' => '; *(My)\\|?(Phone)[ _]([^;/]+) Build',
- 'device_replacement' => '$1$2 $3',
- 'brand_replacement' => 'MyPhone',
- 'model_replacement' => '$3',
- ),
- 281 =>
- array (
- 'regex' => '; *(A\\d+)[ _](Duo|) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'MyPhone',
- 'model_replacement' => '$1 $2',
- ),
- 282 =>
- array (
- 'regex' => '; *(myTab[^;/]*) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Mytab',
- 'model_replacement' => '$1',
- ),
- 283 =>
- array (
- 'regex' => '; *(NABI2?-)([^;/]+) Build/',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Nabi',
- 'model_replacement' => '$2',
- ),
- 284 =>
- array (
- 'regex' => '; *(N-\\d+[CDE]) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Nec',
- 'model_replacement' => '$1',
- ),
- 285 =>
- array (
- 'regex' => '; ?(NEC-)(.*) Build/',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Nec',
- 'model_replacement' => '$2',
- ),
- 286 =>
- array (
- 'regex' => '; *(LT-NA7) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Nec',
- 'model_replacement' => 'Lifetouch Note',
- ),
- 287 =>
- array (
- 'regex' => '; *(NXM\\d+[A-Za-z0-9_]*|Next\\d[A-Za-z0-9_ \\-]*|NEXT\\d[A-Za-z0-9_ \\-]*|Nextbook [A-Za-z0-9_ ]*|DATAM803HC|M805)(?: Build|[\\);])',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Nextbook',
- 'model_replacement' => '$1',
- ),
- 288 =>
- array (
- 'regex' => '; *(Nokia)([ _\\-]*)([^;/]*) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1$2$3',
- 'brand_replacement' => 'Nokia',
- 'model_replacement' => '$3',
- ),
- 289 =>
- array (
- 'regex' => '; *(Nook ?|Barnes & Noble Nook |BN )([^;/]+) Build',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Nook',
- 'model_replacement' => '$2',
- ),
- 290 =>
- array (
- 'regex' => '; *(NOOK |)(BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2) Build',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Nook',
- 'model_replacement' => '$2',
- ),
- 291 =>
- array (
- 'regex' => '; Build/(Nook)',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Nook',
- 'model_replacement' => 'Tablet',
- ),
- 292 =>
- array (
- 'regex' => '; *(OP110|OliPad[^;/]+) Build',
- 'device_replacement' => 'Olivetti $1',
- 'brand_replacement' => 'Olivetti',
- 'model_replacement' => '$1',
- ),
- 293 =>
- array (
- 'regex' => '; *OMEGA[ _\\-](MID[^;/]+) Build',
- 'device_replacement' => 'Omega $1',
- 'brand_replacement' => 'Omega',
- 'model_replacement' => '$1',
- ),
- 294 =>
- array (
- 'regex' => '^(MID7500|MID\\d+) Mozilla/5\\.0 \\(iPad;',
- 'device_replacement' => 'Omega $1',
- 'brand_replacement' => 'Omega',
- 'model_replacement' => '$1',
- ),
- 295 =>
- array (
- 'regex' => '; *((?:CIUS|cius)[^;/]*) Build',
- 'device_replacement' => 'Openpeak $1',
- 'brand_replacement' => 'Openpeak',
- 'model_replacement' => '$1',
- ),
- 296 =>
- array (
- 'regex' => '; *(Find ?(?:5|7a)|R8[012]\\d{1,2}|T703\\d{0,1}|U70\\d{1,2}T?|X90\\d{1,2}) Build',
- 'device_replacement' => 'Oppo $1',
- 'brand_replacement' => 'Oppo',
- 'model_replacement' => '$1',
- ),
- 297 =>
- array (
- 'regex' => '; *OPPO ?([^;/]+) Build/',
- 'device_replacement' => 'Oppo $1',
- 'brand_replacement' => 'Oppo',
- 'model_replacement' => '$1',
- ),
- 298 =>
- array (
- 'regex' => '; *(?:Odys\\-|ODYS\\-|ODYS )([^;/]+) Build',
- 'device_replacement' => 'Odys $1',
- 'brand_replacement' => 'Odys',
- 'model_replacement' => '$1',
- ),
- 299 =>
- array (
- 'regex' => '; *(SELECT) ?(7) Build',
- 'device_replacement' => 'Odys $1 $2',
- 'brand_replacement' => 'Odys',
- 'model_replacement' => '$1 $2',
- ),
- 300 =>
- array (
- 'regex' => '; *(PEDI)_(PLUS)_(W) Build',
- 'device_replacement' => 'Odys $1 $2 $3',
- 'brand_replacement' => 'Odys',
- 'model_replacement' => '$1 $2 $3',
- ),
- 301 =>
- array (
- 'regex' => '; *(AEON|BRAVIO|FUSION|FUSION2IN1|Genio|EOS10|IEOS[^;/]*|IRON|Loox|LOOX|LOOX Plus|Motion|NOON|NOON_PRO|NEXT|OPOS|PEDI[^;/]*|PRIME[^;/]*|STUDYTAB|TABLO|Tablet-PC-4|UNO_X8|XELIO[^;/]*|Xelio ?\\d+ ?[Pp]ro|XENO10|XPRESS PRO) Build',
- 'device_replacement' => 'Odys $1',
- 'brand_replacement' => 'Odys',
- 'model_replacement' => '$1',
- ),
- 302 =>
- array (
- 'regex' => '; (ONE [a-zA-Z]\\d+) Build/',
- 'device_replacement' => 'OnePlus $1',
- 'brand_replacement' => 'OnePlus',
- 'model_replacement' => '$1',
- ),
- 303 =>
- array (
- 'regex' => '; (ONEPLUS [a-zA-Z]\\d+)(?: Build/|)',
- 'device_replacement' => 'OnePlus $1',
- 'brand_replacement' => 'OnePlus',
- 'model_replacement' => '$1',
- ),
- 304 =>
- array (
- 'regex' => '; *(TP-\\d+) Build/',
- 'device_replacement' => 'Orion $1',
- 'brand_replacement' => 'Orion',
- 'model_replacement' => '$1',
- ),
- 305 =>
- array (
- 'regex' => '; *(G100W?) Build/',
- 'device_replacement' => 'PackardBell $1',
- 'brand_replacement' => 'PackardBell',
- 'model_replacement' => '$1',
- ),
- 306 =>
- array (
- 'regex' => '; *(Panasonic)[_ ]([^;/]+) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => '$1',
- 'model_replacement' => '$2',
- ),
- 307 =>
- array (
- 'regex' => '; *(FZ-A1B|JT-B1) Build',
- 'device_replacement' => 'Panasonic $1',
- 'brand_replacement' => 'Panasonic',
- 'model_replacement' => '$1',
- ),
- 308 =>
- array (
- 'regex' => '; *(dL1|DL1) Build',
- 'device_replacement' => 'Panasonic $1',
- 'brand_replacement' => 'Panasonic',
- 'model_replacement' => '$1',
- ),
- 309 =>
- array (
- 'regex' => '; *(SKY[ _]|)(IM\\-[AT]\\d{3}[^;/]+).* Build/',
- 'device_replacement' => 'Pantech $1$2',
- 'brand_replacement' => 'Pantech',
- 'model_replacement' => '$1$2',
- ),
- 310 =>
- array (
- 'regex' => '; *((?:ADR8995|ADR910L|ADR930L|ADR930VW|PTL21|P8000)(?: 4G|)) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Pantech',
- 'model_replacement' => '$1',
- ),
- 311 =>
- array (
- 'regex' => '; *Pantech([^;/]+).* Build/',
- 'device_replacement' => 'Pantech $1',
- 'brand_replacement' => 'Pantech',
- 'model_replacement' => '$1',
- ),
- 312 =>
- array (
- 'regex' => '; *(papyre)[ _\\-]([^;/]+) Build/',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Papyre',
- 'model_replacement' => '$2',
- ),
- 313 =>
- array (
- 'regex' => '; *(?:Touchlet )?(X10\\.[^;/]+) Build/',
- 'device_replacement' => 'Pearl $1',
- 'brand_replacement' => 'Pearl',
- 'model_replacement' => '$1',
- ),
- 314 =>
- array (
- 'regex' => '; PHICOMM (i800) Build/',
- 'device_replacement' => 'Phicomm $1',
- 'brand_replacement' => 'Phicomm',
- 'model_replacement' => '$1',
- ),
- 315 =>
- array (
- 'regex' => '; PHICOMM ([^;/]+) Build/',
- 'device_replacement' => 'Phicomm $1',
- 'brand_replacement' => 'Phicomm',
- 'model_replacement' => '$1',
- ),
- 316 =>
- array (
- 'regex' => '; *(FWS\\d{3}[^;/]+) Build/',
- 'device_replacement' => 'Phicomm $1',
- 'brand_replacement' => 'Phicomm',
- 'model_replacement' => '$1',
- ),
- 317 =>
- array (
- 'regex' => '; *(D633|D822|D833|T539|T939|V726|W335|W336|W337|W3568|W536|W5510|W626|W632|W6350|W6360|W6500|W732|W736|W737|W7376|W820|W832|W8355|W8500|W8510|W930) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Philips',
- 'model_replacement' => '$1',
- ),
- 318 =>
- array (
- 'regex' => '; *(?:Philips|PHILIPS)[ _]([^;/]+) Build',
- 'device_replacement' => 'Philips $1',
- 'brand_replacement' => 'Philips',
- 'model_replacement' => '$1',
- ),
- 319 =>
- array (
- 'regex' => 'Android 4\\..*; *(M[12356789]|U[12368]|S[123])\\ ?(pro)? Build',
- 'device_replacement' => 'Pipo $1$2',
- 'brand_replacement' => 'Pipo',
- 'model_replacement' => '$1$2',
- ),
- 320 =>
- array (
- 'regex' => '; *(MOMO[^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Ployer',
- 'model_replacement' => '$1',
- ),
- 321 =>
- array (
- 'regex' => '; *(?:Polaroid[ _]|)((?:MIDC\\d{3,}|PMID\\d{2,}|PTAB\\d{3,})[^;/]*)(\\/[^;/]*|) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Polaroid',
- 'model_replacement' => '$1',
- ),
- 322 =>
- array (
- 'regex' => '; *(?:Polaroid )(Tablet) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Polaroid',
- 'model_replacement' => '$1',
- ),
- 323 =>
- array (
- 'regex' => '; *(POMP)[ _\\-](.+?) *(?:Build|[;/\\)])',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Pomp',
- 'model_replacement' => '$2',
- ),
- 324 =>
- array (
- 'regex' => '; *(TB07STA|TB10STA|TB07FTA|TB10FTA) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Positivo',
- 'model_replacement' => '$1',
- ),
- 325 =>
- array (
- 'regex' => '; *(?:Positivo |)((?:YPY|Ypy)[^;/]+) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Positivo',
- 'model_replacement' => '$1',
- ),
- 326 =>
- array (
- 'regex' => '; *(MOB-[^;/]+) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'POV',
- 'model_replacement' => '$1',
- ),
- 327 =>
- array (
- 'regex' => '; *POV[ _\\-]([^;/]+) Build/',
- 'device_replacement' => 'POV $1',
- 'brand_replacement' => 'POV',
- 'model_replacement' => '$1',
- ),
- 328 =>
- array (
- 'regex' => '; *((?:TAB-PLAYTAB|TAB-PROTAB|PROTAB|PlayTabPro|Mobii[ _\\-]|TAB-P)[^;/]*) Build/',
- 'device_replacement' => 'POV $1',
- 'brand_replacement' => 'POV',
- 'model_replacement' => '$1',
- ),
- 329 =>
- array (
- 'regex' => '; *(?:Prestigio |)((?:PAP|PMP)\\d[^;/]+) Build/',
- 'device_replacement' => 'Prestigio $1',
- 'brand_replacement' => 'Prestigio',
- 'model_replacement' => '$1',
- ),
- 330 =>
- array (
- 'regex' => '; *(PLT[0-9]{4}.*) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Proscan',
- 'model_replacement' => '$1',
- ),
- 331 =>
- array (
- 'regex' => '; *(A2|A5|A8|A900)_?(Classic|) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Qmobile',
- 'model_replacement' => '$1 $2',
- ),
- 332 =>
- array (
- 'regex' => '; *(Q[Mm]obile)_([^_]+)_([^_]+) Build',
- 'device_replacement' => 'Qmobile $2 $3',
- 'brand_replacement' => 'Qmobile',
- 'model_replacement' => '$2 $3',
- ),
- 333 =>
- array (
- 'regex' => '; *(Q\\-?[Mm]obile)[_ ](A[^;/]+) Build',
- 'device_replacement' => 'Qmobile $2',
- 'brand_replacement' => 'Qmobile',
- 'model_replacement' => '$2',
- ),
- 334 =>
- array (
- 'regex' => '; *(Q\\-Smart)[ _]([^;/]+) Build/',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Qmobilevn',
- 'model_replacement' => '$2',
- ),
- 335 =>
- array (
- 'regex' => '; *(Q\\-?[Mm]obile)[ _\\-](S[^;/]+) Build/',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Qmobilevn',
- 'model_replacement' => '$2',
- ),
- 336 =>
- array (
- 'regex' => '; *(TA1013) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Quanta',
- 'model_replacement' => '$1',
- ),
- 337 =>
- array (
- 'regex' => '; (RCT\\w+) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'RCA',
- 'model_replacement' => '$1',
- ),
- 338 =>
- array (
- 'regex' => '; RCA (\\w+) Build/',
- 'device_replacement' => 'RCA $1',
- 'brand_replacement' => 'RCA',
- 'model_replacement' => '$1',
- ),
- 339 =>
- array (
- 'regex' => '; *(RK\\d+),? Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Rockchip',
- 'model_replacement' => '$1',
- ),
- 340 =>
- array (
- 'regex' => ' Build/(RK\\d+)',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Rockchip',
- 'model_replacement' => '$1',
- ),
- 341 =>
- array (
- 'regex' => '; *(SAMSUNG |Samsung |)((?:Galaxy (?:Note II|S\\d)|GT-I9082|GT-I9205|GT-N7\\d{3}|SM-N9005)[^;/]*)\\/?[^;/]* Build/',
- 'device_replacement' => 'Samsung $1$2',
- 'brand_replacement' => 'Samsung',
- 'model_replacement' => '$2',
- ),
- 342 =>
- array (
- 'regex' => '; *(Google |)(Nexus [Ss](?: 4G|)) Build/',
- 'device_replacement' => 'Samsung $1$2',
- 'brand_replacement' => 'Samsung',
- 'model_replacement' => '$2',
- ),
- 343 =>
- array (
- 'regex' => '; *(SAMSUNG |Samsung )([^\\/]*)\\/[^ ]* Build/',
- 'device_replacement' => 'Samsung $2',
- 'brand_replacement' => 'Samsung',
- 'model_replacement' => '$2',
- ),
- 344 =>
- array (
- 'regex' => '; *(Galaxy(?: Ace| Nexus| S ?II+|Nexus S| with MCR 1.2| Mini Plus 4G|)) Build/',
- 'device_replacement' => 'Samsung $1',
- 'brand_replacement' => 'Samsung',
- 'model_replacement' => '$1',
- ),
- 345 =>
- array (
- 'regex' => '; *(SAMSUNG[ _\\-]|)(?:SAMSUNG[ _\\-])([^;/]+) Build',
- 'device_replacement' => 'Samsung $2',
- 'brand_replacement' => 'Samsung',
- 'model_replacement' => '$2',
- ),
- 346 =>
- array (
- 'regex' => '; *(SAMSUNG-|)(GT\\-[BINPS]\\d{4}[^\\/]*)(\\/[^ ]*) Build',
- 'device_replacement' => 'Samsung $1$2$3',
- 'brand_replacement' => 'Samsung',
- 'model_replacement' => '$2',
- ),
- 347 =>
- array (
- 'regex' => '(?:; *|^)((?:GT\\-[BIiNPS]\\d{4}|I9\\d{2}0[A-Za-z\\+]?\\b)[^;/\\)]*?)(?:Build|Linux|MIUI|[;/\\)])',
- 'device_replacement' => 'Samsung $1',
- 'brand_replacement' => 'Samsung',
- 'model_replacement' => '$1',
- ),
- 348 =>
- array (
- 'regex' => '; (SAMSUNG-)([A-Za-z0-9\\-]+).* Build/',
- 'device_replacement' => 'Samsung $1$2',
- 'brand_replacement' => 'Samsung',
- 'model_replacement' => '$2',
- ),
- 349 =>
- array (
- 'regex' => '; *((?:SCH|SGH|SHV|SHW|SPH|SC|SM)\\-[A-Za-z0-9 ]+)(/?[^ ]*|) Build',
- 'device_replacement' => 'Samsung $1',
- 'brand_replacement' => 'Samsung',
- 'model_replacement' => '$1',
- ),
- 350 =>
- array (
- 'regex' => '; *((?:SC)\\-[A-Za-z0-9 ]+)(/?[^ ]*|)\\)',
- 'device_replacement' => 'Samsung $1',
- 'brand_replacement' => 'Samsung',
- 'model_replacement' => '$1',
- ),
- 351 =>
- array (
- 'regex' => ' ((?:SCH)\\-[A-Za-z0-9 ]+)(/?[^ ]*|) Build',
- 'device_replacement' => 'Samsung $1',
- 'brand_replacement' => 'Samsung',
- 'model_replacement' => '$1',
- ),
- 352 =>
- array (
- 'regex' => '; *(Behold ?(?:2|II)|YP\\-G[^;/]+|EK-GC100|SCL21|I9300) Build',
- 'device_replacement' => 'Samsung $1',
- 'brand_replacement' => 'Samsung',
- 'model_replacement' => '$1',
- ),
- 353 =>
- array (
- 'regex' => '; *((?:SCH|SGH|SHV|SHW|SPH|SC|SM)\\-[A-Za-z0-9]{5,6})[\\)]',
- 'device_replacement' => 'Samsung $1',
- 'brand_replacement' => 'Samsung',
- 'model_replacement' => '$1',
- ),
- 354 =>
- array (
- 'regex' => '; *(SH\\-?\\d\\d[^;/]+|SBM\\d[^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Sharp',
- 'model_replacement' => '$1',
- ),
- 355 =>
- array (
- 'regex' => '; *(SHARP[ -])([^;/]+) Build',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Sharp',
- 'model_replacement' => '$2',
- ),
- 356 =>
- array (
- 'regex' => '; *(SPX[_\\-]\\d[^;/]*) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Simvalley',
- 'model_replacement' => '$1',
- ),
- 357 =>
- array (
- 'regex' => '; *(SX7\\-PEARL\\.GmbH) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Simvalley',
- 'model_replacement' => '$1',
- ),
- 358 =>
- array (
- 'regex' => '; *(SP[T]?\\-\\d{2}[^;/]*) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Simvalley',
- 'model_replacement' => '$1',
- ),
- 359 =>
- array (
- 'regex' => '; *(SK\\-.*) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'SKtelesys',
- 'model_replacement' => '$1',
- ),
- 360 =>
- array (
- 'regex' => '; *(?:SKYTEX|SX)-([^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Skytex',
- 'model_replacement' => '$1',
- ),
- 361 =>
- array (
- 'regex' => '; *(IMAGINE [^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Skytex',
- 'model_replacement' => '$1',
- ),
- 362 =>
- array (
- 'regex' => '; *(SmartQ) ?([^;/]+) Build/',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => '$1',
- 'model_replacement' => '$2',
- ),
- 363 =>
- array (
- 'regex' => '; *(WF7C|WF10C|SBT[^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Smartbitt',
- 'model_replacement' => '$1',
- ),
- 364 =>
- array (
- 'regex' => '; *(SBM(?:003SH|005SH|006SH|007SH|102SH)) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Sharp',
- 'model_replacement' => '$1',
- ),
- 365 =>
- array (
- 'regex' => '; *(003P|101P|101P11C|102P) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Panasonic',
- 'model_replacement' => '$1',
- ),
- 366 =>
- array (
- 'regex' => '; *(00\\dZ) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'ZTE',
- 'model_replacement' => '$1',
- ),
- 367 =>
- array (
- 'regex' => '; HTC(X06HT) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => '$1',
- ),
- 368 =>
- array (
- 'regex' => '; *(001HT|X06HT) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => '$1',
- ),
- 369 =>
- array (
- 'regex' => '; *(201M) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Motorola',
- 'model_replacement' => 'XT902',
- ),
- 370 =>
- array (
- 'regex' => '; *(ST\\d{4}.*)Build/ST',
- 'device_replacement' => 'Trekstor $1',
- 'brand_replacement' => 'Trekstor',
- 'model_replacement' => '$1',
- ),
- 371 =>
- array (
- 'regex' => '; *(ST\\d{4}.*) Build/',
- 'device_replacement' => 'Trekstor $1',
- 'brand_replacement' => 'Trekstor',
- 'model_replacement' => '$1',
- ),
- 372 =>
- array (
- 'regex' => '; *(Sony ?Ericsson ?)([^;/]+) Build',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'SonyEricsson',
- 'model_replacement' => '$2',
- ),
- 373 =>
- array (
- 'regex' => '; *((?:SK|ST|E|X|LT|MK|MT|WT)\\d{2}[a-z0-9]*(?:-o|)|R800i|U20i) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'SonyEricsson',
- 'model_replacement' => '$1',
- ),
- 374 =>
- array (
- 'regex' => '; *(Xperia (?:A8|Arc|Acro|Active|Live with Walkman|Mini|Neo|Play|Pro|Ray|X\\d+)[^;/]*) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'SonyEricsson',
- 'model_replacement' => '$1',
- ),
- 375 =>
- array (
- 'regex' => '; Sony (Tablet[^;/]+) Build',
- 'device_replacement' => 'Sony $1',
- 'brand_replacement' => 'Sony',
- 'model_replacement' => '$1',
- ),
- 376 =>
- array (
- 'regex' => '; Sony ([^;/]+) Build',
- 'device_replacement' => 'Sony $1',
- 'brand_replacement' => 'Sony',
- 'model_replacement' => '$1',
- ),
- 377 =>
- array (
- 'regex' => '; *(Sony)([A-Za-z0-9\\-]+) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => '$1',
- 'model_replacement' => '$2',
- ),
- 378 =>
- array (
- 'regex' => '; *(Xperia [^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Sony',
- 'model_replacement' => '$1',
- ),
- 379 =>
- array (
- 'regex' => '; *(C(?:1[0-9]|2[0-9]|53|55|6[0-9])[0-9]{2}|D[25]\\d{3}|D6[56]\\d{2}) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Sony',
- 'model_replacement' => '$1',
- ),
- 380 =>
- array (
- 'regex' => '; *(SGP\\d{3}|SGPT\\d{2}) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Sony',
- 'model_replacement' => '$1',
- ),
- 381 =>
- array (
- 'regex' => '; *(NW-Z1000Series) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Sony',
- 'model_replacement' => '$1',
- ),
- 382 =>
- array (
- 'regex' => 'PLAYSTATION 3',
- 'device_replacement' => 'PlayStation 3',
- 'brand_replacement' => 'Sony',
- 'model_replacement' => 'PlayStation 3',
- ),
- 383 =>
- array (
- 'regex' => '(PlayStation (?:Portable|Vita|\\d+))',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Sony',
- 'model_replacement' => '$1',
- ),
- 384 =>
- array (
- 'regex' => '; *((?:CSL_Spice|Spice|SPICE|CSL)[ _\\-]?|)([Mm][Ii])([ _\\-]|)(\\d{3}[^;/]*) Build/',
- 'device_replacement' => '$1$2$3$4',
- 'brand_replacement' => 'Spice',
- 'model_replacement' => 'Mi$4',
- ),
- 385 =>
- array (
- 'regex' => '; *(Sprint )(.+?) *(?:Build|[;/])',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Sprint',
- 'model_replacement' => '$2',
- ),
- 386 =>
- array (
- 'regex' => '\\b(Sprint)[: ]([^;,/ ]+)',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Sprint',
- 'model_replacement' => '$2',
- ),
- 387 =>
- array (
- 'regex' => '; *(TAGI[ ]?)(MID) ?([^;/]+) Build/',
- 'device_replacement' => '$1$2$3',
- 'brand_replacement' => 'Tagi',
- 'model_replacement' => '$2$3',
- ),
- 388 =>
- array (
- 'regex' => '; *(Oyster500|Opal 800) Build',
- 'device_replacement' => 'Tecmobile $1',
- 'brand_replacement' => 'Tecmobile',
- 'model_replacement' => '$1',
- ),
- 389 =>
- array (
- 'regex' => '; *(TECNO[ _])([^;/]+) Build/',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Tecno',
- 'model_replacement' => '$2',
- ),
- 390 =>
- array (
- 'regex' => '; *Android for (Telechips|Techvision) ([^ ]+) ',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => '$1',
- 'model_replacement' => '$2',
- ),
- 391 =>
- array (
- 'regex' => '; *(T-Hub2) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Telstra',
- 'model_replacement' => '$1',
- ),
- 392 =>
- array (
- 'regex' => '; *(PAD) ?(100[12]) Build/',
- 'device_replacement' => 'Terra $1$2',
- 'brand_replacement' => 'Terra',
- 'model_replacement' => '$1$2',
- ),
- 393 =>
- array (
- 'regex' => '; *(T[BM]-\\d{3}[^;/]+) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Texet',
- 'model_replacement' => '$1',
- ),
- 394 =>
- array (
- 'regex' => '; *(tolino [^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Thalia',
- 'model_replacement' => '$1',
- ),
- 395 =>
- array (
- 'regex' => '; *Build/.* (TOLINO_BROWSER)',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Thalia',
- 'model_replacement' => 'Tolino Shine',
- ),
- 396 =>
- array (
- 'regex' => '; *(?:CJ[ -])?(ThL|THL)[ -]([^;/]+) Build/',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Thl',
- 'model_replacement' => '$2',
- ),
- 397 =>
- array (
- 'regex' => '; *(T100|T200|T5|W100|W200|W8s) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Thl',
- 'model_replacement' => '$1',
- ),
- 398 =>
- array (
- 'regex' => '; *(T-Mobile[ _]G2[ _]Touch) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => 'Hero',
- ),
- 399 =>
- array (
- 'regex' => '; *(T-Mobile[ _]G2) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => 'Desire Z',
- ),
- 400 =>
- array (
- 'regex' => '; *(T-Mobile myTouch Q) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Huawei',
- 'model_replacement' => 'U8730',
- ),
- 401 =>
- array (
- 'regex' => '; *(T-Mobile myTouch) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Huawei',
- 'model_replacement' => 'U8680',
- ),
- 402 =>
- array (
- 'regex' => '; *(T-Mobile_Espresso) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => 'Espresso',
- ),
- 403 =>
- array (
- 'regex' => '; *(T-Mobile G1) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => 'Dream',
- ),
- 404 =>
- array (
- 'regex' => '\\b(T-Mobile ?|)(myTouch)[ _]?([34]G)[ _]?([^\\/]*) (?:Mozilla|Build)',
- 'device_replacement' => '$1$2 $3 $4',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => '$2 $3 $4',
- ),
- 405 =>
- array (
- 'regex' => '\\b(T-Mobile)_([^_]+)_(.*) Build',
- 'device_replacement' => '$1 $2 $3',
- 'brand_replacement' => 'Tmobile',
- 'model_replacement' => '$2 $3',
- ),
- 406 =>
- array (
- 'regex' => '\\b(T-Mobile)[_ ]?(.*?)Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Tmobile',
- 'model_replacement' => '$2',
- ),
- 407 =>
- array (
- 'regex' => ' (ATP[0-9]{4}) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Tomtec',
- 'model_replacement' => '$1',
- ),
- 408 =>
- array (
- 'regex' => ' *(TOOKY)[ _\\-]([^;/]+) ?(?:Build|;)',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Tooky',
- 'model_replacement' => '$2',
- ),
- 409 =>
- array (
- 'regex' => '\\b(TOSHIBA_AC_AND_AZ|TOSHIBA_FOLIO_AND_A|FOLIO_AND_A)',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Toshiba',
- 'model_replacement' => 'Folio 100',
- ),
- 410 =>
- array (
- 'regex' => '; *([Ff]olio ?100) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Toshiba',
- 'model_replacement' => 'Folio 100',
- ),
- 411 =>
- array (
- 'regex' => '; *(AT[0-9]{2,3}(?:\\-A|LE\\-A|PE\\-A|SE|a|)|AT7-A|AT1S0|Hikari-iFrame/WDPF-[^;/]+|THRiVE|Thrive) Build/',
- 'device_replacement' => 'Toshiba $1',
- 'brand_replacement' => 'Toshiba',
- 'model_replacement' => '$1',
- ),
- 412 =>
- array (
- 'regex' => '; *(TM-MID\\d+[^;/]+|TOUCHMATE|MID-750) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Touchmate',
- 'model_replacement' => '$1',
- ),
- 413 =>
- array (
- 'regex' => '; *(TM-SM\\d+[^;/]+) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Touchmate',
- 'model_replacement' => '$1',
- ),
- 414 =>
- array (
- 'regex' => '; *(A10 [Bb]asic2?) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Treq',
- 'model_replacement' => '$1',
- ),
- 415 =>
- array (
- 'regex' => '; *(TREQ[ _\\-])([^;/]+) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Treq',
- 'model_replacement' => '$2',
- ),
- 416 =>
- array (
- 'regex' => '; *(X-?5|X-?3) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Umeox',
- 'model_replacement' => '$1',
- ),
- 417 =>
- array (
- 'regex' => '; *(A502\\+?|A936|A603|X1|X2) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Umeox',
- 'model_replacement' => '$1',
- ),
- 418 =>
- array (
- 'regex' => '(TOUCH(?:TAB|PAD).+?) Build/',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Versus $1',
- 'brand_replacement' => 'Versus',
- 'model_replacement' => '$1',
- ),
- 419 =>
- array (
- 'regex' => '(VERTU) ([^;/]+) Build/',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Vertu',
- 'model_replacement' => '$2',
- ),
- 420 =>
- array (
- 'regex' => '; *(Videocon)[ _\\-]([^;/]+) *(?:Build|;)',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'Videocon',
- 'model_replacement' => '$2',
- ),
- 421 =>
- array (
- 'regex' => ' (VT\\d{2}[A-Za-z]*) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Videocon',
- 'model_replacement' => '$1',
- ),
- 422 =>
- array (
- 'regex' => '; *((?:ViewPad|ViewPhone|VSD)[^;/]+) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Viewsonic',
- 'model_replacement' => '$1',
- ),
- 423 =>
- array (
- 'regex' => '; *(ViewSonic-)([^;/]+) Build/',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'Viewsonic',
- 'model_replacement' => '$2',
- ),
- 424 =>
- array (
- 'regex' => '; *(GTablet.*) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Viewsonic',
- 'model_replacement' => '$1',
- ),
- 425 =>
- array (
- 'regex' => '; *([Vv]ivo)[ _]([^;/]+) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'vivo',
- 'model_replacement' => '$2',
- ),
- 426 =>
- array (
- 'regex' => '(Vodafone) (.*) Build/',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => '$1',
- 'model_replacement' => '$2',
- ),
- 427 =>
- array (
- 'regex' => '; *(?:Walton[ _\\-]|)(Primo[ _\\-][^;/]+) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Walton $1',
- 'brand_replacement' => 'Walton',
- 'model_replacement' => '$1',
- ),
- 428 =>
- array (
- 'regex' => '; *(?:WIKO[ \\-]|)(CINK\\+?|BARRY|BLOOM|DARKFULL|DARKMOON|DARKNIGHT|DARKSIDE|FIZZ|HIGHWAY|IGGY|OZZY|RAINBOW|STAIRWAY|SUBLIM|WAX|CINK [^;/]+) Build/',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Wiko $1',
- 'brand_replacement' => 'Wiko',
- 'model_replacement' => '$1',
- ),
- 429 =>
- array (
- 'regex' => '; *WellcoM-([^;/]+) Build',
- 'device_replacement' => 'Wellcom $1',
- 'brand_replacement' => 'Wellcom',
- 'model_replacement' => '$1',
- ),
- 430 =>
- array (
- 'regex' => '(?:(WeTab)-Browser|; (wetab) Build)',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'WeTab',
- 'model_replacement' => 'WeTab',
- ),
- 431 =>
- array (
- 'regex' => '; *(AT-AS[^;/]+) Build',
- 'device_replacement' => 'Wolfgang $1',
- 'brand_replacement' => 'Wolfgang',
- 'model_replacement' => '$1',
- ),
- 432 =>
- array (
- 'regex' => '; *(?:Woxter|Wxt) ([^;/]+) Build',
- 'device_replacement' => 'Woxter $1',
- 'brand_replacement' => 'Woxter',
- 'model_replacement' => '$1',
- ),
- 433 =>
- array (
- 'regex' => '; *(?:Xenta |Luna |)(TAB[234][0-9]{2}|TAB0[78]-\\d{3}|TAB0?9-\\d{3}|TAB1[03]-\\d{3}|SMP\\d{2}-\\d{3}) Build/',
- 'device_replacement' => 'Yarvik $1',
- 'brand_replacement' => 'Yarvik',
- 'model_replacement' => '$1',
- ),
- 434 =>
- array (
- 'regex' => '; *([A-Z]{2,4})(M\\d{3,}[A-Z]{2})([^;\\)\\/]*)(?: Build|[;\\)])',
- 'device_replacement' => 'Yifang $1$2$3',
- 'brand_replacement' => 'Yifang',
- 'model_replacement' => '$2',
- ),
- 435 =>
- array (
- 'regex' => '; *((Mi|MI|HM|MI-ONE|Redmi)[ -](NOTE |Note |)[^;/]*) (Build|MIUI)/',
- 'device_replacement' => 'XiaoMi $1',
- 'brand_replacement' => 'XiaoMi',
- 'model_replacement' => '$1',
- ),
- 436 =>
- array (
- 'regex' => '; *((Mi|MI|HM|MI-ONE|Redmi)[ -](NOTE |Note |)[^;/\\)]*)',
- 'device_replacement' => 'XiaoMi $1',
- 'brand_replacement' => 'XiaoMi',
- 'model_replacement' => '$1',
- ),
- 437 =>
- array (
- 'regex' => '; *(MIX) (Build|MIUI)/',
- 'device_replacement' => 'XiaoMi $1',
- 'brand_replacement' => 'XiaoMi',
- 'model_replacement' => '$1',
- ),
- 438 =>
- array (
- 'regex' => '; *((MIX) ([^;/]*)) (Build|MIUI)/',
- 'device_replacement' => 'XiaoMi $1',
- 'brand_replacement' => 'XiaoMi',
- 'model_replacement' => '$1',
- ),
- 439 =>
- array (
- 'regex' => '; *XOLO[ _]([^;/]*tab.*) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Xolo $1',
- 'brand_replacement' => 'Xolo',
- 'model_replacement' => '$1',
- ),
- 440 =>
- array (
- 'regex' => '; *XOLO[ _]([^;/]+) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Xolo $1',
- 'brand_replacement' => 'Xolo',
- 'model_replacement' => '$1',
- ),
- 441 =>
- array (
- 'regex' => '; *(q\\d0{2,3}[a-z]?) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Xolo $1',
- 'brand_replacement' => 'Xolo',
- 'model_replacement' => '$1',
- ),
- 442 =>
- array (
- 'regex' => '; *(PAD ?[79]\\d+[^;/]*|TelePAD\\d+[^;/]) Build',
- 'device_replacement' => 'Xoro $1',
- 'brand_replacement' => 'Xoro',
- 'model_replacement' => '$1',
- ),
- 443 =>
- array (
- 'regex' => '; *(?:(?:ZOPO|Zopo)[ _]([^;/]+)|(ZP ?(?:\\d{2}[^;/]+|C2))|(C[2379])) Build',
- 'device_replacement' => '$1$2$3',
- 'brand_replacement' => 'Zopo',
- 'model_replacement' => '$1$2$3',
- ),
- 444 =>
- array (
- 'regex' => '; *(ZiiLABS) (Zii[^;/]*) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'ZiiLabs',
- 'model_replacement' => '$2',
- ),
- 445 =>
- array (
- 'regex' => '; *(Zii)_([^;/]*) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'ZiiLabs',
- 'model_replacement' => '$2',
- ),
- 446 =>
- array (
- 'regex' => '; *(ARIZONA|(?:ATLAS|Atlas) W|D930|Grand (?:[SX][^;]*|Era|Memo[^;]*)|JOE|(?:Kis|KIS)\\b[^;]*|Libra|Light [^;]*|N8[056][01]|N850L|N8000|N9[15]\\d{2}|N9810|NX501|Optik|(?:Vip )Racer[^;]*|RacerII|RACERII|San Francisco[^;]*|V9[AC]|V55|V881|Z[679][0-9]{2}[A-z]?) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'ZTE',
- 'model_replacement' => '$1',
- ),
- 447 =>
- array (
- 'regex' => '; *([A-Z]\\d+)_USA_[^;]* Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'ZTE',
- 'model_replacement' => '$1',
- ),
- 448 =>
- array (
- 'regex' => '; *(SmartTab\\d+)[^;]* Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'ZTE',
- 'model_replacement' => '$1',
- ),
- 449 =>
- array (
- 'regex' => '; *(?:Blade|BLADE|ZTE-BLADE)([^;/]*) Build',
- 'device_replacement' => 'ZTE Blade$1',
- 'brand_replacement' => 'ZTE',
- 'model_replacement' => 'Blade$1',
- ),
- 450 =>
- array (
- 'regex' => '; *(?:Skate|SKATE|ZTE-SKATE)([^;/]*) Build',
- 'device_replacement' => 'ZTE Skate$1',
- 'brand_replacement' => 'ZTE',
- 'model_replacement' => 'Skate$1',
- ),
- 451 =>
- array (
- 'regex' => '; *(Orange |Optimus )(Monte Carlo|San Francisco) Build',
- 'device_replacement' => '$1$2',
- 'brand_replacement' => 'ZTE',
- 'model_replacement' => '$1$2',
- ),
- 452 =>
- array (
- 'regex' => '; *(?:ZXY-ZTE_|ZTE\\-U |ZTE[\\- _]|ZTE-C[_ ])([^;/]+) Build',
- 'device_replacement' => 'ZTE $1',
- 'brand_replacement' => 'ZTE',
- 'model_replacement' => '$1',
- ),
- 453 =>
- array (
- 'regex' => '; (BASE) (lutea|Lutea 2|Tab[^;]*) Build',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => 'ZTE',
- 'model_replacement' => '$1 $2',
- ),
- 454 =>
- array (
- 'regex' => '; (Avea inTouch 2|soft stone|tmn smart a7|Movistar[ _]Link) Build',
- 'regex_flag' => 'i',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'ZTE',
- 'model_replacement' => '$1',
- ),
- 455 =>
- array (
- 'regex' => '; *(vp9plus)\\)',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'ZTE',
- 'model_replacement' => '$1',
- ),
- 456 =>
- array (
- 'regex' => '; ?(Cloud[ _]Z5|z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900) Build/',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Zync',
- 'model_replacement' => '$1',
- ),
- 457 =>
- array (
- 'regex' => '; ?(KFOT|Kindle Fire) Build\\b',
- 'device_replacement' => 'Kindle Fire',
- 'brand_replacement' => 'Amazon',
- 'model_replacement' => 'Kindle Fire',
- ),
- 458 =>
- array (
- 'regex' => '; ?(KFOTE|Amazon Kindle Fire2) Build\\b',
- 'device_replacement' => 'Kindle Fire 2',
- 'brand_replacement' => 'Amazon',
- 'model_replacement' => 'Kindle Fire 2',
- ),
- 459 =>
- array (
- 'regex' => '; ?(KFTT) Build\\b',
- 'device_replacement' => 'Kindle Fire HD',
- 'brand_replacement' => 'Amazon',
- 'model_replacement' => 'Kindle Fire HD 7"',
- ),
- 460 =>
- array (
- 'regex' => '; ?(KFJWI) Build\\b',
- 'device_replacement' => 'Kindle Fire HD 8.9" WiFi',
- 'brand_replacement' => 'Amazon',
- 'model_replacement' => 'Kindle Fire HD 8.9" WiFi',
- ),
- 461 =>
- array (
- 'regex' => '; ?(KFJWA) Build\\b',
- 'device_replacement' => 'Kindle Fire HD 8.9" 4G',
- 'brand_replacement' => 'Amazon',
- 'model_replacement' => 'Kindle Fire HD 8.9" 4G',
- ),
- 462 =>
- array (
- 'regex' => '; ?(KFSOWI) Build\\b',
- 'device_replacement' => 'Kindle Fire HD 7" WiFi',
- 'brand_replacement' => 'Amazon',
- 'model_replacement' => 'Kindle Fire HD 7" WiFi',
- ),
- 463 =>
- array (
- 'regex' => '; ?(KFTHWI) Build\\b',
- 'device_replacement' => 'Kindle Fire HDX 7" WiFi',
- 'brand_replacement' => 'Amazon',
- 'model_replacement' => 'Kindle Fire HDX 7" WiFi',
- ),
- 464 =>
- array (
- 'regex' => '; ?(KFTHWA) Build\\b',
- 'device_replacement' => 'Kindle Fire HDX 7" 4G',
- 'brand_replacement' => 'Amazon',
- 'model_replacement' => 'Kindle Fire HDX 7" 4G',
- ),
- 465 =>
- array (
- 'regex' => '; ?(KFAPWI) Build\\b',
- 'device_replacement' => 'Kindle Fire HDX 8.9" WiFi',
- 'brand_replacement' => 'Amazon',
- 'model_replacement' => 'Kindle Fire HDX 8.9" WiFi',
- ),
- 466 =>
- array (
- 'regex' => '; ?(KFAPWA) Build\\b',
- 'device_replacement' => 'Kindle Fire HDX 8.9" 4G',
- 'brand_replacement' => 'Amazon',
- 'model_replacement' => 'Kindle Fire HDX 8.9" 4G',
- ),
- 467 =>
- array (
- 'regex' => '; ?Amazon ([^;/]+) Build\\b',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Amazon',
- 'model_replacement' => '$1',
- ),
- 468 =>
- array (
- 'regex' => '; ?(Kindle) Build\\b',
- 'device_replacement' => 'Kindle',
- 'brand_replacement' => 'Amazon',
- 'model_replacement' => 'Kindle',
- ),
- 469 =>
- array (
- 'regex' => '; ?(Silk)/(\\d+)\\.(\\d+)(?:\\.([0-9\\-]+)|) Build\\b',
- 'device_replacement' => 'Kindle Fire',
- 'brand_replacement' => 'Amazon',
- 'model_replacement' => 'Kindle Fire$2',
- ),
- 470 =>
- array (
- 'regex' => ' (Kindle)/(\\d+\\.\\d+)',
- 'device_replacement' => 'Kindle',
- 'brand_replacement' => 'Amazon',
- 'model_replacement' => '$1 $2',
- ),
- 471 =>
- array (
- 'regex' => ' (Silk|Kindle)/(\\d+)\\.',
- 'device_replacement' => 'Kindle',
- 'brand_replacement' => 'Amazon',
- 'model_replacement' => 'Kindle',
- ),
- 472 =>
- array (
- 'regex' => '(sprd)\\-([^/]+)/',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => '$1',
- 'model_replacement' => '$2',
- ),
- 473 =>
- array (
- 'regex' => '; *(H\\d{2}00\\+?) Build',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Hero',
- 'model_replacement' => '$1',
- ),
- 474 =>
- array (
- 'regex' => '; *(iphone|iPhone5) Build/',
- 'device_replacement' => 'Xianghe $1',
- 'brand_replacement' => 'Xianghe',
- 'model_replacement' => '$1',
- ),
- 475 =>
- array (
- 'regex' => '; *(e\\d{4}[a-z]?_?v\\d+|v89_[^;/]+)[^;/]+ Build/',
- 'device_replacement' => 'Xianghe $1',
- 'brand_replacement' => 'Xianghe',
- 'model_replacement' => '$1',
- ),
- 476 =>
- array (
- 'regex' => '\\bUSCC[_\\-]?([^ ;/\\)]+)',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Cellular',
- 'model_replacement' => '$1',
- ),
- 477 =>
- array (
- 'regex' => 'Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:ALCATEL)[^;]*; *([^;,\\)]+)',
- 'device_replacement' => 'Alcatel $1',
- 'brand_replacement' => 'Alcatel',
- 'model_replacement' => '$1',
- ),
- 478 =>
- array (
- 'regex' => 'Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)(?:ASUS|Asus)[^;]*; *([^;,\\)]+)',
- 'device_replacement' => 'Asus $1',
- 'brand_replacement' => 'Asus',
- 'model_replacement' => '$1',
- ),
- 479 =>
- array (
- 'regex' => 'Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:DELL|Dell)[^;]*; *([^;,\\)]+)',
- 'device_replacement' => 'Dell $1',
- 'brand_replacement' => 'Dell',
- 'model_replacement' => '$1',
- ),
- 480 =>
- array (
- 'regex' => 'Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)(?:HTC|Htc|HTC_blocked[^;]*)[^;]*; *(?:HTC|)([^;,\\)]+)',
- 'device_replacement' => 'HTC $1',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => '$1',
- ),
- 481 =>
- array (
- 'regex' => 'Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:HUAWEI)[^;]*; *(?:HUAWEI |)([^;,\\)]+)',
- 'device_replacement' => 'Huawei $1',
- 'brand_replacement' => 'Huawei',
- 'model_replacement' => '$1',
- ),
- 482 =>
- array (
- 'regex' => 'Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:LG|Lg)[^;]*; *(?:LG[ \\-]|)([^;,\\)]+)',
- 'device_replacement' => 'LG $1',
- 'brand_replacement' => 'LG',
- 'model_replacement' => '$1',
- ),
- 483 =>
- array (
- 'regex' => 'Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:rv:11; |)(?:NOKIA|Nokia)[^;]*; *(?:NOKIA ?|Nokia ?|LUMIA ?|[Ll]umia ?|)(\\d{3,10}[^;\\)]*)',
- 'device_replacement' => 'Lumia $1',
- 'brand_replacement' => 'Nokia',
- 'model_replacement' => 'Lumia $1',
- ),
- 484 =>
- array (
- 'regex' => 'Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:NOKIA|Nokia)[^;]*; *(RM-\\d{3,})',
- 'device_replacement' => 'Nokia $1',
- 'brand_replacement' => 'Nokia',
- 'model_replacement' => '$1',
- ),
- 485 =>
- array (
- 'regex' => '(?:Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)]|WPDesktop;) ?(?:ARM; ?Touch; ?|Touch; ?|)(?:NOKIA|Nokia)[^;]*; *(?:NOKIA ?|Nokia ?|LUMIA ?|[Ll]umia ?|)([^;\\)]+)',
- 'device_replacement' => 'Nokia $1',
- 'brand_replacement' => 'Nokia',
- 'model_replacement' => '$1',
- ),
- 486 =>
- array (
- 'regex' => 'Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?|)(?:Microsoft(?: Corporation|))[^;]*; *([^;,\\)]+)',
- 'device_replacement' => 'Microsoft $1',
- 'brand_replacement' => 'Microsoft',
- 'model_replacement' => '$1',
- ),
- 487 =>
- array (
- 'regex' => 'Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)(?:SAMSUNG)[^;]*; *(?:SAMSUNG |)([^;,\\.\\)]+)',
- 'device_replacement' => 'Samsung $1',
- 'brand_replacement' => 'Samsung',
- 'model_replacement' => '$1',
- ),
- 488 =>
- array (
- 'regex' => 'Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)(?:TOSHIBA|FujitsuToshibaMobileCommun)[^;]*; *([^;,\\)]+)',
- 'device_replacement' => 'Toshiba $1',
- 'brand_replacement' => 'Toshiba',
- 'model_replacement' => '$1',
- ),
- 489 =>
- array (
- 'regex' => 'Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?|)([^;]+); *([^;,\\)]+)',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => '$1',
- 'model_replacement' => '$2',
- ),
- 490 =>
- array (
- 'regex' => '(?:^|; )SAMSUNG\\-([A-Za-z0-9\\-]+).* Bada/',
- 'device_replacement' => 'Samsung $1',
- 'brand_replacement' => 'Samsung',
- 'model_replacement' => '$1',
- ),
- 491 =>
- array (
- 'regex' => '\\(Mobile; ALCATEL ?(One|ONE) ?(Touch|TOUCH) ?([^;/]+)(?:/[^;]+|); rv:[^\\)]+\\) Gecko/[^\\/]+ Firefox/',
- 'device_replacement' => 'Alcatel $1 $2 $3',
- 'brand_replacement' => 'Alcatel',
- 'model_replacement' => 'One Touch $3',
- ),
- 492 =>
- array (
- 'regex' => '\\(Mobile; (?:ZTE([^;]+)|(OpenC)); rv:[^\\)]+\\) Gecko/[^\\/]+ Firefox/',
- 'device_replacement' => 'ZTE $1$2',
- 'brand_replacement' => 'ZTE',
- 'model_replacement' => '$1$2',
- ),
- 493 =>
- array (
- 'regex' => '\\(Mobile; ALCATEL([A-Za-z0-9\\-]+); rv:[^\\)]+\\) Gecko/[^\\/]+ Firefox/[^\\/]+ KaiOS/',
- 'device_replacement' => 'Alcatel $1',
- 'brand_replacement' => 'Alcatel',
- 'model_replacement' => '$1',
- ),
- 494 =>
- array (
- 'regex' => '\\(Mobile; LYF\\/([A-Za-z0-9\\-]+)\\/.+;.+rv:[^\\)]+\\) Gecko/[^\\/]+ Firefox/[^\\/]+ KAIOS/',
- 'device_replacement' => 'LYF $1',
- 'brand_replacement' => 'LYF',
- 'model_replacement' => '$1',
- ),
- 495 =>
- array (
- 'regex' => '\\(Mobile; Nokia_([A-Za-z0-9\\-]+)_.+; rv:[^\\)]+\\) Gecko/[^\\/]+ Firefox/[^\\/]+ KAIOS/',
- 'device_replacement' => 'Nokia $1',
- 'brand_replacement' => 'Nokia',
- 'model_replacement' => '$1',
- ),
- 496 =>
- array (
- 'regex' => 'Nokia(N[0-9]+)([A-Za-z_\\-][A-Za-z0-9_\\-]*)',
- 'device_replacement' => 'Nokia $1',
- 'brand_replacement' => 'Nokia',
- 'model_replacement' => '$1$2',
- ),
- 497 =>
- array (
- 'regex' => '(?:NOKIA|Nokia)(?:\\-| *)(?:([A-Za-z0-9]+)\\-[0-9a-f]{32}|([A-Za-z0-9\\-]+)(?:UCBrowser)|([A-Za-z0-9\\-]+))',
- 'device_replacement' => 'Nokia $1$2$3',
- 'brand_replacement' => 'Nokia',
- 'model_replacement' => '$1$2$3',
- ),
- 498 =>
- array (
- 'regex' => 'Lumia ([A-Za-z0-9\\-]+)',
- 'device_replacement' => 'Lumia $1',
- 'brand_replacement' => 'Nokia',
- 'model_replacement' => 'Lumia $1',
- ),
- 499 =>
- array (
- 'regex' => '\\(Symbian; U; S60 V5; [A-z]{2}\\-[A-z]{2}; (SonyEricsson|Samsung|Nokia|LG)([^;/]+)\\)',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => '$1',
- 'model_replacement' => '$2',
- ),
- 500 =>
- array (
- 'regex' => '\\(Symbian(?:/3|); U; ([^;]+);',
- 'device_replacement' => 'Nokia $1',
- 'brand_replacement' => 'Nokia',
- 'model_replacement' => '$1',
- ),
- 501 =>
- array (
- 'regex' => 'BB10; ([A-Za-z0-9\\- ]+)\\)',
- 'device_replacement' => 'BlackBerry $1',
- 'brand_replacement' => 'BlackBerry',
- 'model_replacement' => '$1',
- ),
- 502 =>
- array (
- 'regex' => 'Play[Bb]ook.+RIM Tablet OS',
- 'device_replacement' => 'BlackBerry Playbook',
- 'brand_replacement' => 'BlackBerry',
- 'model_replacement' => 'Playbook',
- ),
- 503 =>
- array (
- 'regex' => 'Black[Bb]erry ([0-9]+);',
- 'device_replacement' => 'BlackBerry $1',
- 'brand_replacement' => 'BlackBerry',
- 'model_replacement' => '$1',
- ),
- 504 =>
- array (
- 'regex' => 'Black[Bb]erry([0-9]+)',
- 'device_replacement' => 'BlackBerry $1',
- 'brand_replacement' => 'BlackBerry',
- 'model_replacement' => '$1',
- ),
- 505 =>
- array (
- 'regex' => 'Black[Bb]erry;',
- 'device_replacement' => 'BlackBerry',
- 'brand_replacement' => 'BlackBerry',
- ),
- 506 =>
- array (
- 'regex' => '(Pre|Pixi)/\\d+\\.\\d+',
- 'device_replacement' => 'Palm $1',
- 'brand_replacement' => 'Palm',
- 'model_replacement' => '$1',
- ),
- 507 =>
- array (
- 'regex' => 'Palm([0-9]+)',
- 'device_replacement' => 'Palm $1',
- 'brand_replacement' => 'Palm',
- 'model_replacement' => '$1',
- ),
- 508 =>
- array (
- 'regex' => 'Treo([A-Za-z0-9]+)',
- 'device_replacement' => 'Palm Treo $1',
- 'brand_replacement' => 'Palm',
- 'model_replacement' => 'Treo $1',
- ),
- 509 =>
- array (
- 'regex' => 'webOS.*(P160U(?:NA|))/(\\d+).(\\d+)',
- 'device_replacement' => 'HP Veer',
- 'brand_replacement' => 'HP',
- 'model_replacement' => 'Veer',
- ),
- 510 =>
- array (
- 'regex' => '(Touch[Pp]ad)/\\d+\\.\\d+',
- 'device_replacement' => 'HP TouchPad',
- 'brand_replacement' => 'HP',
- 'model_replacement' => 'TouchPad',
- ),
- 511 =>
- array (
- 'regex' => 'HPiPAQ([A-Za-z0-9]+)/\\d+.\\d+',
- 'device_replacement' => 'HP iPAQ $1',
- 'brand_replacement' => 'HP',
- 'model_replacement' => 'iPAQ $1',
- ),
- 512 =>
- array (
- 'regex' => 'PDA; (PalmOS)/sony/model ([a-z]+)/Revision',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Sony',
- 'model_replacement' => '$1 $2',
- ),
- 513 =>
- array (
- 'regex' => '(Apple\\s?TV)',
- 'device_replacement' => 'AppleTV',
- 'brand_replacement' => 'Apple',
- 'model_replacement' => 'AppleTV',
- ),
- 514 =>
- array (
- 'regex' => '(QtCarBrowser)',
- 'device_replacement' => 'Tesla Model S',
- 'brand_replacement' => 'Tesla',
- 'model_replacement' => 'Model S',
- ),
- 515 =>
- array (
- 'regex' => '(iPhone|iPad|iPod)(\\d+,\\d+)',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Apple',
- 'model_replacement' => '$1$2',
- ),
- 516 =>
- array (
- 'regex' => '(iPad)(?:;| Simulator;)',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Apple',
- 'model_replacement' => '$1',
- ),
- 517 =>
- array (
- 'regex' => '(iPod)(?:;| touch;| Simulator;)',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Apple',
- 'model_replacement' => '$1',
- ),
- 518 =>
- array (
- 'regex' => '(iPhone)(?:;| Simulator;)',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Apple',
- 'model_replacement' => '$1',
- ),
- 519 =>
- array (
- 'regex' => '(Watch)(\\d+,\\d+)',
- 'device_replacement' => 'Apple $1',
- 'brand_replacement' => 'Apple',
- 'model_replacement' => 'Apple $1 $2',
- ),
- 520 =>
- array (
- 'regex' => '(Apple Watch)(?:;| Simulator;)',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Apple',
- 'model_replacement' => '$1',
- ),
- 521 =>
- array (
- 'regex' => '(HomePod)(?:;| Simulator;)',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Apple',
- 'model_replacement' => '$1',
- ),
- 522 =>
- array (
- 'regex' => 'iPhone',
- 'device_replacement' => 'iPhone',
- 'brand_replacement' => 'Apple',
- 'model_replacement' => 'iPhone',
- ),
- 523 =>
- array (
- 'regex' => 'CFNetwork/.* Darwin/\\d.*\\(((?:Mac|iMac|PowerMac|PowerBook)[^\\d]*)(\\d+)(?:,|%2C)(\\d+)',
- 'device_replacement' => '$1$2,$3',
- 'brand_replacement' => 'Apple',
- 'model_replacement' => '$1$2,$3',
- ),
- 524 =>
- array (
- 'regex' => 'CFNetwork/.* Darwin/\\d+\\.\\d+\\.\\d+ \\(x86_64\\)',
- 'device_replacement' => 'Mac',
- 'brand_replacement' => 'Apple',
- 'model_replacement' => 'Mac',
- ),
- 525 =>
- array (
- 'regex' => 'CFNetwork/.* Darwin/\\d',
- 'device_replacement' => 'iOS-Device',
- 'brand_replacement' => 'Apple',
- 'model_replacement' => 'iOS-Device',
- ),
- 526 =>
- array (
- 'regex' => 'Outlook-(iOS)/\\d+\\.\\d+\\.prod\\.iphone',
- 'brand_replacement' => 'Apple',
- 'device_replacement' => 'iPhone',
- 'model_replacement' => 'iPhone',
- ),
- 527 =>
- array (
- 'regex' => 'acer_([A-Za-z0-9]+)_',
- 'device_replacement' => 'Acer $1',
- 'brand_replacement' => 'Acer',
- 'model_replacement' => '$1',
- ),
- 528 =>
- array (
- 'regex' => '(?:ALCATEL|Alcatel)-([A-Za-z0-9\\-]+)',
- 'device_replacement' => 'Alcatel $1',
- 'brand_replacement' => 'Alcatel',
- 'model_replacement' => '$1',
- ),
- 529 =>
- array (
- 'regex' => '(?:Amoi|AMOI)\\-([A-Za-z0-9]+)',
- 'device_replacement' => 'Amoi $1',
- 'brand_replacement' => 'Amoi',
- 'model_replacement' => '$1',
- ),
- 530 =>
- array (
- 'regex' => '(?:; |\\/|^)((?:Transformer (?:Pad|Prime) |Transformer |PadFone[ _]?)[A-Za-z0-9]*)',
- 'device_replacement' => 'Asus $1',
- 'brand_replacement' => 'Asus',
- 'model_replacement' => '$1',
- ),
- 531 =>
- array (
- 'regex' => '(?:asus.*?ASUS|Asus|ASUS|asus)[\\- ;]*((?:Transformer (?:Pad|Prime) |Transformer |Padfone |Nexus[ _]|)[A-Za-z0-9]+)',
- 'device_replacement' => 'Asus $1',
- 'brand_replacement' => 'Asus',
- 'model_replacement' => '$1',
- ),
- 532 =>
- array (
- 'regex' => '(?:ASUS)_([A-Za-z0-9\\-]+)',
- 'device_replacement' => 'Asus $1',
- 'brand_replacement' => 'Asus',
- 'model_replacement' => '$1',
- ),
- 533 =>
- array (
- 'regex' => '\\bBIRD[ \\-\\.]([A-Za-z0-9]+)',
- 'device_replacement' => 'Bird $1',
- 'brand_replacement' => 'Bird',
- 'model_replacement' => '$1',
- ),
- 534 =>
- array (
- 'regex' => '\\bDell ([A-Za-z0-9]+)',
- 'device_replacement' => 'Dell $1',
- 'brand_replacement' => 'Dell',
- 'model_replacement' => '$1',
- ),
- 535 =>
- array (
- 'regex' => 'DoCoMo/2\\.0 ([A-Za-z0-9]+)',
- 'device_replacement' => 'DoCoMo $1',
- 'brand_replacement' => 'DoCoMo',
- 'model_replacement' => '$1',
- ),
- 536 =>
- array (
- 'regex' => '([A-Za-z0-9]+)_W;FOMA',
- 'device_replacement' => 'DoCoMo $1',
- 'brand_replacement' => 'DoCoMo',
- 'model_replacement' => '$1',
- ),
- 537 =>
- array (
- 'regex' => '([A-Za-z0-9]+);FOMA',
- 'device_replacement' => 'DoCoMo $1',
- 'brand_replacement' => 'DoCoMo',
- 'model_replacement' => '$1',
- ),
- 538 =>
- array (
- 'regex' => '\\b(?:HTC/|HTC/[a-z0-9]+/|)HTC[ _\\-;]? *(.*?)(?:-?Mozilla|fingerPrint|[;/\\(\\)]|$)',
- 'device_replacement' => 'HTC $1',
- 'brand_replacement' => 'HTC',
- 'model_replacement' => '$1',
- ),
- 539 =>
- array (
- 'regex' => 'Huawei([A-Za-z0-9]+)',
- 'device_replacement' => 'Huawei $1',
- 'brand_replacement' => 'Huawei',
- 'model_replacement' => '$1',
- ),
- 540 =>
- array (
- 'regex' => 'HUAWEI-([A-Za-z0-9]+)',
- 'device_replacement' => 'Huawei $1',
- 'brand_replacement' => 'Huawei',
- 'model_replacement' => '$1',
- ),
- 541 =>
- array (
- 'regex' => 'HUAWEI ([A-Za-z0-9\\-]+)',
- 'device_replacement' => 'Huawei $1',
- 'brand_replacement' => 'Huawei',
- 'model_replacement' => '$1',
- ),
- 542 =>
- array (
- 'regex' => 'vodafone([A-Za-z0-9]+)',
- 'device_replacement' => 'Huawei Vodafone $1',
- 'brand_replacement' => 'Huawei',
- 'model_replacement' => 'Vodafone $1',
- ),
- 543 =>
- array (
- 'regex' => 'i\\-mate ([A-Za-z0-9]+)',
- 'device_replacement' => 'i-mate $1',
- 'brand_replacement' => 'i-mate',
- 'model_replacement' => '$1',
- ),
- 544 =>
- array (
- 'regex' => 'Kyocera\\-([A-Za-z0-9]+)',
- 'device_replacement' => 'Kyocera $1',
- 'brand_replacement' => 'Kyocera',
- 'model_replacement' => '$1',
- ),
- 545 =>
- array (
- 'regex' => 'KWC\\-([A-Za-z0-9]+)',
- 'device_replacement' => 'Kyocera $1',
- 'brand_replacement' => 'Kyocera',
- 'model_replacement' => '$1',
- ),
- 546 =>
- array (
- 'regex' => 'Lenovo[_\\-]([A-Za-z0-9]+)',
- 'device_replacement' => 'Lenovo $1',
- 'brand_replacement' => 'Lenovo',
- 'model_replacement' => '$1',
- ),
- 547 =>
- array (
- 'regex' => '(HbbTV)/[0-9]+\\.[0-9]+\\.[0-9]+ \\([^;]*; *(LG)E *; *([^;]*) *;[^;]*;[^;]*;\\)',
- 'device_replacement' => '$1',
- 'brand_replacement' => '$2',
- 'model_replacement' => '$3',
- ),
- 548 =>
- array (
- 'regex' => '(HbbTV)/1\\.1\\.1.*CE-HTML/1\\.\\d;(Vendor/|)(THOM[^;]*?)[;\\s].{0,30}(LF[^;]+);?',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Thomson',
- 'model_replacement' => '$4',
- ),
- 549 =>
- array (
- 'regex' => '(HbbTV)(?:/1\\.1\\.1|) ?(?: \\(;;;;;\\)|); *CE-HTML(?:/1\\.\\d|); *([^ ]+) ([^;]+);',
- 'device_replacement' => '$1',
- 'brand_replacement' => '$2',
- 'model_replacement' => '$3',
- ),
- 550 =>
- array (
- 'regex' => '(HbbTV)/1\\.1\\.1 \\(;;;;;\\) Maple_2011',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Samsung',
- ),
- 551 =>
- array (
- 'regex' => '(HbbTV)/[0-9]+\\.[0-9]+\\.[0-9]+ \\([^;]*; *(?:CUS:([^;]*)|([^;]+)) *; *([^;]*) *;.*;',
- 'device_replacement' => '$1',
- 'brand_replacement' => '$2$3',
- 'model_replacement' => '$4',
- ),
- 552 =>
- array (
- 'regex' => '(HbbTV)/[0-9]+\\.[0-9]+\\.[0-9]+',
- 'device_replacement' => '$1',
- ),
- 553 =>
- array (
- 'regex' => 'LGE; (?:Media\\/|)([^;]*);[^;]*;[^;]*;?\\); "?LG NetCast(\\.TV|\\.Media|)-\\d+',
- 'device_replacement' => 'NetCast$2',
- 'brand_replacement' => 'LG',
- 'model_replacement' => '$1',
- ),
- 554 =>
- array (
- 'regex' => 'InettvBrowser/[0-9]+\\.[0-9A-Z]+ \\([^;]*;(Sony)([^;]*);[^;]*;[^\\)]*\\)',
- 'device_replacement' => 'Inettv',
- 'brand_replacement' => '$1',
- 'model_replacement' => '$2',
- ),
- 555 =>
- array (
- 'regex' => 'InettvBrowser/[0-9]+\\.[0-9A-Z]+ \\([^;]*;([^;]*);[^;]*;[^\\)]*\\)',
- 'device_replacement' => 'Inettv',
- 'brand_replacement' => 'Generic_Inettv',
- 'model_replacement' => '$1',
- ),
- 556 =>
- array (
- 'regex' => '(?:InettvBrowser|TSBNetTV|NETTV|HBBTV)',
- 'device_replacement' => 'Inettv',
- 'brand_replacement' => 'Generic_Inettv',
- ),
- 557 =>
- array (
- 'regex' => 'Series60/\\d\\.\\d (LG)[\\-]?([A-Za-z0-9 \\-]+)',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => '$1',
- 'model_replacement' => '$2',
- ),
- 558 =>
- array (
- 'regex' => '\\b(?:LGE[ \\-]LG\\-(?:AX|)|LGE |LGE?-LG|LGE?[ \\-]|LG[ /\\-]|lg[\\-])([A-Za-z0-9]+)\\b',
- 'device_replacement' => 'LG $1',
- 'brand_replacement' => 'LG',
- 'model_replacement' => '$1',
- ),
- 559 =>
- array (
- 'regex' => '(?:^LG[\\-]?|^LGE[\\-/]?)([A-Za-z]+[0-9]+[A-Za-z]*)',
- 'device_replacement' => 'LG $1',
- 'brand_replacement' => 'LG',
- 'model_replacement' => '$1',
- ),
- 560 =>
- array (
- 'regex' => '^LG([0-9]+[A-Za-z]*)',
- 'device_replacement' => 'LG $1',
- 'brand_replacement' => 'LG',
- 'model_replacement' => '$1',
- ),
- 561 =>
- array (
- 'regex' => '(KIN\\.[^ ]+) (\\d+)\\.(\\d+)',
- 'device_replacement' => 'Microsoft $1',
- 'brand_replacement' => 'Microsoft',
- 'model_replacement' => '$1',
- ),
- 562 =>
- array (
- 'regex' => '(?:MSIE|XBMC).*\\b(Xbox)\\b',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Microsoft',
- 'model_replacement' => '$1',
- ),
- 563 =>
- array (
- 'regex' => '; ARM; Trident/6\\.0; Touch[\\);]',
- 'device_replacement' => 'Microsoft Surface RT',
- 'brand_replacement' => 'Microsoft',
- 'model_replacement' => 'Surface RT',
- ),
- 564 =>
- array (
- 'regex' => 'Motorola\\-([A-Za-z0-9]+)',
- 'device_replacement' => 'Motorola $1',
- 'brand_replacement' => 'Motorola',
- 'model_replacement' => '$1',
- ),
- 565 =>
- array (
- 'regex' => 'MOTO\\-([A-Za-z0-9]+)',
- 'device_replacement' => 'Motorola $1',
- 'brand_replacement' => 'Motorola',
- 'model_replacement' => '$1',
- ),
- 566 =>
- array (
- 'regex' => 'MOT\\-([A-z0-9][A-z0-9\\-]*)',
- 'device_replacement' => 'Motorola $1',
- 'brand_replacement' => 'Motorola',
- 'model_replacement' => '$1',
- ),
- 567 =>
- array (
- 'regex' => 'Nintendo WiiU',
- 'device_replacement' => 'Nintendo Wii U',
- 'brand_replacement' => 'Nintendo',
- 'model_replacement' => 'Wii U',
- ),
- 568 =>
- array (
- 'regex' => 'Nintendo (DS|3DS|DSi|Wii);',
- 'device_replacement' => 'Nintendo $1',
- 'brand_replacement' => 'Nintendo',
- 'model_replacement' => '$1',
- ),
- 569 =>
- array (
- 'regex' => '(?:Pantech|PANTECH)[ _-]?([A-Za-z0-9\\-]+)',
- 'device_replacement' => 'Pantech $1',
- 'brand_replacement' => 'Pantech',
- 'model_replacement' => '$1',
- ),
- 570 =>
- array (
- 'regex' => 'Philips([A-Za-z0-9]+)',
- 'device_replacement' => 'Philips $1',
- 'brand_replacement' => 'Philips',
- 'model_replacement' => '$1',
- ),
- 571 =>
- array (
- 'regex' => 'Philips ([A-Za-z0-9]+)',
- 'device_replacement' => 'Philips $1',
- 'brand_replacement' => 'Philips',
- 'model_replacement' => '$1',
- ),
- 572 =>
- array (
- 'regex' => '(SMART-TV); .* Tizen ',
- 'device_replacement' => 'Samsung $1',
- 'brand_replacement' => 'Samsung',
- 'model_replacement' => '$1',
- ),
- 573 =>
- array (
- 'regex' => 'SymbianOS/9\\.\\d.* Samsung[/\\-]([A-Za-z0-9 \\-]+)',
- 'device_replacement' => 'Samsung $1',
- 'brand_replacement' => 'Samsung',
- 'model_replacement' => '$1',
- ),
- 574 =>
- array (
- 'regex' => '(Samsung)(SGH)(i[0-9]+)',
- 'device_replacement' => '$1 $2$3',
- 'brand_replacement' => '$1',
- 'model_replacement' => '$2-$3',
- ),
- 575 =>
- array (
- 'regex' => 'SAMSUNG-ANDROID-MMS/([^;/]+)',
- 'device_replacement' => '$1',
- 'brand_replacement' => 'Samsung',
- 'model_replacement' => '$1',
- ),
- 576 =>
- array (
- 'regex' => 'SAMSUNG(?:; |[ -/])([A-Za-z0-9\\-]+)',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Samsung $1',
- 'brand_replacement' => 'Samsung',
- 'model_replacement' => '$1',
- ),
- 577 =>
- array (
- 'regex' => '(Dreamcast)',
- 'device_replacement' => 'Sega $1',
- 'brand_replacement' => 'Sega',
- 'model_replacement' => '$1',
- ),
- 578 =>
- array (
- 'regex' => '^SIE-([A-Za-z0-9]+)',
- 'device_replacement' => 'Siemens $1',
- 'brand_replacement' => 'Siemens',
- 'model_replacement' => '$1',
- ),
- 579 =>
- array (
- 'regex' => 'Softbank/[12]\\.0/([A-Za-z0-9]+)',
- 'device_replacement' => 'Softbank $1',
- 'brand_replacement' => 'Softbank',
- 'model_replacement' => '$1',
- ),
- 580 =>
- array (
- 'regex' => 'SonyEricsson ?([A-Za-z0-9\\-]+)',
- 'device_replacement' => 'Ericsson $1',
- 'brand_replacement' => 'SonyEricsson',
- 'model_replacement' => '$1',
- ),
- 581 =>
- array (
- 'regex' => 'Android [^;]+; ([^ ]+) (Sony)/',
- 'device_replacement' => '$2 $1',
- 'brand_replacement' => '$2',
- 'model_replacement' => '$1',
- ),
- 582 =>
- array (
- 'regex' => '(Sony)(?:BDP\\/|\\/|)([^ /;\\)]+)[ /;\\)]',
- 'device_replacement' => '$1 $2',
- 'brand_replacement' => '$1',
- 'model_replacement' => '$2',
- ),
- 583 =>
- array (
- 'regex' => 'Puffin/[\\d\\.]+IT',
- 'device_replacement' => 'iPad',
- 'brand_replacement' => 'Apple',
- 'model_replacement' => 'iPad',
- ),
- 584 =>
- array (
- 'regex' => 'Puffin/[\\d\\.]+IP',
- 'device_replacement' => 'iPhone',
- 'brand_replacement' => 'Apple',
- 'model_replacement' => 'iPhone',
- ),
- 585 =>
- array (
- 'regex' => 'Puffin/[\\d\\.]+AT',
- 'device_replacement' => 'Generic Tablet',
- 'brand_replacement' => 'Generic',
- 'model_replacement' => 'Tablet',
- ),
- 586 =>
- array (
- 'regex' => 'Puffin/[\\d\\.]+AP',
- 'device_replacement' => 'Generic Smartphone',
- 'brand_replacement' => 'Generic',
- 'model_replacement' => 'Smartphone',
- ),
- 587 =>
- array (
- 'regex' => 'Android[\\- ][\\d]+\\.[\\d]+; [A-Za-z]{2}\\-[A-Za-z]{0,2}; WOWMobile (.+)( Build[/ ]|\\))',
- 'brand_replacement' => 'Generic_Android',
- 'model_replacement' => '$1',
- ),
- 588 =>
- array (
- 'regex' => 'Android[\\- ][\\d]+\\.[\\d]+\\-update1; [A-Za-z]{2}\\-[A-Za-z]{0,2} *; *(.+?)( Build[/ ]|\\))',
- 'brand_replacement' => 'Generic_Android',
- 'model_replacement' => '$1',
- ),
- 589 =>
- array (
- 'regex' => 'Android[\\- ][\\d]+(?:\\.[\\d]+)(?:\\.[\\d]+|); *[A-Za-z]{2}[_\\-][A-Za-z]{0,2}\\-? *; *(.+?)( Build[/ ]|\\))',
- 'brand_replacement' => 'Generic_Android',
- 'model_replacement' => '$1',
- ),
- 590 =>
- array (
- 'regex' => 'Android[\\- ][\\d]+(?:\\.[\\d]+)(?:\\.[\\d]+|); *[A-Za-z]{0,2}\\- *; *(.+?)( Build[/ ]|\\))',
- 'brand_replacement' => 'Generic_Android',
- 'model_replacement' => '$1',
- ),
- 591 =>
- array (
- 'regex' => 'Android[\\- ][\\d]+(?:\\.[\\d]+)(?:\\.[\\d]+|); *[a-z]{0,2}[_\\-]?[A-Za-z]{0,2};?( Build[/ ]|\\))',
- 'device_replacement' => 'Generic Smartphone',
- 'brand_replacement' => 'Generic',
- 'model_replacement' => 'Smartphone',
- ),
- 592 =>
- array (
- 'regex' => 'Android[\\- ][\\d]+(?:\\.[\\d]+)(?:\\.[\\d]+|); *\\-?[A-Za-z]{2}; *(.+?)( Build[/ ]|\\))',
- 'brand_replacement' => 'Generic_Android',
- 'model_replacement' => '$1',
- ),
- 593 =>
- array (
- 'regex' => 'Android[\\- ][\\d]+(?:\\.[\\d]+)(?:\\.[\\d]+|)(?:;.*|); *(.+?)( Build[/ ]|\\))',
- 'brand_replacement' => 'Generic_Android',
- 'model_replacement' => '$1',
- ),
- 594 =>
- array (
- 'regex' => '(GoogleTV)',
- 'brand_replacement' => 'Generic_Inettv',
- 'model_replacement' => '$1',
- ),
- 595 =>
- array (
- 'regex' => '(WebTV)/\\d+.\\d+',
- 'brand_replacement' => 'Generic_Inettv',
- 'model_replacement' => '$1',
- ),
- 596 =>
- array (
- 'regex' => '^(Roku)/DVP-\\d+\\.\\d+',
- 'brand_replacement' => 'Generic_Inettv',
- 'model_replacement' => '$1',
- ),
- 597 =>
- array (
- 'regex' => '(Android 3\\.\\d|Opera Tablet|Tablet; .+Firefox/|Android.*(?:Tab|Pad))',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Generic Tablet',
- 'brand_replacement' => 'Generic',
- 'model_replacement' => 'Tablet',
- ),
- 598 =>
- array (
- 'regex' => '(Symbian|\\bS60(Version|V\\d)|\\bS60\\b|\\((Series 60|Windows Mobile|Palm OS|Bada); Opera Mini|Windows CE|Opera Mobi|BREW|Brew|Mobile; .+Firefox/|iPhone OS|Android|MobileSafari|Windows *Phone|\\(webOS/|PalmOS)',
- 'device_replacement' => 'Generic Smartphone',
- 'brand_replacement' => 'Generic',
- 'model_replacement' => 'Smartphone',
- ),
- 599 =>
- array (
- 'regex' => '(hiptop|avantgo|plucker|xiino|blazer|elaine)',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Generic Smartphone',
- 'brand_replacement' => 'Generic',
- 'model_replacement' => 'Smartphone',
- ),
- 600 =>
- array (
- 'regex' => '(bot|BUbiNG|zao|borg|DBot|oegp|silk|Xenu|zeal|^NING|CCBot|crawl|htdig|lycos|slurp|teoma|voila|yahoo|Sogou|CiBra|Nutch|^Java/|^JNLP/|Daumoa|Daum|Genieo|ichiro|larbin|pompos|Scrapy|snappy|speedy|spider|msnbot|msrbot|vortex|^vortex|crawler|favicon|indexer|Riddler|scooter|scraper|scrubby|WhatWeb|WinHTTP|bingbot|BingPreview|openbot|gigabot|furlbot|polybot|seekbot|^voyager|archiver|Icarus6j|mogimogi|Netvibes|blitzbot|altavista|charlotte|findlinks|Retreiver|TLSProber|WordPress|SeznamBot|ProoXiBot|wsr\\-agent|Squrl Java|EtaoSpider|PaperLiBot|SputnikBot|A6\\-Indexer|netresearch|searchsight|baiduspider|YisouSpider|ICC\\-Crawler|http%20client|Python-urllib|dataparksearch|converacrawler|Screaming Frog|AppEngine-Google|YahooCacheSystem|fast\\-webcrawler|Sogou Pic Spider|semanticdiscovery|Innovazion Crawler|facebookexternalhit|Google.*/\\+/web/snippet|Google-HTTP-Java-Client|BlogBridge|IlTrovatore-Setaccio|InternetArchive|GomezAgent|WebThumbnail|heritrix|NewsGator|PagePeeker|Reaper|ZooShot|holmes|NL-Crawler|Pingdom|StatusCake|WhatsApp|masscan|Google Web Preview|Qwantify|Yeti|OgScrper)',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Spider',
- 'brand_replacement' => 'Spider',
- 'model_replacement' => 'Desktop',
- ),
- 601 =>
- array (
- 'regex' => '^(1207|3gso|4thp|501i|502i|503i|504i|505i|506i|6310|6590|770s|802s|a wa|acer|acs\\-|airn|alav|asus|attw|au\\-m|aur |aus |abac|acoo|aiko|alco|alca|amoi|anex|anny|anyw|aptu|arch|argo|bmobile|bell|bird|bw\\-n|bw\\-u|beck|benq|bilb|blac|c55/|cdm\\-|chtm|capi|comp|cond|dall|dbte|dc\\-s|dica|ds\\-d|ds12|dait|devi|dmob|doco|dopo|dorado|el(?:38|39|48|49|50|55|58|68)|el[3456]\\d{2}dual|erk0|esl8|ex300|ez40|ez60|ez70|ezos|ezze|elai|emul|eric|ezwa|fake|fly\\-|fly_|g\\-mo|g1 u|g560|gf\\-5|grun|gene|go.w|good|grad|hcit|hd\\-m|hd\\-p|hd\\-t|hei\\-|hp i|hpip|hs\\-c|htc |htc\\-|htca|htcg)',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Generic Feature Phone',
- 'brand_replacement' => 'Generic',
- 'model_replacement' => 'Feature Phone',
- ),
- 602 =>
- array (
- 'regex' => '^(htcp|htcs|htct|htc_|haie|hita|huaw|hutc|i\\-20|i\\-go|i\\-ma|i\\-mobile|i230|iac|iac\\-|iac/|ig01|im1k|inno|iris|jata|kddi|kgt|kgt/|kpt |kwc\\-|klon|lexi|lg g|lg\\-a|lg\\-b|lg\\-c|lg\\-d|lg\\-f|lg\\-g|lg\\-k|lg\\-l|lg\\-m|lg\\-o|lg\\-p|lg\\-s|lg\\-t|lg\\-u|lg\\-w|lg/k|lg/l|lg/u|lg50|lg54|lge\\-|lge/|leno|m1\\-w|m3ga|m50/|maui|mc01|mc21|mcca|medi|meri|mio8|mioa|mo01|mo02|mode|modo|mot |mot\\-|mt50|mtp1|mtv |mate|maxo|merc|mits|mobi|motv|mozz|n100|n101|n102|n202|n203|n300|n302|n500|n502|n505|n700|n701|n710|nec\\-|nem\\-|newg|neon)',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Generic Feature Phone',
- 'brand_replacement' => 'Generic',
- 'model_replacement' => 'Feature Phone',
- ),
- 603 =>
- array (
- 'regex' => '^(netf|noki|nzph|o2 x|o2\\-x|opwv|owg1|opti|oran|ot\\-s|p800|pand|pg\\-1|pg\\-2|pg\\-3|pg\\-6|pg\\-8|pg\\-c|pg13|phil|pn\\-2|pt\\-g|palm|pana|pire|pock|pose|psio|qa\\-a|qc\\-2|qc\\-3|qc\\-5|qc\\-7|qc07|qc12|qc21|qc32|qc60|qci\\-|qwap|qtek|r380|r600|raks|rim9|rove|s55/|sage|sams|sc01|sch\\-|scp\\-|sdk/|se47|sec\\-|sec0|sec1|semc|sgh\\-|shar|sie\\-|sk\\-0|sl45|slid|smb3|smt5|sp01|sph\\-|spv |spv\\-|sy01|samm|sany|sava|scoo|send|siem|smar|smit|soft|sony|t\\-mo|t218|t250|t600|t610|t618|tcl\\-|tdg\\-|telm|tim\\-|ts70|tsm\\-|tsm3|tsm5|tx\\-9|tagt)',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Generic Feature Phone',
- 'brand_replacement' => 'Generic',
- 'model_replacement' => 'Feature Phone',
- ),
- 604 =>
- array (
- 'regex' => '^(talk|teli|topl|tosh|up.b|upg1|utst|v400|v750|veri|vk\\-v|vk40|vk50|vk52|vk53|vm40|vx98|virg|vertu|vite|voda|vulc|w3c |w3c\\-|wapj|wapp|wapu|wapm|wig |wapi|wapr|wapv|wapy|wapa|waps|wapt|winc|winw|wonu|x700|xda2|xdag|yas\\-|your|zte\\-|zeto|aste|audi|avan|blaz|brew|brvw|bumb|ccwa|cell|cldc|cmd\\-|dang|eml2|fetc|hipt|http|ibro|idea|ikom|ipaq|jbro|jemu|jigs|keji|kyoc|kyok|libw|m\\-cr|midp|mmef|moto|mwbp|mywa|newt|nok6|o2im|pant|pdxg|play|pluc|port|prox|rozo|sama|seri|smal|symb|treo|upsi|vx52|vx53|vx60|vx61|vx70|vx80|vx81|vx83|vx85|wap\\-|webc|whit|wmlb|xda\\-|xda_)',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Generic Feature Phone',
- 'brand_replacement' => 'Generic',
- 'model_replacement' => 'Feature Phone',
- ),
- 605 =>
- array (
- 'regex' => '^(Ice)$',
- 'device_replacement' => 'Generic Feature Phone',
- 'brand_replacement' => 'Generic',
- 'model_replacement' => 'Feature Phone',
- ),
- 606 =>
- array (
- 'regex' => '(wap[\\-\\ ]browser|maui|netfront|obigo|teleca|up\\.browser|midp|Opera Mini)',
- 'regex_flag' => 'i',
- 'device_replacement' => 'Generic Feature Phone',
- 'brand_replacement' => 'Generic',
- 'model_replacement' => 'Feature Phone',
- ),
- ),
-);
\ No newline at end of file
diff --git a/vendor/ua-parser/uap-php/src/AbstractParser.php b/vendor/ua-parser/uap-php/src/AbstractParser.php
deleted file mode 100644
index 334a2a2a7..000000000
--- a/vendor/ua-parser/uap-php/src/AbstractParser.php
+++ /dev/null
@@ -1,140 +0,0 @@
-regexes = $regexes;
- }
-
- /**
- * Create parser instance
- *
- * Either pass a custom regexes.php file or leave the argument empty and use the default file.
- *
- * @param string $file
- * @throws FileNotFoundException
- * @return static
- */
- public static function create($file = null)
- {
- return $file ? static::createCustom($file) : static::createDefault();
- }
-
- /**
- * @return static
- * @throws FileNotFoundException
- */
- protected static function createDefault()
- {
- return static::createInstance(
- static::getDefaultFile(),
- array('UAParser\Exception\FileNotFoundException', 'defaultFileNotFound')
- );
- }
-
- /**
- * @return static
- * @throws FileNotFoundException
- */
- protected static function createCustom($file)
- {
- return static::createInstance(
- $file,
- array('UAParser\Exception\FileNotFoundException', 'customRegexFileNotFound')
- );
- }
-
- private static function createInstance($file, $exceptionFactory)
- {
- if (!file_exists($file)) {
- throw call_user_func($exceptionFactory, $file);
- }
-
- return new static(include $file);
- }
-
- /**
- * @param array $regexes
- * @param string $userAgent
- * @return array
- */
- protected static function tryMatch(array $regexes, $userAgent)
- {
- foreach ($regexes as $regex) {
- $flag = isset($regex['regex_flag']) ? $regex['regex_flag'] : '';
- if (preg_match('@' . $regex['regex'] . '@' . $flag, $userAgent, $matches)) {
-
- $defaults = array(
- 1 => 'Other',
- 2 => null,
- 3 => null,
- 4 => null,
- 5 => null,
- );
-
- return array($regex, $matches + $defaults);
- }
- }
-
- return array(null, null);
- }
-
- /**
- * @param array $regex
- * @param string $key
- * @param string $default
- * @param array $matches
- * @return string|null
- */
- protected static function multiReplace(array $regex, $key, $default, array $matches)
- {
- if (!isset($regex[$key])) {
- return self::emptyStringToNull($default);
- }
-
- $replacement = preg_replace_callback(
- '|\$(?P\d)|',
- function ($m) use ($matches) {
- return isset($matches[$m['key']]) ? $matches[$m['key']] : '';
- },
- $regex[$key]
- );
-
- return self::emptyStringToNull($replacement);
- }
-
- private static function emptyStringToNull($string)
- {
- $string = trim($string);
-
- return $string === '' ? null : $string;
- }
-
- /**
- * @return string
- */
- protected static function getDefaultFile()
- {
- return static::$defaultFile
- ? static::$defaultFile
- : realpath(__DIR__ . '/../resources') . DIRECTORY_SEPARATOR . 'regexes.php';
- }
-}
diff --git a/vendor/ua-parser/uap-php/src/Command/ConvertCommand.php b/vendor/ua-parser/uap-php/src/Command/ConvertCommand.php
deleted file mode 100644
index 3077ae621..000000000
--- a/vendor/ua-parser/uap-php/src/Command/ConvertCommand.php
+++ /dev/null
@@ -1,62 +0,0 @@
-resourceDirectory = $resourceDirectory;
- $this->defaultYamlFile = $defaultYamlFile;
- parent::__construct();
- }
-
- protected function configure()
- {
- $this
- ->setName('ua-parser:convert')
- ->setDescription('Converts an existing regexes.yaml file to a regexes.php file.')
- ->addArgument(
- 'file',
- InputArgument::OPTIONAL,
- 'Path to the regexes.yaml file',
- $this->defaultYamlFile
- )
- ->addOption(
- 'no-backup',
- null,
- InputOption::VALUE_NONE,
- 'Do not backup the previously existing file'
- )
- ;
- }
-
- protected function execute(InputInterface $input, OutputInterface $output)
- {
- $this->getConverter()->convertFile($input->getArgument('file'), $input->getOption('no-backup'));
- }
-
- private function getConverter()
- {
- return new Converter($this->resourceDirectory);
- }
-}
diff --git a/vendor/ua-parser/uap-php/src/Command/FetchCommand.php b/vendor/ua-parser/uap-php/src/Command/FetchCommand.php
deleted file mode 100644
index f6d8df0e0..000000000
--- a/vendor/ua-parser/uap-php/src/Command/FetchCommand.php
+++ /dev/null
@@ -1,49 +0,0 @@
-defaultYamlFile = $defaultYamlFile;
- parent::__construct();
- }
-
- protected function configure()
- {
- $this
- ->setName('ua-parser:fetch')
- ->setDescription('Fetches an updated YAML file for ua-parser.')
- ->addArgument(
- 'file',
- InputArgument::OPTIONAL,
- 'regexes.yaml output file',
- $this->defaultYamlFile
- )
- ;
- }
-
- protected function execute(InputInterface $input, OutputInterface $output)
- {
- $fs = new Filesystem();
- $fetcher = new Fetcher();
- $fs->dumpFile($input->getArgument('file'), $fetcher->fetch());
- }
-}
diff --git a/vendor/ua-parser/uap-php/src/Command/LogfileCommand.php b/vendor/ua-parser/uap-php/src/Command/LogfileCommand.php
deleted file mode 100644
index c1bd31f75..000000000
--- a/vendor/ua-parser/uap-php/src/Command/LogfileCommand.php
+++ /dev/null
@@ -1,205 +0,0 @@
-setName('ua-parser:log')
- ->setDescription('Parses the supplied webserver log file.')
- ->addArgument(
- 'output',
- InputArgument::REQUIRED,
- 'Path to output log file'
- )
- ->addOption(
- 'log-file',
- 'f',
- InputOption::VALUE_REQUIRED,
- 'Path to a webserver log file'
- )
- ->addOption(
- 'log-dir',
- 'd',
- InputOption::VALUE_REQUIRED,
- 'Path to webserver log directory'
- )
- ->addOption(
- 'include',
- 'i',
- InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED,
- 'Include glob expressions for log files in the log directory',
- array('*.log', '*.log*.gz', '*.log*.bz2')
- )
- ->addOption(
- 'exclude',
- 'e',
- InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED,
- 'Exclude glob expressions for log files in the log directory',
- array('*error*')
- )
- ;
- }
-
- protected function execute(InputInterface $input, OutputInterface $output)
- {
- if (!$input->getOption('log-file') && !$input->getOption('log-dir')) {
- throw InvalidArgumentException::oneOfCommandArguments('log-file', 'log-dir');
- }
-
- $parser = Parser::create();
- $undefinedClients = array();
- /** @var $file SplFileInfo */
- foreach ($this->getFiles($input) as $file) {
-
- $path = $this->getPath($file);
- $lines = file($path);
-
- if (empty($lines)) {
- $output->writeln(sprintf('Skipping empty file "%s"', $file->getPathname()));
- $output->writeln('');
- continue;
- }
-
- $firstLine = reset($lines);
-
- $reader = AbstractReader::factory($firstLine);
- if (!$reader) {
- $output->writeln(sprintf('Could not find reader for file "%s"', $file->getPathname()));
- $output->writeln('');
- continue;
- }
-
- $output->writeln('');
- $output->writeln(sprintf('Analyzing "%s"', $file->getPathname()));
-
- $count = 1;
- $totalCount = count($lines);
- foreach ($lines as $line) {
-
- try {
- $userAgentString = $reader->read($line);
- } catch (ReaderException $e) {
- $count = $this->outputProgress($output, 'E', $count, $totalCount);
- continue;
- }
-
- $client = $parser->parse($userAgentString);
-
- $result = $this->getResult($client);
- if ($result !== '.') {
- $undefinedClients[] = json_encode(
- array($client->toString(), $userAgentString),
- JSON_UNESCAPED_SLASHES
- );
- }
-
- $count = $this->outputProgress($output, $result, $count, $totalCount);
- }
- $this->outputProgress($output, '', $count - 1, $totalCount, true);
- $output->writeln('');
- }
-
- $undefinedClients = $this->filter($undefinedClients);
-
- $fs = new Filesystem();
- $fs->dumpFile($input->getArgument('output'), join(PHP_EOL, $undefinedClients));
- }
-
- private function outputProgress(OutputInterface $output, $result, $count, $totalCount, $end = false)
- {
- if (($count % 70) === 0 || $end) {
- $formatString = '%s %' . strlen($totalCount) . 'd / %-' . strlen($totalCount) . 'd (%3d%%)';
- $result = $end ? str_repeat(' ', 70 - ($count % 70)) : $result;
- $output->writeln(sprintf($formatString, $result, $count, $totalCount, $count / $totalCount * 100));
- } else {
- $output->write($result);
- }
-
- return $count + 1;
- }
-
- private function getResult(Client $client)
- {
- if ($client->device->family === 'Spider') {
- return '.';
- } elseif ($client->ua->family === 'Other') {
- return 'U';
- } elseif ($client->os->family === 'Other') {
- return 'O';
- } elseif ($client->device->family === 'Generic Smartphone') {
- return 'S';
- } elseif ($client->device->family === 'Generic Feature Phone') {
- return 'F';
- }
-
- return '.';
- }
-
- private function getFiles(InputInterface $input)
- {
- $finder = Finder::create();
-
- if ($input->getOption('log-file')) {
- $file = $input->getOption('log-file');
- $finder->append(Finder::create()->in(dirname($file))->name(basename($file)));
- }
-
- if ($input->getOption('log-dir')) {
- $dirFinder = Finder::create()
- ->in($input->getOption('log-dir'));
- array_map(array($dirFinder, 'name'), $input->getOption('include'));
- array_map(array($dirFinder, 'notName'), $input->getOption('exclude'));
-
- $finder->append($dirFinder);
- }
-
- return $finder;
- }
-
- private function filter(array $lines)
- {
- return array_values(array_unique($lines));
- }
-
- private function getPath(SplFileInfo $file)
- {
- switch ($file->getExtension()) {
- case 'gz':
- $path = 'compress.zlib://' . $file->getPathname();
- break;
-
- case 'bz2':
- $path = 'compress.bzip2://' . $file->getPathname();
- break;
-
- default:
- $path = $file->getPathname();
- break;
- }
-
- return $path;
- }
-}
diff --git a/vendor/ua-parser/uap-php/src/Command/ParserCommand.php b/vendor/ua-parser/uap-php/src/Command/ParserCommand.php
deleted file mode 100644
index 91e51a75c..000000000
--- a/vendor/ua-parser/uap-php/src/Command/ParserCommand.php
+++ /dev/null
@@ -1,39 +0,0 @@
-setName('ua-parser:parse')
- ->setDescription('Parses a user agent string and dumps the results.')
- ->addArgument(
- 'user-agent',
- null,
- InputArgument::REQUIRED,
- 'User agent string to analyze'
- )
- ;
- }
-
- protected function execute(InputInterface $input, OutputInterface $output)
- {
- $result = Parser::create()->parse($input->getArgument('user-agent'));
-
- $output->writeln(json_encode($result, JSON_PRETTY_PRINT));
- }
-}
diff --git a/vendor/ua-parser/uap-php/src/Command/UpdateCommand.php b/vendor/ua-parser/uap-php/src/Command/UpdateCommand.php
deleted file mode 100644
index 7849131df..000000000
--- a/vendor/ua-parser/uap-php/src/Command/UpdateCommand.php
+++ /dev/null
@@ -1,50 +0,0 @@
-resourceDirectory = $resourceDirectory;
- parent::__construct();
- }
-
- protected function configure()
- {
- $this
- ->setName('ua-parser:update')
- ->setDescription('Fetches an updated YAML file for ua-parser and overwrites the current PHP file.')
- ->addOption(
- 'no-backup',
- null,
- InputOption::VALUE_NONE,
- 'Do not backup the previously existing file'
- )
- ;
- }
-
- protected function execute(InputInterface $input, OutputInterface $output)
- {
- $fetcher = new Fetcher();
- $converter = new Converter($this->resourceDirectory);
-
- $converter->convertString($fetcher->fetch(), !$input->getOption('no-backup'));
- }
-}
diff --git a/vendor/ua-parser/uap-php/src/DeviceParser.php b/vendor/ua-parser/uap-php/src/DeviceParser.php
deleted file mode 100644
index 3ffcb1699..000000000
--- a/vendor/ua-parser/uap-php/src/DeviceParser.php
+++ /dev/null
@@ -1,37 +0,0 @@
-regexes['device_parsers'], $userAgent);
-
- if ($matches) {
- $device->family = self::multiReplace($regex, 'device_replacement', $matches[1], $matches);
- $device->brand = self::multiReplace($regex, 'brand_replacement', null, $matches);
- $deviceModelDefault = $matches[1] !== 'Other' ? $matches[1] : null;
- $device->model = self::multiReplace($regex, 'model_replacement', $deviceModelDefault, $matches);
- }
-
- return $device;
- }
-}
diff --git a/vendor/ua-parser/uap-php/src/Exception/DomainException.php b/vendor/ua-parser/uap-php/src/Exception/DomainException.php
deleted file mode 100644
index 3fc9a0fcb..000000000
--- a/vendor/ua-parser/uap-php/src/Exception/DomainException.php
+++ /dev/null
@@ -1,15 +0,0 @@
-regexes['os_parsers'], $userAgent);
-
- if ($matches) {
- $os->family = self::multiReplace($regex, 'os_replacement', $matches[1], $matches);
- $os->major = self::multiReplace($regex, 'os_v1_replacement', $matches[2], $matches);
- $os->minor = self::multiReplace($regex, 'os_v2_replacement', $matches[3], $matches);
- $os->patch = self::multiReplace($regex, 'os_v3_replacement', $matches[4], $matches);
- $os->patchMinor = self::multiReplace($regex, 'os_v4_replacement', $matches[5], $matches);
- }
-
- return $os;
- }
-}
diff --git a/vendor/ua-parser/uap-php/src/Parser.php b/vendor/ua-parser/uap-php/src/Parser.php
deleted file mode 100644
index 6ad7ab6b2..000000000
--- a/vendor/ua-parser/uap-php/src/Parser.php
+++ /dev/null
@@ -1,55 +0,0 @@
-regexes
- *
- * @param array $regexes
- */
- public function __construct(array $regexes)
- {
- parent::__construct($regexes);
- $this->deviceParser = new DeviceParser($this->regexes);
- $this->operatingSystemParser = new OperatingSystemParser($this->regexes);
- $this->userAgentParser = new UserAgentParser($this->regexes);
- }
-
- /**
- * Sets up some standard variables as well as starts the user agent parsing process
- *
- * @param string $userAgent a user agent string to test, defaults to an empty string
- * @param array $jsParseBits
- * @return Client
- */
- public function parse($userAgent, array $jsParseBits = array())
- {
- $client = new Client($userAgent);
-
- $client->ua = $this->userAgentParser->parseUserAgent($userAgent, $jsParseBits);
- $client->os = $this->operatingSystemParser->parseOperatingSystem($userAgent);
- $client->device = $this->deviceParser->parseDevice($userAgent);
-
- return $client;
- }
-}
diff --git a/vendor/ua-parser/uap-php/src/Result/AbstractClient.php b/vendor/ua-parser/uap-php/src/Result/AbstractClient.php
deleted file mode 100644
index daec80f69..000000000
--- a/vendor/ua-parser/uap-php/src/Result/AbstractClient.php
+++ /dev/null
@@ -1,22 +0,0 @@
-toString();
- }
-}
diff --git a/vendor/ua-parser/uap-php/src/Result/AbstractSoftware.php b/vendor/ua-parser/uap-php/src/Result/AbstractSoftware.php
deleted file mode 100644
index b6f519f4b..000000000
--- a/vendor/ua-parser/uap-php/src/Result/AbstractSoftware.php
+++ /dev/null
@@ -1,21 +0,0 @@
-family;
- }
-}
diff --git a/vendor/ua-parser/uap-php/src/Result/AbstractVersionedSoftware.php b/vendor/ua-parser/uap-php/src/Result/AbstractVersionedSoftware.php
deleted file mode 100644
index 57492361b..000000000
--- a/vendor/ua-parser/uap-php/src/Result/AbstractVersionedSoftware.php
+++ /dev/null
@@ -1,28 +0,0 @@
-family, $this->toVersion())));
- }
-
- /** @return string */
- protected function formatVersion()
- {
- return join('.', array_filter(func_get_args(), 'is_numeric'));
- }
-}
diff --git a/vendor/ua-parser/uap-php/src/Result/Client.php b/vendor/ua-parser/uap-php/src/Result/Client.php
deleted file mode 100644
index cc027d0d3..000000000
--- a/vendor/ua-parser/uap-php/src/Result/Client.php
+++ /dev/null
@@ -1,38 +0,0 @@
-originalUserAgent = $originalUserAgent;
- }
-
- public function toString()
- {
- return $this->ua->toString() . '/' . $this->os->toString();
- }
-}
diff --git a/vendor/ua-parser/uap-php/src/Result/Device.php b/vendor/ua-parser/uap-php/src/Result/Device.php
deleted file mode 100644
index 1e9f1c991..000000000
--- a/vendor/ua-parser/uap-php/src/Result/Device.php
+++ /dev/null
@@ -1,19 +0,0 @@
-formatVersion($this->major, $this->minor, $this->patch, $this->patchMinor);
- }
-}
diff --git a/vendor/ua-parser/uap-php/src/Result/UserAgent.php b/vendor/ua-parser/uap-php/src/Result/UserAgent.php
deleted file mode 100644
index 216121aba..000000000
--- a/vendor/ua-parser/uap-php/src/Result/UserAgent.php
+++ /dev/null
@@ -1,27 +0,0 @@
-formatVersion($this->major, $this->minor, $this->patch);
- }
-}
diff --git a/vendor/ua-parser/uap-php/src/UserAgentParser.php b/vendor/ua-parser/uap-php/src/UserAgentParser.php
deleted file mode 100644
index 28f59308f..000000000
--- a/vendor/ua-parser/uap-php/src/UserAgentParser.php
+++ /dev/null
@@ -1,60 +0,0 @@
-family = $jsParseBits['js_user_agent_family'];
- $ua->major = $jsParseBits['js_user_agent_v1'];
- $ua->minor = $jsParseBits['js_user_agent_v2'];
- $ua->patch = $jsParseBits['js_user_agent_v3'];
-
- } else {
-
- list($regex, $matches) = self::tryMatch($this->regexes['user_agent_parsers'], $userAgent);
-
- if ($matches) {
- $ua->family = self::multiReplace($regex, 'family_replacement', $matches[1], $matches);
- $ua->major = self::multiReplace($regex, 'v1_replacement', $matches[2], $matches);
- $ua->minor = self::multiReplace($regex, 'v2_replacement', $matches[3], $matches);
- $ua->patch = self::multiReplace($regex, 'v3_replacement', $matches[4], $matches);
- }
- }
-
- if (isset($jsParseBits['js_user_agent_string'])) {
- $jsUserAgentString = $jsParseBits['js_user_agent_string'];
- if (strpos($jsUserAgentString, 'Chrome/') !== false && strpos($userAgent, 'chromeframe') !== false) {
- $override = $this->parseUserAgent($jsUserAgentString);
- $ua->family = sprintf('Chrome Frame (%s %s)', $ua->family, $ua->major);
- $ua->major = $override->major;
- $ua->minor = $override->minor;
- $ua->patch = $override->patch;
- }
- }
-
- return $ua;
- }
-
-}
diff --git a/vendor/ua-parser/uap-php/src/Util/Converter.php b/vendor/ua-parser/uap-php/src/Util/Converter.php
deleted file mode 100644
index 788e46768..000000000
--- a/vendor/ua-parser/uap-php/src/Util/Converter.php
+++ /dev/null
@@ -1,97 +0,0 @@
-destination = $destination;
- $this->fs = $fs ? $fs : new Filesystem();
- }
-
- /**
- * @param string $yamlFile
- * @param bool $backupBeforeOverride
- * @throws FileNotFoundException
- */
- public function convertFile($yamlFile, $backupBeforeOverride = true)
- {
- if (!$this->fs->exists($yamlFile)) {
- throw FileNotFoundException::fileNotFound($yamlFile);
- }
-
- $this->doConvert(Yaml::parse(file_get_contents($yamlFile)), $backupBeforeOverride);
- }
-
- /**
- * @param string $yamlString
- * @param bool $backupBeforeOverride
- */
- public function convertString($yamlString, $backupBeforeOverride = true)
- {
- $this->doConvert(Yaml::parse($yamlString), $backupBeforeOverride);
- }
-
- /**
- * @param array $regexes
- * @param bool $backupBeforeOverride
- */
- protected function doConvert(array $regexes, $backupBeforeOverride = true)
- {
- $regexes = $this->sanitizeRegexes($regexes);
- $data = "destination . '/regexes.php';
- if ($backupBeforeOverride && $this->fs->exists($regexesFile)) {
-
- $currentHash = hash('sha512', file_get_contents($regexesFile));
- $futureHash = hash('sha512', $data);
-
- if ($futureHash === $currentHash) {
- return;
- }
-
- $backupFile = $this->destination . '/regexes-' . $currentHash . '.php';
- $this->fs->copy($regexesFile, $backupFile);
- }
-
- $this->fs->dumpFile($regexesFile, $data);
- }
-
- private function sanitizeRegexes(array $regexes)
- {
- foreach ($regexes as $groupName => $group) {
- $regexes[$groupName] = array_map(array($this, 'sanitizeRegex'), $group);
- }
-
- return $regexes;
- }
-
- private function sanitizeRegex(array $regex)
- {
- $regex['regex'] = str_replace('@', '\@', $regex['regex']);
-
- return $regex;
- }
-}
diff --git a/vendor/ua-parser/uap-php/src/Util/Fetcher.php b/vendor/ua-parser/uap-php/src/Util/Fetcher.php
deleted file mode 100644
index c95b514fe..000000000
--- a/vendor/ua-parser/uap-php/src/Util/Fetcher.php
+++ /dev/null
@@ -1,58 +0,0 @@
-streamContext = $streamContext;
- } else {
- $this->streamContext = stream_context_create(
- array(
- 'ssl' => array(
- 'verify_peer' => true,
- 'verify_depth' => 10,
- 'cafile' => CaBundle::getSystemCaRootBundlePath(),
- static::getPeerNameKey() => 'www.github.com',
- 'disable_compression' => true,
- )
- )
- );
- }
- }
-
- public function fetch()
- {
- $level = error_reporting(0);
- $result = file_get_contents($this->resourceUri, null, $this->streamContext);
- error_reporting($level);
-
- if ($result === false) {
- $error = error_get_last();
- throw FetcherException::httpError($this->resourceUri, $error['message']);
- }
-
- return $result;
- }
-
- public static function getPeerNameKey()
- {
- return version_compare(PHP_VERSION, '5.6') === 1 ? 'peer_name' : 'CN_match';
- }
-}
diff --git a/vendor/ua-parser/uap-php/src/Util/Logfile/AbstractReader.php b/vendor/ua-parser/uap-php/src/Util/Logfile/AbstractReader.php
deleted file mode 100644
index 232a4a8d6..000000000
--- a/vendor/ua-parser/uap-php/src/Util/Logfile/AbstractReader.php
+++ /dev/null
@@ -1,70 +0,0 @@
-test($line)) {
- return $reader;
- }
- }
- }
-
- private static function getReaders()
- {
- if (static::$readers) {
- return static::$readers;
- }
-
- static::$readers[] = new ApacheCommonLogFormatReader();
-
- return static::$readers;
- }
-
- public function test($line)
- {
- $matches = $this->match($line);
-
- return isset($matches['userAgentString']);
- }
-
- public function read($line)
- {
- $matches = $this->match($line);
-
- if (!isset($matches['userAgentString'])) {
- throw ReaderException::userAgentParserError($line);
- }
-
- return $matches['userAgentString'];
- }
-
- protected function match($line)
- {
- if (preg_match($this->getRegex(), $line, $matches)) {
- return $matches;
- }
-
- return array();
- }
-
- abstract protected function getRegex();
-}
diff --git a/vendor/ua-parser/uap-php/src/Util/Logfile/ApacheCommonLogFormatReader.php b/vendor/ua-parser/uap-php/src/Util/Logfile/ApacheCommonLogFormatReader.php
deleted file mode 100644
index cf8fbb3e8..000000000
--- a/vendor/ua-parser/uap-php/src/Util/Logfile/ApacheCommonLogFormatReader.php
+++ /dev/null
@@ -1,37 +0,0 @@
-.*?)\" # User Agent
- $@x';
- }
-}
diff --git a/vendor/ua-parser/uap-php/src/Util/Logfile/ReaderInterface.php b/vendor/ua-parser/uap-php/src/Util/Logfile/ReaderInterface.php
deleted file mode 100644
index a81b20d23..000000000
--- a/vendor/ua-parser/uap-php/src/Util/Logfile/ReaderInterface.php
+++ /dev/null
@@ -1,24 +0,0 @@
-getParserClassName();
-
- $this->assertInstanceOf($parserClassName, $parserClassName::create());
- }
-
- public function testCreateCustom()
- {
- $parserClassName = $this->getParserClassName();
-
- $this->assertInstanceOf(
- $parserClassName,
- $parserClassName::create(__DIR__ . '/../resources/regexes.php')
- );
- }
-
- public function testCreateCustomWithInvalidFile()
- {
- $parserClassName = $this->getParserClassName();
-
- $this->setExpectedException(
- 'UAParser\Exception\FileNotFoundException',
- 'ua-parser cannot find the custom regexes file you supplied ("foo.php"). Please make sure you have the correct path.'
- );
- $parserClassName::create('foo.php');
- }
-
- public function testExceptionOnFileNotFoundInvalidDefault()
- {
- $parserClassName = $this->getParserClassName();
-
- $this->setExpectedException(
- 'UAParser\Exception\FileNotFoundException',
- 'Please download the "invalidFile" file before using ua-parser by running "php bin/uaparser ua-parser:update"'
- );
-
- $parserClassName::$defaultFile = 'invalidFile';
- $parserClassName::create();
- }
-
- public function testDefaultFileIsAbsolute()
- {
- $class = new \ReflectionClass('UAParser\AbstractParser');
- $method = $class->getMethod('getDefaultFile');
- $method->setAccessible(true);
-
- $this->assertNotContains('..', $method->invoke(null));
- }
-
- public function tearDown()
- {
- AbstractParser::$defaultFile = null;
- }
-
- abstract protected function getParserClassName();
-}
diff --git a/vendor/ua-parser/uap-php/tests/AbstractTestCase.php b/vendor/ua-parser/uap-php/tests/AbstractTestCase.php
deleted file mode 100644
index 90fccfba9..000000000
--- a/vendor/ua-parser/uap-php/tests/AbstractTestCase.php
+++ /dev/null
@@ -1,39 +0,0 @@
-expectException($class);
- if (!empty($message)) {
- $this->expectExceptionMessage($message);
- }
- if ($exception_code !== NULL) {
- $this->expectExceptionCode($exception_code);
- }
- } else {
- parent::setExpectedException($class, $message, $exception_code);
- }
- }
-}
diff --git a/vendor/ua-parser/uap-php/tests/ParserTest.php b/vendor/ua-parser/uap-php/tests/ParserTest.php
deleted file mode 100644
index 09fb894c3..000000000
--- a/vendor/ua-parser/uap-php/tests/ParserTest.php
+++ /dev/null
@@ -1,186 +0,0 @@
-parser = static::$staticParser;
- }
-
- public static function getOsTestData()
- {
- $resources = Finder::create()
- ->files()
- ->path('tests')
- ->name('test_os.yaml')
- ->path('test_resources')
- ->name('additional_os_tests.yaml');
-
- return static::createTestData($resources);
- }
-
- public static function getUserAgentTestData()
- {
- $resources = Finder::create()
- ->files()
- ->path('tests')
- ->name('test_ua.yaml')
- ->path('test_resources')
- ->name('firefox_user_agent_strings.yaml')
- ->name('pgts_browser_list.yaml');
-
- return static::createTestData($resources);
- }
-
- public static function getDeviceTestData()
- {
- $resources = Finder::create()
- ->files()
- ->path('tests')
- ->name('test_device.yaml');
-
- return static::createTestData($resources);
- }
-
- public function testNoMatch()
- {
- $result = $this->parser->parse('unknown user agent');
-
- $this->assertSame('Other', $result->device->family);
- $this->assertSame('Other', $result->ua->family);
- $this->assertSame('Other', $result->os->family);
- }
-
- /** @dataProvider getDeviceTestData */
- public function testDeviceParsing($userAgent, array $jsUserAgent, $family, $major, $minor, $patch, $patchMinor, $brand, $model)
- {
- $result = $this->parser->parse($userAgent, $jsUserAgent);
-
- $this->assertSame($family, $result->device->family);
- $this->assertSame($brand, $result->device->brand);
- $this->assertSame($model, $result->device->model);
- }
-
- /** @dataProvider getOsTestData */
- public function testOperatingSystemParsing($userAgent, array $jsUserAgent, $family, $major, $minor, $patch, $patchMinor)
- {
- $result = $this->parser->parse($userAgent, $jsUserAgent);
-
- $this->assertSame($family, $result->os->family);
- $this->assertSame($major, $result->os->major);
- $this->assertSame($minor, $result->os->minor);
- $this->assertSame($patch, $result->os->patch);
- $this->assertSame($patchMinor, $result->os->patchMinor);
- }
-
- /** @dataProvider getUserAgentTestData */
- public function testUserAgentParsing($userAgent, array $jsUserAgent, $family, $major, $minor, $patch)
- {
- $result = $this->parser->parse($userAgent, $jsUserAgent);
-
- $this->assertSame($family, $result->ua->family);
- $this->assertSame($major, $result->ua->major);
- $this->assertSame($minor, $result->ua->minor);
- $this->assertSame($patch, $result->ua->patch);
- }
-
- public function testToString()
- {
- $userAgentString = 'HbbTV/1.1.1 (;;;;;) firetv-firefox-plugin 1.1.20';
- $result = $this->parser->parse($userAgentString);
-
- $this->assertSame('HbbTV 1.1.1/FireHbbTV 1.1.20', $result->toString());
- $this->assertSame('HbbTV 1.1.1/FireHbbTV 1.1.20', (string) $result);
-
- $this->assertSame('HbbTV 1.1.1', $result->ua->toString());
- $this->assertSame('HbbTV 1.1.1', (string) $result->ua);
- $this->assertSame('1.1.1', $result->ua->toVersion());
-
- $this->assertSame('FireHbbTV 1.1.20', $result->os->toString());
- $this->assertSame('FireHbbTV 1.1.20', (string) $result->os);
- $this->assertSame('1.1.20', $result->os->toVersion());
-
- $this->assertSame($userAgentString, $result->originalUserAgent);
- }
-
- public function testToString_2()
- {
- $userAgentString = 'PingdomBot 1.4/Other Pingdom.com_bot_version_1.4_(http://www.pingdom.com/)';
-
- $result = $this->parser->parse($userAgentString);
-
- $this->assertSame('PingdomBot 1.4/Other', $result->toString());
- $this->assertSame('PingdomBot 1.4/Other', (string) $result);
-
- $this->assertSame('PingdomBot 1.4', $result->ua->toString());
- $this->assertSame('PingdomBot 1.4', (string) $result->ua);
- $this->assertSame('1.4', $result->ua->toVersion());
-
- $this->assertSame('Other', $result->os->toString());
- $this->assertSame('Other', (string) $result->os);
- $this->assertSame('', $result->os->toVersion());
-
- $this->assertSame($userAgentString, $result->originalUserAgent);
- }
-
- private static function createTestData(Finder $resources)
- {
- $resourcesDirectory = realpath(__DIR__ . '/../uap-core');
- $testData = array();
-
- /** @var $resource SplFileInfo */
- foreach ($resources->in($resourcesDirectory) as $resource) {
- $data = Yaml::parse(str_replace("\t", "", $resource->getContents()));
- foreach ($data['test_cases'] as $testCase) {
- $testData[] = static::createArguments($testCase, $resource);
- }
- }
-
- return $testData;
- }
-
- private static function createArguments(array $testCase, SplFileInfo $resource)
- {
- return array(
- $testCase['user_agent_string'],
- isset($testCase['js_ua']) ? json_decode(str_replace("'", '"', $testCase['js_ua']), true) : array(),
- $testCase['family'],
- isset($testCase['major']) ? $testCase['major'] : null,
- isset($testCase['minor']) ? $testCase['minor'] : null,
- isset($testCase['patch']) ? $testCase['patch'] : null,
- isset($testCase['patch_minor']) ? $testCase['patch_minor'] : null,
- isset($testCase['brand']) ? $testCase['brand'] : null,
- isset($testCase['model']) ? $testCase['model'] : null,
- $resource->getFilename()
- );
- }
-
- protected function getParserClassName()
- {
- return 'UAParser\Parser';
- }
-}
diff --git a/vendor/ua-parser/uap-php/tests/Result/OperatingSystemTest.php b/vendor/ua-parser/uap-php/tests/Result/OperatingSystemTest.php
deleted file mode 100644
index fd92bc15b..000000000
--- a/vendor/ua-parser/uap-php/tests/Result/OperatingSystemTest.php
+++ /dev/null
@@ -1,33 +0,0 @@
-userAgent = new UserAgent();
- }
-
- public function testBugWith0InVersion()
- {
- $this->userAgent->major = 0;
- $this->userAgent->minor = 0;
- $this->userAgent->patch = 0;
-
- $this->assertSame('0.0.0', $this->userAgent->toVersion());
- $this->assertSame('Other 0.0.0', $this->userAgent->toString());
- }
-}
diff --git a/vendor/ua-parser/uap-php/tests/Result/UserAgentTest.php b/vendor/ua-parser/uap-php/tests/Result/UserAgentTest.php
deleted file mode 100644
index ceaa8b1ba..000000000
--- a/vendor/ua-parser/uap-php/tests/Result/UserAgentTest.php
+++ /dev/null
@@ -1,34 +0,0 @@
-operatingSystem = new OperatingSystem();
- }
-
- public function testBugWith0InVersion()
- {
- $this->operatingSystem->major = 0;
- $this->operatingSystem->minor = 0;
- $this->operatingSystem->patch = 0;
- $this->operatingSystem->patchMinor = 0;
-
- $this->assertSame('0.0.0.0', $this->operatingSystem->toVersion());
- $this->assertSame('Other 0.0.0.0', $this->operatingSystem->toString());
- }
-}
diff --git a/vendor/ua-parser/uap-php/tests/Util/ConverterTest.php b/vendor/ua-parser/uap-php/tests/Util/ConverterTest.php
deleted file mode 100644
index b17a6f459..000000000
--- a/vendor/ua-parser/uap-php/tests/Util/ConverterTest.php
+++ /dev/null
@@ -1,162 +0,0 @@
-fs = $this
- ->getMockBuilder('Symfony\Component\Filesystem\Filesystem')
- ->disableOriginalConstructor()
- ->disableOriginalClone()
- ->getMock();
- $this->converter = new Converter(sys_get_temp_dir(), $this->fs);
- $yaml = <<yamlFile = sys_get_temp_dir() . '/uaparser-' . time() . '.yaml';
- file_put_contents($this->yamlFile, $yaml);
-
- $this->php = <<
- array (
- 0 =>
- array (
- 'regex' => 'REGEX\\\\@',
- ),
- ),
-);
-EOS;
- $this->phpFile = sys_get_temp_dir() . '/regexes.php';
- touch($this->phpFile);
- }
-
- public function tearDown()
- {
- @unlink($this->yamlFile);
- @unlink($this->phpFile);
- }
-
- public function testExceptionIsThrownIfFileDoesNotExist()
- {
- $this->fs
- ->expects($this->once())
- ->method('exists')
- ->with('path/to/file')
- ->will($this->returnValue(false));
-
- $this->setExpectedException(
- 'UAParser\Exception\FileNotFoundException',
- 'File "path/to/file" does not exist'
- );
- $this->converter->convertFile('path/to/file');
- }
-
- public function testFileIsBackedUpIfExists()
- {
- $this->fs
- ->expects($this->at(0))
- ->method('exists')
- ->with($this->yamlFile)
- ->will($this->returnValue(true));
-
- $this->fs
- ->expects($this->at(1))
- ->method('exists')
- ->with($this->phpFile)
- ->will($this->returnValue(true));
-
- $this->fs
- ->expects($this->once())
- ->method('copy')
- ->with(
- $this->phpFile,
- $this->matchesRegularExpression('@/regexes-.{128}\.php@')
- )
- ->will($this->returnValue(true));
-
- $this->fs
- ->expects($this->once())
- ->method('dumpFile')
- ->with($this->phpFile, $this->php);
-
- $this->converter->convertFile($this->yamlFile);
- }
-
- public function testFileIsNotBackedUpIfHashesDoNotMatch()
- {
- file_put_contents($this->phpFile, $this->php);
-
- $this->fs
- ->expects($this->at(0))
- ->method('exists')
- ->with($this->yamlFile)
- ->will($this->returnValue(true));
-
- $this->fs
- ->expects($this->at(1))
- ->method('exists')
- ->with($this->phpFile)
- ->will($this->returnValue(true));
-
- $this->fs
- ->expects($this->never())
- ->method('copy');
-
- $this->fs
- ->expects($this->never())
- ->method('dumpFile');
-
- $this->converter->convertFile($this->yamlFile);
- }
-
- public function testFileIsNotBackedUp()
- {
- $this->fs
- ->expects($this->once())
- ->method('exists')
- ->with($this->yamlFile)
- ->will($this->returnValue(true));
-
- $this->fs
- ->expects($this->never())
- ->method('copy');
-
- $this->fs
- ->expects($this->once())
- ->method('dumpFile')
- ->with($this->phpFile, $this->php);
-
- $this->converter->convertFile($this->yamlFile, false);
- }
-}
diff --git a/vendor/ua-parser/uap-php/tests/Util/FetcherTest.php b/vendor/ua-parser/uap-php/tests/Util/FetcherTest.php
deleted file mode 100644
index 816a44bf8..000000000
--- a/vendor/ua-parser/uap-php/tests/Util/FetcherTest.php
+++ /dev/null
@@ -1,46 +0,0 @@
-assertInternalType('string', $fetcher->fetch());
- }
-
- public function testFetchError()
- {
- $url = "https://raw.githubusercontent.com/ua-parser/uap-core/master/regexes.yaml";
- $fetcher = new Fetcher(
- stream_context_create(
- array(
- 'ssl' => array(
- 'verify_peer' => true,
- Fetcher::getPeerNameKey() => 'invalid.com',
- )
- )
- )
- );
-
- $this->setExpectedException(
- 'UAParser\Exception\FetcherException',
- 'Could not fetch HTTP resource "'.$url.'": file_get_contents('.$url.'): failed to open stream: operation failed'
- );
-
- $fetcher->fetch();
- }
-}
diff --git a/vendor/ua-parser/uap-php/tests/Util/Logfile/AbstractReaderTest.php b/vendor/ua-parser/uap-php/tests/Util/Logfile/AbstractReaderTest.php
deleted file mode 100644
index da5da3e1f..000000000
--- a/vendor/ua-parser/uap-php/tests/Util/Logfile/AbstractReaderTest.php
+++ /dev/null
@@ -1,63 +0,0 @@
-assertFalse($this->reader->test(''));
- }
-
- public function testTestRealLine()
- {
- $this->assertTrue($this->reader->test($this->line));
- }
-
- public function testReadEmptyLine()
- {
- $this->setExpectedException(
- 'UAParser\Exception\ReaderException',
- 'Cannot extract user agent string from line "invalid"'
- );
- $this->reader->read('invalid');
- }
-
- public function testReadRealLine()
- {
- $this->assertSame($this->userAgentString, $this->reader->read($this->line));
- }
-
- public function testReadingFile()
- {
- if (!$this->exampleLogFile) {
- $this->markTestSkipped('Try with your own log file');
- }
-
- foreach (file($this->exampleLogFile) as $line) {
- $this->assertTrue($this->reader->test($line));
- $this->assertGreaterThanOrEqual(1, strlen($this->reader->read($line)));
- }
- }
-}
diff --git a/vendor/ua-parser/uap-php/tests/Util/Logfile/ApacheCommonLogFormatReaderTest.php b/vendor/ua-parser/uap-php/tests/Util/Logfile/ApacheCommonLogFormatReaderTest.php
deleted file mode 100644
index d2e7427c4..000000000
--- a/vendor/ua-parser/uap-php/tests/Util/Logfile/ApacheCommonLogFormatReaderTest.php
+++ /dev/null
@@ -1,27 +0,0 @@
-reader = new ApacheCommonLogFormatReader();
-
- $this->line = <<userAgentString = 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.19; aggregator:Spinn3r (Spinn3r 3.1); http://spinn3r.com/robot) Gecko/2010040121 Firefox/3.0.19';
-
- // Set your example log file
- //$this->exampleLogFile = '/var/log/access.log';
- }
-}
diff --git a/vendor/ua-parser/uap-php/update-resources.sh b/vendor/ua-parser/uap-php/update-resources.sh
deleted file mode 100755
index f80f5e7db..000000000
--- a/vendor/ua-parser/uap-php/update-resources.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#! /bin/bash
-
-function try_catch() {
- output=`"$@" &>/dev/stdout`
- if [ $? -gt 0 ]; then
- echo -e "Command $@ failed\n\n$output"
- exit 1
- fi
-}
-
-try_catch git pull
-try_catch git submodule foreach git pull
-try_catch bin/uaparser ua-parser:update
-try_catch vendor/bin/phpunit --stop-on-failure
-try_catch git commit -a -m "Scheduled resource update"
-try_catch git push origin master
-new_version=`git tag | sort --version-sort | tail -n 1 | awk -F. -v OFS=. 'NF==1{print ++$NF}; NF>1{if(length($NF+1)>length($NF))$(NF-1)++; $NF=sprintf("%0*d", length($NF), ($NF+1)%(10^length($NF))); print}'`
-try_catch git tag $new_version
-git push origin $new_version